我有一个简单的XML文件
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Document>
<DATEN>
<DTA_Coding_Line>0100011509856>249099000000000000004039555+ 010001456></DTA_Coding_Line>
</DATEN>
</Document>
我已经使用几种在线XML验证工具验证了该文件,并且不会产生错误。
但是,在XML文档中,我可以读到必须用>
转义“>”字符。
>
替换为>
?>
的问题,是否仍可以将其视为“符合” XML标准? 答案 0 :(得分:2)
“>”仅当在字符串“]]>”未标记CDATA节末尾的内容中用于字符串“]]>”时才需要转义。
另一方面,必须始终对“ <”和“&”进行转义。
链接到
2.4字符数据和标记
文本由混合的字符数据和标记组成。 [定义: 标记采用开始标签,结束标签,空元素标签, 实体引用,字符引用,注释,CDATA部分 分隔符,文档类型声明,处理指令,XML 声明,文本声明以及位于 文档实体的顶层(即文档外部) 元素,而不是其他任何标记)。]
[定义:所有非标记的文本均构成字符 文档的数据。]
&字符(&)和左尖括号(<)不得 以文字形式显示,除非用作标记定界符, 或在注释,处理指令或CDATA部分中。如果 它们在其他地方是必需的,必须使用任一数字进行转义 字符引用或字符串“&”和“ <” 分别。直角括号(>)可以使用 字符串“>”,并且为了兼容,必须使用以下任一命令进行转义 “>”或出现在字符串“]]>中的字符引用 在内容中,如果该字符串未标记CDATA的结尾 部分。
在元素的内容中,字符数据是任何字符串 它不包含任何标记的开始定界符,并且不包含 包括CDATA-section-close分隔符“]]>”。在CDATA中 部分中,字符数据是不包含 CDATA-section-close分隔符,“]]>”。
要允许属性值同时包含单引号和双引号, 撇号或单引号字符(')可以表示为“ ',双引号字符(“)为”“”。
字符数据
[14] CharData :: = [^ <&] *-([^ <&] *']]>'[^ <&] *)