在XML文件中用“>”替换“>”绝对是强制性的吗?

时间:2018-08-13 06:56:48

标签: xml xml-parsing

我有一个简单的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文档中,我可以读到必须用&gt;转义“>”字符。

  • 这是强制性的吗?
  • 我何时必须将>替换为&gt;
  • 如果上面读取此文件的软件存在无法逃脱>的问题,是否仍可以将其视为“符合” XML标准?
  • 有这样的“顺从”吗?

1 个答案:

答案 0 :(得分:2)

“>”仅当在字符串“]]>”未标记CDATA节末尾的内容中用于字符串“]]>”时才需要转义。

另一方面,必须始终对“ <”和“&”进行转义。

Character Data and Markup

链接到

  

2.4字符数据和标记

     

文本由混合的字符数据和标记组成。 [定义:   标记采用开始标签,结束标签,空元素标签,   实体引用,字符引用,注释,CDATA部分   分隔符,文档类型声明,处理指令,XML   声明,文本声明以及位于   文档实体的顶层(即文档外部)   元素,而不是其他任何标记)。]

     

[定义:所有非标记的文本均构成字符   文档的数据。]

     

&字符(&)和左尖括号(<)不得   以文字形式显示,除非用作标记定界符,   或在注释,处理指令或CDATA部分中。如果   它们在其他地方是必需的,必须使用任一数字进行转义   字符引用或字符串“&”和“ <”   分别。直角括号(>)可以使用   字符串“>”,并且为了兼容,必须使用以下任一命令进行转义   “>”或出现在字符串“]]>中的字符引用   在内容中,如果该字符串未标记CDATA的结尾   部分。

     

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

     

要允许属性值同时包含单引号和双引号,   撇号或单引号字符(')可以表示为“   ',双引号字符(“)为”“”。

     

字符数据

     

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