繁体   English   中英

!ELEMENT和!ATTLIST之间的DTD有什么区别

[英]What's the difference in DTD between !ELEMENT and !ATTLIST

XML文件有3种变体。 它们之间有什么区别,我应该使用哪个?

  1. <!ELEMENT Name (#PCDATA)>

  2. <!ELEMENT Name (First, Last)> <!ELEMENT First (#PCDATA)> <!ELEMENT Last (#PCDATA)>

  3. <!ELEMENT Name EMPTY> <!ATTLIST Name First CDATA #REQUIRED Last CDATA #REQUIRED >

第二第三种情况XML属性与XML元素之间的区别,在链接的问题中已经对此进行了广泛回答。

您的第一种情况引入了不将名称标记为单独的名字和姓氏的可能性。 您询问何时可能要执行此操作。 通常,名称数据以您已经分别确定名字和姓氏的形式产生。 保持这种区别是有道理的。 但是,出于某些原因,您可能想要使用单个名称字段,而不要使用单独的名字和姓氏:

  • 有些人没有单独的名字和姓氏。
  • 您的数据源可能不会提供单独的名字和姓氏,并且将单个名字解析为名字和姓氏可能非常困难。

这些原因普遍适用于非名称数据。 如果您的标记处于更精细的级别,则将有助于下游处理,但是要实现该粒度并不总是那么容易。 对于当前和将来使用的应用程序需要更大程度的标记的可能性,也要做出判断。 不需要的更多标记只会增加开销,没有任何目的。

  • #PCDATA表示节点或属性的简单字符串内容。
  • !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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM