没有空元素自我关闭的xml可以形成良好的格式吗?
像这样的任何东西:
<team>Chicago Bulls<playerA/>23<playerB/>43</team>
代替:
<team>Chicago Bulls<playerA>23</playerA><playerB>43</playerB></team>
它会形成良好的形式吗?我可以在哪里读到它?主要来自 w3c。
提前致谢
没有空元素自我关闭的xml可以形成良好的格式吗?
像这样的任何东西:
<team>Chicago Bulls<playerA/>23<playerB/>43</team>
代替:
<team>Chicago Bulls<playerA>23</playerA><playerB>43</playerB></team>
它会形成良好的形式吗?我可以在哪里读到它?主要来自 w3c。
提前致谢
是的,您的两个示例都是格式良好的,但是在球员编号之前加上一个player
元素而不是将其放在player
元素的内容中将是一个非常糟糕的设计决策,因为它无法利用 XML 工具和开发人员会期望。
你可以阅读更多关于良构的信息,
但不要期望看到您的观点得到明确解决,因为您的问题与其说是关于格式正确,不如说是关于设计。
XML 的前身 SGML 有一个省略结束标记的概念,这可能与您提出问题的动机有关。而不是在第一个示例中使用自闭合标签(要清楚,它会产生空元素),
<team>Chicago Bulls<playerA/>23<playerB/>43</team>
和元素可以定义为具有省略的结束标签,允许以下标记playerA
:playerB
<team>Chicago Bulls<playerA>23<playerB>43</team>
您的自闭合player
元素已被替换为带有省略结束标签的开放标签。这不是格式良好的 XML。
您显示的 XML 格式正确,但没有“非空自闭合元素”。如果我们添加一些空格,我们可以显示节点之间的关系:
<team>
Chicago Bulls
<playerA/>
23
<playerB/>
43
</team>
因此,该team
元素有 5 个子节点:
playerA
一个没有属性或内容的元素调用playerB
一个没有属性或内容的元素调用除了它们的顺序之外,没有表示这些节点之间的任何关系——特别是,文本“23”与任何一个自闭合元素都不相关。
另一种表明这一点的方法是记住这<foo/>
只是一种不同的写作方式 <foo></foo>
,所以我们也可以这样写:
<team>Chicago Bulls<playerA></playerA>23<playerB></playerB>43</team>
相反,在第二个示例中系统地添加空格将如下所示:
<team>
Chicago Bulls
<playerA>
23
</playerA>
<playerB>
43
</playerB>
</team>
在这种情况下,teams
元素只有三个直接子元素:
playerA
,其中包含一个包含“23”的文本节点playerB
,其中包含一个包含“43”的文本节点