W3C XML Schema 与文档类型定义 (DTD) 比较

http://tech.ddvip.com   2007年06月02日    社区交流

内容摘要:这一部分逐步尝试对模式和 DTD 进行比较,并阐明在 XML 模式世界中发生的事件。

  例如,使用 DTD时,将有类似于清单 1 中的声明:

  清单 1:DTD "item" 元素定义

<!ELEMENT item (prodName+,USPrice,shipDate?)
<!ATTLIST item partNum CDATA>
<!ELEMENT prodName (#PCDATA)>
<!ELEMENT USPrice (#PCDATA)>
<!ELEMENT shipDate (#PCDATA)>

  使用 W3C XML Schema时,声明可以更具体(对 W3C Schema 的最初规定稍有修改):

  清单 2:XML 模式 "item"元素定义

<xsd:element name="item">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="prodName" type="xsd:string" maxOccurs="5"/>
<xsd:element name="USPrice" type="xsd:decimal"/>
<xsd:element name="shipDate" type="xsd:date" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="partNum" type="SKU"/>
</xsd:complexType>
</xsd:element>
<!-- Stock Keeping Unit, a code for identifying products -->
<xsd:simpleType name="SKU">
<xsd:restriction base="xsd:string">
<xsd:pattern value="d{3}-[A-Z]{2}"/>
</xsd:restriction>
</xsd:simpleType>

  从表面上看,这些元素定义中有两个显著特性。首先是模式本身是格式完整的 XML 实例,其标记使用 xsd 名称空间(实际上,DTD也是这样,但它只有处理指令,而没有这样的内容);其次(根据第一点的结论)是模式远比DTD 繁琐。

来源:ibm.com    作者:David Mertz, Ph.D    责编:豆豆技术应用

正在加载评论...