具有不同范围的重复名称元素的DTD(或XSD)问题

时间:2010-04-01 15:44:00

标签: xml xsd dtd

我提取了一个我正在为DTD工作的xml片段,实际上我需要对标记资源中包含的资源进行特定声明,而对于标记输入中包含的资源则需要另一个声明。问题是第一个需要id属性,第二个不需要id属性,因为使用了替代属性。是否可以声明类似(伪编码)的内容:

xml片段:

<xml>

  <resources>
    <resource id="somedir">sometpath</resource>
  </resources>

...

  <input>
    <resource exists="false">
      <path>somepath</path>
    </resource>
  </input>

</xml>

是否可以使用DTD或XSD?

谢谢

1 个答案:

答案 0 :(得分:4)

使用DTD - 否,XSD - 是的。类似的东西:

<xs:element name="root" type="r:rootType"/>
<xs:complexType name="rootType">
    <xs:sequence>
        <xs:element name="resources" type="r:resourcesType"/>
        <xs:element name="input" type="r:inputType"/>
    </xs:sequence>
</xs:complexType>

<xs:complexType name="resourcesType">
    <xs:sequence>
        <xs:element name="resource" type="r:resourceType" minOccurs="0"/>
    </xs:sequence>
</xs:complexType>
<xs:complexType name="inputType">
    <xs:sequence>
        <xs:element name="resource" type="r:inputResourceType" minOccurs="0"/>
    </xs:sequence>
</xs:complexType>
...