2010-04-01 7 views
1

J'ai extrait un fragment xml sur lequel je travaille pour une DTD, j'ai besoin d'une déclaration spécifique pour la ressource contenue dans les ressources de balises et une autre pour la ressource contenue dans entrée d'étiquette. Le problème est que le premier requiert l'attribut id, le second n'a pas besoin de l'attribut id car il utilise des attributs alternatifs. Est-il possible de déclarer quelque chose comme (pseudocoded):Problème DTD (ou XSD) avec un élément de nom dupliqué ayant des portées différentes

Le fragment xml:

<xml> 

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

... 

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

</xml> 

Est-il possible avec DTD ou XSD?

Merci

Répondre

4

Avec DTD - non, XSD - oui. Quelque chose comme:

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