gpt4 book ai didi

xml - XML 属性中允许使用哪些字符?

转载 作者:行者123 更新时间:2023-12-05 08:28:10 25 4
gpt4 key购买 nike

specification by W3c我似乎无法找到允许出现在 XML 文档属性值中的字符集的定义。

  1. 是否与元素的文本内容相同?
  2. 还是它只是一个子集(不包括例如\n)?

请引用规范中回答我问题的部分。

最佳答案

XML 属性允许 character data (又名 CDATA)。查看formal definition of attribute types ,在“字符串类型”下。

从根本上说,必须区分 XML 源(即它会出现在文本编辑器中)和 DOM(即它会在解析 XML 源后存在于内存中)。

属性可以在 XML 源中包含文字换行符 ( \n ),如下所示:

<elem attr="a
linebreak">

但这样的换行符会在 XML 解析过程中被转换成一个空格。这叫做 attribute-value normalization .

为了在 解析后得到一个换行符,它必须在 XML 源代码中编码,或者是 &#xA;或等价物,&#10; .

通常,当您操作文档并保存它时,DOM API 会为您完成这些操作。遗憾there are non-compliant APIs没有正确编码属性值中的换行符。这些 API 使得无法保留换行符。

制表符 (\t) 也会发生同样的事情。它可能存在于 XML 源代码中,但在解析时会规范化为单个空格。为了防止它必须被编码,或者是 &#x9;&#9; .

底线:如果您通过 API 与 XML 文档交互(您应该这样做!),所有这些细节都会为您处理,除非 API 损坏。


为了完整起见:由于相当短视(恕我直言)的决定,字面意思 >在 XML 源代码的属性中允许使用字符。只有文字 <被禁止:

<elem attr="this > that" />  <!-- legal syntax -->
<elem attr="this < that" /> <!-- syntax error -->

我建议不要使用这个怪癖。大多数 API 将插入转义形式 &gt;无论如何:

<elem attr="this &gt; that" />
<elem attr="this &lt; that" />

关于xml - XML 属性中允许使用哪些字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19766669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com