2010-04-01 50 views
1

重名元素我提取上我工作的一个DTD一个XML片段,pratically我需要包含在标签资源资源的特定声明,并包含在另一个不同的一个是资源问题标签输入。问题是第一个需要id属性,第二个不需要id属性,因为使用了替代属性。是否有可能宣布类似(pseudocoded):DTD(或XSD)具有不同范围

的XML片段:

<xml> 

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

... 

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

</xml> 

是否有可能与DTD或XSD?

谢谢

回答

4

DTD - no,XSD - yes。喜欢的东西:

<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> 
...