2011-06-19 2 views

Répondre

5

W3C schéma 1.0 ne possède pas la capacité de contraindre les valeurs d'attribut basées sur l'instance document.

Schematron est un excellent outil pour valider que les documents adhèrent à de tels scénarios de validation personnalisés.

Par exemple:

<?xml version="1.0" encoding="UTF-8"?> 
<schema xmlns="http://purl.oclc.org/dsdl/schematron"> 
    <pattern> 
     <rule context="root[@children]"> 
      <assert 
       id="children-value" 
       test="@children=count(child)" 
       flag="error"> 
       The root/@children value must be equal to the number of child elements. 
       </assert> 
      </rule> 
    </pattern> 
</schema> 
+0

C'est ce que j'ai pensé, merci. – sebastien

6

XSD 1.1 vous permet d'exprimer ce genre de contrainte:

<xs:element name="root"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element name="child" maxOccurs="unbounded"/> 
    </xs:sequence> 
    <xs:attribute name="children" type="xs:integer"/> 
    </xs:complexType> 
    <xs:assert test="@children = count(child)"/> 
</xs:element> 

XSD 1.1 est actuellement mis en œuvre à Saxon et Xerces.

Questions connexes