XML标记是否常见缺少开始标记?

时间:2016-02-14 09:09:55

标签: xml python-3.x elementtree

我使用python模块XMl ElementTree来解析一堆XML文件。通常,包含文本的标签将被写为

<Tag>some text is here</Tag>

如果没有与我们将拥有的标签相关联的文字,

<Tag></Tag>

但我的部分文件只有,

<Tag/>

这在XML中是常见的还是我在查看构造不良的文件?

3 个答案:

答案 0 :(得分:4)

curl -vs 'https://some-site.com' 1> /dev/null这样的标签是空元素标签(也称为自动关闭标签),它是<tag/>的简写:两者都代表一个空元素。

引自W3C Recommendation on XML

  

[定义:没有内容的元素被称为。]   空元素的表示形式可以是紧跟在结束标记之后的开始标记,也可以是空元素标记   [定义:空元素标记采用特殊形式:]

     

空元素的标记

     

[44] EmptyElemTag :: = <tag></tag>名称(S属性)* S? <

     

空元素标签可用于任何没有内容的元素,无论是否使用关键字/>声明。对于互操作性,对于声明为EMPTY的元素,应使用空元素标记1,并且只应使用它。

     

空元素的例子:

EMPTY

关于非XML(HTML) void 元素

的说法

上述内容不应与HTML中 void elements 非XML 概念混淆,后者也可以像<IMG align="left" src="http://www.w3.org/Icons/WWW/w3c_home" /> <br></br> <br/> 一样编写。

引自W3C HTML Language Reference(我强调第5点):

  

void元素是一个元素,其内容模型在任何情况下都不允许它拥有内容。

     

开始标记由以下部分组成,完全按以下顺序排列:

     
      
  1. 一个<tag/>字符。
  2.   
  3. 元素的标记名称。
  4.   
  5. (可选)一个或多个属性,每个属性必须以一个或多个空格字符开头。
  6.   
  7. (可选)一个或多个空格字符。
  8.   
  9. (可选)<字符,仅当元素为void元素时才会出现。
  10.   
  11. 一个/字符。
  12.         

    Void元素只有一个开始标记;不得为void元素指定结束标记。

因此,尽管在非XML HTML文档中可以有>,但它并不完全代表与XML相同的概念。它不是自动关闭标记,而是<br/>的语法替代, void 元素,它是XML的外来概念。

答案 1 :(得分:3)

如果结束标记没有开始标记,则该文档不是有效的Xml。没有值<Tag />的标记也可以 - 这相当于<Tag></Tag>但是没有相应的开始标记的结束标记是无效的。元素也必须正确嵌套。

答案 2 :(得分:3)

常见的是

<tag/>
,相当于
<tag></tag>
,在没有内容时很有用。 例如,您可以在html中看到:

<img src="foo.png"/>

</tag>
单独在标准上下文中无效。