【问题标题】:Check if XML Schema is correctly converted from a DTD检查 XML Schema 是否从 DTD 正确转换
【发布时间】:2014-02-08 01:48:23
【问题描述】:

我有一个练习,要求我将 DTD 转换为 XML Schema。我知道可以根据 DTD 验证 XML 文档(我正在使用 xml 开发人员)。是否可以根据 DTD 验证 XML 模式?我问这个是因为我想检查我的翻译是否正确。

这是我的 DTD:

<!DOCTYPE x [
<!ELEMENT x (y1,y2)+>
<!ELEMENT y1 ((z1|z2)*,(z3,z4)+)>
<!ELEMENT y2 (z1?,z2*,z3?)>
<!ELEMENT z1 (#PCDATA)>
<!ELEMENT z2 (#PCDATA)>
<!ELEMENT z3 (#PCDATA)>
<!ELEMENT z4 EMPTY>
<!ATTLIST x attrx CDATA #REQUIRED>
<!ATTLIST y1 attry CDATA #IMPLIED>
]>

这是我的 XML 模式尝试:

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="x" type="xsd:string"></xsd:element>
    <xsd:complexType name="tipox">
        <xsd:sequence minOccurs="1" maxOccurs="unbounded">
            <xsd:element name="y1" type="tipoy1"/>
            <xsd:element name="y2" type="tipoy2"/>
        </xsd:sequence>
        <xsd:attribute name="attrx" type="xsd:string" use="required"/>
    </xsd:complexType>
    <xsd:complexType name="tipoy1">
        <xsd:sequence>
            <xsd:choice minOccurs="0" maxOccurs="unbounded">
                <xsd:element name="z1" type="xsd:string"></xsd:element>
                <xsd:element name="z2" type="xsd:string"></xsd:element>
            </xsd:choice>
            <xsd:sequence minOccurs="1" maxOccurs="unbounded">
                <xsd:element name="z3" type="xsd:string"></xsd:element>
                <xsd:element name="z4"><xsd:complexType/></xsd:element>
            </xsd:sequence>
        </xsd:sequence>
        <xsd:attribute name="attry" type="xsd:string" use="optional"/>
    </xsd:complexType>
    <xsd:complexType name="tipoy2">
        <xsd:sequence>
            <xsd:element name="z1" type="xsd:string" minOccurs="0" maxOccurs="1"></xsd:element>
            <xsd:element name="z2" type="xsd:string" minOccurs="0" maxOccurs="unbounded"></xsd:element>
            <xsd:element name="z3" type="xsd:string" minOccurs="0" maxOccurs="1"></xsd:element>
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>

【问题讨论】:

    标签: xml xsd dtd xsd-validation


    【解决方案1】:

    手动或使用工具进行的翻译之间可能存在一些差异,例如 可以解释为

    <xsd:element name="z1">
        <xsd:complexType mixed="true"/>
    </xsd:element>
    

    或者干脆

    <xsd:element name="z1" type="xsd:string" minOccurs="0" maxOccurs="1"></xsd:element>
    

    与其手动翻译,不如依靠翻译人员,例如 XML Spy,然后通过缩小范围、出现次数和您的元素/复杂类型使用偏好来自定义您的需求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-07
      • 2016-07-02
      • 1970-01-01
      • 1970-01-01
      • 2013-11-01
      • 1970-01-01
      • 2010-12-04
      相关资源
      最近更新 更多