从 DTD 到 XSD(文档类型定义到 XML 架构)
From DTD to XSD (Document Type Definition to XML Schema)
我有这个 DTD:
<!DOCTYPE a [
<!ELEMENT a (b?, c*, (d|e)+)>
<!ELEMENT b (#PCDATA)>
<!ELEMENT c (#PCDATA)>
<!ELEMENT d (#PCDATA)>
<!ELEMENT e EMPTY>
<!ATTLIST c attr CDATA #IMPLIED>
]>
我想将它转换(手动而不是通过程序)到 XML 架构,但我不明白如何为 c
元素创建属性。
下面是如何在 XSD 中声明 c
具有字符串内容和名为 attr
的属性:
<xs:element name="c" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="attr" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
XSD
这是写成 XSD 的整个 DTD:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="a">
<xs:complexType>
<xs:sequence>
<xs:element name="b" minOccurs="0" type="xs:string"/>
<xs:element name="c" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="attr" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:choice maxOccurs="unbounded">
<xs:element name="d" type="xs:string"/>
<xs:element name="e">
<xs:complexType/>
</xs:element>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我有这个 DTD:
<!DOCTYPE a [
<!ELEMENT a (b?, c*, (d|e)+)>
<!ELEMENT b (#PCDATA)>
<!ELEMENT c (#PCDATA)>
<!ELEMENT d (#PCDATA)>
<!ELEMENT e EMPTY>
<!ATTLIST c attr CDATA #IMPLIED>
]>
我想将它转换(手动而不是通过程序)到 XML 架构,但我不明白如何为 c
元素创建属性。
下面是如何在 XSD 中声明 c
具有字符串内容和名为 attr
的属性:
<xs:element name="c" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="attr" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
XSD
这是写成 XSD 的整个 DTD:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="a">
<xs:complexType>
<xs:sequence>
<xs:element name="b" minOccurs="0" type="xs:string"/>
<xs:element name="c" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="attr" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:choice maxOccurs="unbounded">
<xs:element name="d" type="xs:string"/>
<xs:element name="e">
<xs:complexType/>
</xs:element>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>