我和我的同事陷入了关于xml有效性的争论.我非常有信心xml节点可以有文本节点或其他xml节点,但不能同时具有:
换句话说 - 这是一个有效的xml吗?(我说这不是)
<dt>
blah blah text
<test0>
some node content
</test0>
<test1>
blah blah some text <some_node>A</some_node>
</test1>
<test2>
noncount
</test2>
<test3>
blah blah some text <some_node>B</some_node>
</test3>
</dt>
Run Code Online (Sandbox Code Playgroud)
编辑:我的同事辩称,因为.dtd文件中有#PCDATA,所以:
<!ELEMENT dt (#PCDATA | test0 | test1 | test2 | test3)* >
Run Code Online (Sandbox Code Playgroud)
这意味着它内部可能还有其他xml标签以及文本.
XML在有条理的东西和有效的东西之间存在区别.有时人们说他们的意思是良好的形式是有效的,这是令人困惑的.XML是一组用于构造词汇表的语法规则.就其自身而言,XML没有说明允许哪些元素和属性,或者您可以放置它们的位置.如果文档遵循XML语法,那么它就是格式良好的.您的示例是格式良好的XML.
有效性意味着所使用的特定元素和属性都是根据某些DTD或模式使用的.您举了这个示例DTD片段:
<!ELEMENT dt (#PCDATA | test0 | test1 | test2 | test3)* >
Run Code Online (Sandbox Code Playgroud)
您的同事是正确的,根据该DTD您给出的XML是有效的(当然,假设所有测试元素的内容都是有效的).如果你的DTD看起来像这样:
<!ELEMENT dt (test0 | test1 | test2 | test3)* >
Run Code Online (Sandbox Code Playgroud)
那么你的例子将无效,但它仍然是格式良好的.
在实际操作中,混合文本和子元素是非常常见的.
| 归档时间: |
|
| 查看次数: |
52 次 |
| 最近记录: |