2017-06-07 9 views
2

Dans ma XSD, j'ai une restriction que j'utilise fréquemment. La même restriction est utilisée à plusieurs endroits et pourrait être manquée lors de la mise à jour. Je comprends qu'il existe des outils (trouver/remplacer) mais je pense qu'il est plus agréable d'avoir ces restrictions définies globalement. De cette façon, nous avons seulement à le changer dans un endroit au lieu de x-times.Définition et réutilisation d'une restriction dans XSD

Un problème supplémentaire que j'ai, est que le nom de l'élément est toujours différent et il n'y a pas moyen de le changer (par exemple long_summary, short_summary, ...)

Configuration du XSD

<xs:schema> 
    <xs:complexType name="eventType"> 
     <xs:sequence> 
      <xs:element name="short_summary"> 
       <xs:simpleType> 
        <xs:restriction base="xs:string"> 
         <xs:pattern value="([\p{L}\p{M}\p{N}\p{P}\p{Z}\p{S}\p{C}]+)?"/> 
        </xs:restriction> 
       </xs:simpleType> 
      </xs:element> 
      <xs:element name="long_summary"> 
       <xs:simpleType> 
        <xs:restriction base="xs:string"> 
         <xs:pattern value="([\p{L}\p{M}\p{N}\p{P}\p{Z}\p{S}\p{C}]+)?"/> 
        </xs:restriction> 
       </xs:simpleType> 
      </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
</xs:schema> 

Fondamentalement, je veux définir la restriction ([\p{L}\p{M}\p{N}\p{P}\p{Z}\p{S}\p{C}]+)? qu'une seule fois et de le réutiliser pour short_summary et long_summary.

Des conseils ou des instructions sont appréciés. En attendant, je vais regarder plus loin et si je trouve la réponse, je la mettrai ici.

Répondre

3

La réponse à ma question:

restriction globale

<xs:simpleType name="Text"> 
     <xs:restriction base="xs:string"> 
      <xs:pattern value="([\p{L}\p{M}\p{N}\p{P}\p{Z}\p{S}\p{C}]+)?"/> 
     </xs:restriction> 
</xs:simpleType> 

Utilisé dans XSD

.... 
<xs:element name="short_summary" type="Text"/> 
<xs:element name="long_summary" type="Text"/> 
....