xml中“#”合法吗?

时间:2013-12-17 00:38:08

标签: xml

如果我问一个菜鸟问题,请道歉:

  

xml中“#”合法吗?

<?xml version="1.0" encoding="UTF-8"?>
<mmi_legend>
    <element value="1">
    <sky_blue>#00CCFF</sky_blue> //Is the "#" valid in xml?
    </element>
</mmi_legend>

我检查了reference list,它没有提到“#”的任何字符引用,所以这是否意味着“#”在xml中是合法的?

3 个答案:

答案 0 :(得分:5)

是的,#是在XML元素中使用的合法字符,不需要转义。

答案 1 :(得分:5)

如果您阅读官方XML spec,则第2.2节将角色定义为:

  

字符是ISO / IEC 10646:2000 [ISO / IEC 10646]规定的文本原子单位。合法字符包括制表符,回车符,换行符以及Unicode和ISO / IEC 10646的合法字符.A.1规范性引用文件中引用的这些标准的版本在本文档编写时是最新的。可以通过修订或新版本将新字符添加到这些标准中。因此,XML处理器必须接受为Char指定的范围内的任何字符。 ]

     

角色范围

Char    ::=    #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] /* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */ 

第2.4节进一步说:

  

在元素的内容中,字符数据是任何字符串,不包含任何标记的起始分隔符,并且不包括CDATA-section-close分隔符,“]]&gt;”。在CDATA部分,字符数据是任何字符串,不包括CDATA-section-close分隔符,“]]&gt;”。

CharData    ::=    [^<&]* - ([^<&]* ']]>' [^<&]*) 

因此,要回答您的问题 - ##x23,因此根据CharCharData的定义,允许在元素数据中显示未编码。< / p>

答案 2 :(得分:3)

根据{{​​3}},#完全合法,但您的//评论肯定不是。{{1}}。