Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

sql2005 xml & schema

5 réponses
Avatar
JohnPaulGeorgeRingo
Hello :)

je decouvre la fonction xml de sql et la notion de schema dans une=20
colonne XML typ=E9e.

mon probleme est que ce champs peut contenir des donn=E9es totalement=20
differentes selon que mon enregistrement parle de cochon ou de gnou (les=20
caracteristiques des animaux d'un zoo sont differentes -mdr ).
qu'elles sont les solutions (et l'xml typ=E9 est-il la solution).

Je dois pouvoir comparer des especes d'une meme famille (difference=20
entre un bobtail et un briard)

merci pour vos lumi=E8res
--=20
---------------------------------------------------------------------
Cordialement
JPGR
"A splendid time is guaranteed for all"

5 réponses

Avatar
Med Bouchenafa
On n'est pas obligé d'associer un schéma à une colonne de type XML tout
comme on n'est pas obligé de rattacher une contrainte quelconque à une
colonne d'un autre type
Rajouter un schéma va permettre à SQL Server de vérifier que les données
sont conformes au schema.
En l'absence de schema, il ne fera pas cette verification

--
Bien cordialement
Med Bouchenafa


"JohnPaulGeorgeRingo" a
écrit dans le message de news:
Hello :)

je decouvre la fonction xml de sql et la notion de schema dans une
colonne XML typée.

mon probleme est que ce champs peut contenir des données totalement
differentes selon que mon enregistrement parle de cochon ou de gnou (les
caracteristiques des animaux d'un zoo sont differentes -mdr ).
qu'elles sont les solutions (et l'xml typé est-il la solution).

Je dois pouvoir comparer des especes d'une meme famille (difference
entre un bobtail et un briard)

merci pour vos lumières
--
---------------------------------------------------------------------
Cordialement
JPGR
"A splendid time is guaranteed for all"
Avatar
Denis Ruckebusch [MSFT]
"JohnPaulGeorgeRingo"
wrote in message
news:

mon probleme est que ce champs peut contenir des données totalement
differentes selon que mon enregistrement parle de cochon ou de gnou
(les
caracteristiques des animaux d'un zoo sont differentes -mdr ).
qu'elles sont les solutions (et l'xml typé est-il la solution).



Je ne suis pas certain de bien comprendre ton probleme.

Comme l'a dit Med, tu peux utiliser une column XML non typee et dans ce
cas tu peux y stocker n'importe quel fragment XML bien formé.

En ce qui concerne les colomnes XML typees, elles sont constraintes par
une XML SCHEMA COLLECTION. La collection peut contenir plusieurs schemas
(avec differents namespaces). Chaque schema peut contenir les
definitions de plusieurs types et plusieurs elements.Un fragment est
considere valide s'il peut etre validé avec la definition d'un element
global present dans la collection

Tu peux utiliser les possibilites du standard XML Schema pour definir
quelque chose qui s'accomode des differents types de donnees. Par
exemple pour les animaux, j'utiliserais la notion d'heritage pour
definir quelque chose dans ce genre.

CREATE XML SCHEMA COLLECTION Animaux AS '
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema&quot;
targetNamespace="http://animaux&quot;
xmlns="http://animaux&quot;>

<xsd:complexType name="animalType" abstract="true">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="poids" type="xsd:float"/>
</xsd:complexType>


<xsd:complexType name="serpentType">
<xsd:complexContent>
<xsd:extension base="animalType">
<xsd:attribute name="venimeux" type="xsd:boolean"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="poissonType">
<xsd:complexContent>
<xsd:extension base="animalType">
<xsd:attribute name="eau">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="douce"/>
<xsd:enumeration value="salee"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

<xsd:element name="animal" type="animalType"/>

</xsd:schema>
'
go

J'espere que cet exemple pourra servir de piste de reflexion. Et si la
nature des donnees venait a se diversifier il ne faut pas oublier que
l'on peut etendre le schema (ajouter des elements, types, attributes,
etc...) avec ALTER XML SCHEMA COLLECTION ... ADD ...

Denis Ruckebusch
SQL Server XML datatype Test Team
http://blogs.msdn.com/denisruc
--
This posting is provided "AS IS" with no warranties, and confers no
rights.
Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm
Avatar
JohnPaulGeorgeRingo
Hello !
Merci messieurs pour vos réponses.
Vous avez certainement résolu mon probleme.

je re-precise mon probleme :
j'ai une table unique ayant un champ xml devant contenir les
caracteristiques d'éléments fort différents.
Ma table (Noé) stocke toutes les especes d'animaux dans sa
classification officielle. J'utilise le recursif.
je dois pouvoir comparer des serpents entre eux (et n'afficher donc que
les bonnes caracteristiques), remplir la fiche d'un serpent en
n'affichant l'écran que les champs "valides" pour les serpents.


