Utilisation du mot-clé de contenu lors de la création d'une table avec une colonne XML de la collection de schéma XML

StackOverflow https://stackoverflow.com/questions/5416382

Question

Lors de la création d'une table qui a une colonne de type XML, je fais référence à un complexe Collection de schéma XML. Quand je spécifie le Schéma XML, J'ai la possibilité de mentionner soit CONTENU ou DOCUMENT mot-clé. Ce dernier garantira que les données XML sont stockées sous forme de document dans une seule colonne.

Selon un tutoriel vidéo le CONTENU stockera les données XML dans fragments.

Outre la déclaration ci-dessus, je ne trouve pas de référence nulle part ailleurs concernant l'utilisation du CONTENU Mot-clé et c'est implication sur le schéma et les données.

Je voudrais savoir comment les fragments sont créés et gérés et si et comment ils peuvent être interrogés individuellement. De plus, comment les fragments sont corrélés. Ensuite, lorsque je modifie la collection de schéma XML, quel est l'impact.

Pas de solution correcte

Autres conseils

En fait je pense SQLSERVER 2005 XML est assez bon documenté.
Le contenu est la valeur par défaut et permet tout XML valide. Le document est plus spécifique et signifie que les données XML que vous pouvez stocker ne peuvent avoir qu'un seul nœud de niveau supérieur.

Créer:

CREATE TABLE XmlCatalog ( 
   ID INT PRIMARY KEY, 
   Document XML(CONTENT myCollection))

Insérer:

INSERT INTO XmlCatalog VALUES (2, 
'<doc id="123">
    <sections>
   <section num="1"><title>XML Schema</title></section>
   <section num="3"><title>Benefits</title></section>
   <section num="4"><title>Features</title></section>
    </sections>
</doc>')

Sélectionner:

SELECT xCol.query('/doc[@id = 123]//section')   
FROM XmlCatalog   
WHERE  xCol.exist ('/doc[@id = 123]') = 1

...etc. La langue de requête dépasse plus ou moins dans un sous-ensemble de XPATH 1.0.

Si vous modifiez un XSD, il est vérifié sur les inserts et les mises à jour et stocké dans le XML de chaque élément. Pour autant que je comprends le DOC, il est également autorisé à ajouter plusieurs schémas pour une colonne afin que les entrées puissent se référer à différents schémas.

ÉDITER:
OK, après avoir lu les parties spécifiques de la documentation, je pense que je comprends votre problème. La référence n'est pas très claire sur ce point, mais pour autant que je comprenne, les entrées uniquement avec un nœud de niveau supérieur peuvent être liées aux schémas XSD.
En raison du fait que XSD-Schemas nécessite un nœud de niveau supérieur définissant le fichier XSD utilisé, il ne sera pas possible de valider des fragments contenant plus d'un élément de niveau supérieur. Je n'ai pas essayé mais je pense que ça ne peut pas être fait.
Cependant, il semble valable de définir une colonne de contenu, de modifier un XSD et de stocker les deux, XML avec un nœud de niveau supérieur faisant référence au XSD ainsi que des fragments XML qui ne vérifieront que la bienvenue. Les fragments sont accessibles à l'aide du langage de requête XPath Show dans l'instruction SELECT ci-dessus.
Je ne peux pas vous en dire beaucoup sur les implications des performances. La référence mentionne que les XSD sont stockés en ligne, donc cela aura besoin d'un espace supplémentaire dans la base de données. Les requêtes XPath doivent également être exécutées. Malgré le fait que XPath est généralement assez rapide, je suppose que cela pourrait diminuer la performance car il doit être effectué sur chaque ligne pour obtenir le résultat. Pour être sûr, je pense que vous devez vérifier le plan d'exécution de votre requête spécifique en fonction de la taille et de la complexité du XML stocké ainsi que de l'expression XPATH.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top