xml中"#"合法吗?

jhy*_*yap 1 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>
Run Code Online (Sandbox Code Playgroud)

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

Joh*_* Wu 5

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


Rem*_*eau 5

如果您阅读官方XML规范,则第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. */ 
Run Code Online (Sandbox Code Playgroud)

第2.4节进一步说:

在元素的内容中,字符数据是任何字符串,不包含任何标记的起始分隔符,并且不包括CDATA-section-close分隔符,"]]>".在CDATA部分中,字符数据是任何字符串,不包括CDATA-section-close分隔符,"]]>".

CharData    ::=    [^<&]* - ([^<&]* ']]>' [^<&]*) 
Run Code Online (Sandbox Code Playgroud)

因此,要回答你的问题- ##x23,所以它被允许以单元数据出现未编码的,每个的定义CharCharData.