Je pensais creer plusieurs schemas (un par famille d'animaux) et me
trouvais bloqué pour utiliser un seul champs xml utilisant un schema.
Si j'ai bien compris votre explication mon cher Denis, je peux creer
autant de fichiers XSD (ayant chacun un "namespace" different) dans la
zone "types/XML Schema Collections" de ma base de donnée.
Parfait !

Ceci ennoncé : comment dans ma table ayant un champs de type XML nomm é
"caracteristique" imposer mes contraintes tenant compte de tous les
schema que j'ai créé dbo.SchemaXMLMamifereMarin,
dbo.SchemaXMLMamifereTerrestre, dbo.SchemaXMLFelin,
dbo.SchemaXMLOvipare...

exemple
[id] [int] NOT NULL,
[identification] [uniqueidentifier] NOT NULL,
[date entrée] [datetime] NOT NULL,


/******cette ligne ne marche forcement pas *****/
[caracteristique] [xml](CONTENT [dbo].[SchemaXMLMamifere],[dbo].


[SchemaXMLOvipare]) NULL,
/******cette ligne ne marche pas *****/
[pathos] [ntext] COLLATE French_CI_AS NULL,
[date sortie] [datetime] NULL



Ou dois-je faire un seul (et ennnnnorme !) fichier XSD (contenant le
copier collé des tous ceux créés séparément...)

mes fichiers schema actuel font 200 lignes minimum et j'en possede (heu)
beaucoup.

merci pour vos lumires

Goodbye (ai-je bien mis Hello au debut ?)

--
---------------------------------------------------------------------
Cordialement
JPGR
"A splendid time is guaranteed for all"
Avatar
JohnPaulGeorgeRingo
Hello !

j'ai trouvé cette solution
est-ce reellement utilisable avec asp.net 2.0 et sql server 2005

--------------solution
USE [noe]
GO


CREATE XML SCHEMA COLLECTION [dbo].[SchemaXMLAnimaux] AS N'<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema&quot;
xmlns:t="http://tempuri.org/Animaux.xsd&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://tempuri.org/Animaux.xsd&quot;
targetNamespace="http://tempuri.org/Animaux.xsd&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://tempuri.org/Animaux.xsd&quot;
elementFormDefault="qualified">

<xsd:import namespace="http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot;
schemaLocation="Amphibiens.xsd"/>

<xsd:import namespace="http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot;
schemaLocation="Reptiles.xsd"/>

<xsd:import namespace="http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot;
schemaLocation="Mammifères.xsd"/>

<xsd:import namespace="http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.w3.org/XML/1998/namespace&quot;
schemaLocation="Ostéichtyens.xsd"/>

</xsd:schema>'


et bien sur dans ma base de donnée, le champs 'caracteristique' se
refere au SchemaXMLAnimaux


CREATE TABLE [dbo].[Table_1](
[id] [int] IDENTITY(1,1) NOT NULL,
[identification] [varchar](50) COLLATE French_CI_AS NULL,
[date entrée] [datetime] NOT NULL,
[caracteristique] [xml](DOCUMENT [dbo].[SchemaXMLAnimaux]) NULL,
[pathos] [ntext] COLLATE French_CI_AS NULL,
[date sortie] [datetime] NULL
)


---------------------------------------------------------------------
Cordialement
JPGR
"A splendid time is guaranteed for all"
Avatar
JohnPaulGeorgeRingo
In article ,
says...
Hello !
Merci messieurs pour vos réponses.
Vous avez certainement résolu mon probleme.

je re-precise mon probleme :
j'ai une table unique ayant un champ xml devant contenir les
caracteristiques d'éléments fort différents.
Ma table (Noé) stocke toutes les especes d'animaux dans sa
classification officielle. J'utilise le recursif.
je dois pouvoir comparer des serpents entre eux (et n'afficher donc que
les bonnes caracteristiques), remplir la fiche d'un serpent en
n'affichant l'écran que les champs "valides" pour les serpents.


Je pensais creer plusieurs schemas (un par famille d'animaux) et me
trouvais bloqué pour utiliser un seul champs xml utilisant un schema.
Si j'ai bien compris votre explication mon cher Denis, je peux creer
autant de fichiers XSD (ayant chacun un "namespace" different) dans la
zone "types/XML Schema Collections" de ma base de donnée.
Parfait !

Ceci ennoncé : comment dans ma table ayant un champs de type XML nomm é
"caracteristique" imposer mes contraintes tenant compte de tous les
schema que j'ai créé dbo.SchemaXMLMamifereMarin,
dbo.SchemaXMLMamifereTerrestre, dbo.SchemaXMLFelin,


Hello :)
Personne n'a de reponse à ma solution ?

--
---------------------------------------------------------------------
Cordialement
JPGR
"A splendid time is guaranteed for all"