我提取了一个我正在为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?
谢谢
答案 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>
...