SQL SERVER Sélectionnez datatables XML de la table où datatables qualifient la collecte de schéma

Je veux sélectionner la date d'une table contenant une colonne xml (non typée), je veux vérifier si datatables qualifient une collection de schémas créée dans la database et récupérer seulement les lignes qui qualifient la collection de schémas. La colonne de la table ne contient pas et schéma. Quelqu'un peut il m'aider avec ça !!!

Je suppose que vous avez votre XML dans une colonne XML qui n'est pas associée à une collection de schémas et que vous voulez récupérer les lignes qui correspondent à la collection.

Vous pouvez le faire dans une boucle en déplaçant une ligne à la fois, en détectant les erreurs de l'insertion lorsque le XML n'est pas qualifié.

XMLSchema:

create xml schema collection ItemList as ' <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="root"> <xs:complexType> <xs:sequence> <xs:element name="item" type="xs:ssortingng" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>' 

Exemple de code permettant de déplacer XML de @XMLSource vers @XMLTarget:

 -- Setup the source table declare @XMLSource table (ID int identity, XMLCol xml) insert into @XMLSource values ('<root><item>X</item></root>') insert into @XMLSource values ('<root>Invalid row</root>') insert into @XMLSource values ('<root><item>Y</item></root>') -- Target table with XMLCol using schema ItemList declare @XMLTarget table(XMLCol xml(ItemList)) declare @ID int select @ID = min(ID) from @XMLSource -- Move one row at a time while @ID is not null begin begin try insert into @XMLTarget (XMLCol) select XMLCol from @XMLSource where ID = @ID end try begin catch end catch select @ID = min(ID) from @XMLSource where ID > @ID end select * from @XMLTarget