Supposons que nous ayons une feuille de style qui extrait des métadonnées à l'aide de la fonction key(). En d'autres termes, nous avons exemple des documents comme celui-ci:Pouvez-vous utiliser key/keyref au lieu de restriction/énumération dans le schéma XML?
<items>
<item type="some_type"/>
<item type="another_type"/>
</items>
et une table de données supplémentaires nous aimerions associer aux éléments pendant le traitement:
<item-meta>
<item type="some_type" meta="foo"/>
<item type="another_type" meta="bar"/>
<item type="yet_another_type" meta="baz"/>
</item-meta>
Enfin, supposons que nous voulons faire la validation de schéma le document d'instance, en restreignant les attributs de type à l'ensemble des types qui se produisent dans item-meta. Donc, dans le schéma, nous voulons utiliser key/keyref au lieu de restriction/énumération. En effet, l'utilisation de restriction/énumération nécessite de créer une liste séparée d'attributs de type valides. Cependant, il ne semble pas que key/keyref fonctionne réellement. Après l'avoir essayé (avec MSXML 6.0), il semble que le sélecteur d'une clé de schéma n'accepte pas la fonction document() dans son argument xpath, donc nous ne pouvons pas examiner les méta-données, qu'elles apparaissent dans un fichier externe ou dans le fichier de schéma lui-même. Il semble que le seul endroit où nous pouvons chercher des clés est le document d'instance. Donc, si nous ne voulons vraiment pas avoir une liste séparée de types valides, nous devons faire une transformation de pré-validation, en tirant le méta item-meta, puis faire la validation, puis faire notre transformation originale. Cela semble trop compliqué pour ce qui devrait être une utilisation relativement simple du schéma XML et des feuilles de style.
Y a-t-il un meilleur moyen?