2013-03-17 1 views
0

je dois spécifier une règle dans Schematron où je dis que chaque élément <xpto> doit avoir des attributs x et y et tous les autres attributs, il a finalement doit être z ou w.Attributs obligatoires et facultatifs dans Schematron

disons donc je l'élément suivant:

<xpto a="abc"> 

Ceci est un mauvais élément, car, non seulement elle le fait pas les attributs x et y, il a aussi attribuer a qui n'est pas un des valides (x,y,z,w).

Un élément valide serait:

<xpto x="abc" y="cba"> 

ou

<xpto x="abc" y="cba" w="dsa"> 

Je sais comment spécifier les attributs obligatoires avec la commande @attribute, je ne sais pas comment spécifier que tous les attributs 'nom doit être dans un ensemble, comme ('x','y','z','w') dans l'exemple donné ...

Répondre

0
<sch:pattern> 
    <sch:rule context="xpto"> 
     <sch:assert test="every $attr in @* satisfies $attr/name()=('x','y','z','w')">Error message</sch:assert> 
    </sch:rule> 
</sch:pattern> 
+0

chaque $ x in ./at hommage :: */nom() satisfait $ x = ('x', 'y', 'z', 'w') Cela a fonctionné pour moi. Mais merci beaucoup :) – Daniel

+0

@Daniel L'opérateur 'every' est ce que je ne pouvais pas me souvenir, voir ma réponse mise à jour. –

Questions connexes