![](/img/trans.png)
[英]In DTD, what's the difference between <!ELEMENT channel (rating?)*> and <!ELEMENT channel (rating)*>
[英]What's the difference in DTD between !ELEMENT and !ATTLIST
XML文件有3种变体。 它们之间有什么区别,我应该使用哪个?
<!ELEMENT Name (#PCDATA)>
<!ELEMENT Name (First, Last)> <!ELEMENT First (#PCDATA)> <!ELEMENT Last (#PCDATA)>
<!ELEMENT Name EMPTY> <!ATTLIST Name First CDATA #REQUIRED Last CDATA #REQUIRED >
第二和第三种情况是XML属性与XML元素之间的区别,在链接的问题中已经对此进行了广泛回答。
您的第一种情况引入了不将名称标记为单独的名字和姓氏的可能性。 您询问何时可能要执行此操作。 通常,名称数据以您已经分别确定名字和姓氏的形式产生。 保持这种区别是有道理的。 但是,出于某些原因,您可能想要使用单个名称字段,而不要使用单独的名字和姓氏:
这些原因普遍适用于非名称数据。 如果您的标记处于更精细的级别,则将有助于下游处理,但是要实现该粒度并不总是那么容易。 对于当前和将来使用的应用程序需要更大程度的标记的可能性,也要做出判断。 不需要的更多标记只会增加开销,没有任何目的。
!ELEMENT映射到XML节点:
<!ELEMENT Name (#PCDATA)>
:
<Name>Tony Stark</Name>
!ATTLIST映射到XML节点的属性:
<!ELEMENT Name EMPTY> <!ATTLIST Name First CDATA #REQUIRED Last CDATA #REQUIRED >
:
<Name First="Tony" Last="Stark"/>
这些的用法完全取决于您和您的用例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.