OVH Cloud OVH Cloud

sql2005 & schemaXML multiples

9 réponses
Avatar
JohnPaulGeorgeRingo
bonjour

est-il possible dans une colonne de type xml d'utiliser un schema=20
multiple (grace =E0 la fonction "import")
l'exemple des devdays 2005 contenant un schema simple
CREATE TABLE [SchemaDD2005].[Commande](
=09[Commande_ID] [int] IDENTITY(1,1) NOT NULL,
=09[Commande_ClientID] [int] NOT NULL,
=09[Commande_Date] [datetime] NOT NULL,
=09[Commande_Statut] [smallint] NOT NULL,
=09[Commande_MontantTotalTTC] [money] NULL,
=09[Commande_InfoPaiement] [xml](CONTENT [dbo].
[SchemaXMLInfoPaiement]) NULL,
PRIMARY KEY CLUSTERED=20

j'ai personellement besoin d'un schemaXml plus =E9toff=E9.

USE [noe]
GO


CREATE XML SCHEMA COLLECTION [dbo].[SchemaXMLAnimaux] AS N'<xsd:schema=20
xmlns:xsd=3D"http://www.w3.org/2001/XMLSchema"=20
xmlns:t=3D"http://tempuri.org/Animaux.xsd"=20
targetNamespace=3D"http://tempuri.org/Animaux.xsd"=20
elementFormDefault=3D"qualified">

<xsd:import namespace=3D"http://www.w3.org/XML/1998/namespace"
schemaLocation=3D"Amphibiens.xsd"/>

<xsd:import namespace=3D"http://www.w3.org/XML/1998/namespace"
schemaLocation=3D"Reptiles.xsd"/>

<xsd:import namespace=3D"http://www.w3.org/XML/1998/namespace"
schemaLocation=3D"Mammif=E8res.xsd"/>

<xsd:import namespace=3D"http://www.w3.org/XML/1998/namespace"
schemaLocation=3D"Ost=E9ichtyens.xsd"/>

</xsd:schema>'


et bien sur dans ma base de donn=E9e, le champs 'caracteristique' se=20
refere au SchemaXMLAnimaux


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

s'il vous plait, aidez moi merci

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

9 réponses

Avatar
Med Bouchenafa
Apparemment, c'est conforme à la documentation de SQL Server.
http://msdn2.microsoft.com/en-us/library/ms190665.aspx
Essaye de voir si tu peux t'en sortir avec le Preprocessor dont il est
question dans l'article

--
Bien cordialement
Med Bouchenafa

"JohnPaulGeorgeRingo" a
écrit dans le message de news:
bonjour

est-il possible dans une colonne de type xml d'utiliser un schema
multiple (grace à la fonction "import")
l'exemple des devdays 2005 contenant un schema simple
CREATE TABLE [SchemaDD2005].[Commande](
[Commande_ID] [int] IDENTITY(1,1) NOT NULL,
[Commande_ClientID] [int] NOT NULL,
[Commande_Date] [datetime] NOT NULL,
[Commande_Statut] [smallint] NOT NULL,
[Commande_MontantTotalTTC] [money] NULL,
[Commande_InfoPaiement] [xml](CONTENT [dbo].
[SchemaXMLInfoPaiement]) NULL,
PRIMARY KEY CLUSTERED

j'ai personellement besoin d'un schemaXml plus étoffé.

USE [noe]
GO


CREATE XML SCHEMA COLLECTION [dbo].[SchemaXMLAnimaux] AS N'<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:t="http://tempuri.org/Animaux.xsd"
targetNamespace="http://tempuri.org/Animaux.xsd"
elementFormDefault="qualified">

<xsd:import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="Amphibiens.xsd"/>

<xsd:import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="Reptiles.xsd"/>

<xsd:import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="Mammifères.xsd"/>

<xsd:import namespace="http://www.w3.org/XML/1998/namespace"
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
)

s'il vous plait, aidez moi merci

--
---------------------------------------------------------------------
Cordialement
JPGR
"A splendid time is guaranteed for all"
Avatar
Denis Ruckebusch [MSFT]
Une "XML SCHEMA COLLECTION" peut contenir plusieurs schemas.

Le tag <xsd:import namespace="..."/> permet d'autoriser la reference a
des composants present dans un targetNamespace autre que celui du schema
courant. Toutefois, SQL Server 2005 ignore l'attribut schemaLocation (ce
qui est logique puisque les schemas sont stockes en metadata, et non pas
comme des fichiers referencables individuellement)

Voici un exemple simple

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

<xsd:element name="araignee">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="venimeuse" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

</xsd:schema>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="bovins">

<xsd:element name="bovin">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="laitiere" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

</xsd:schema>
'
go

ALTER XML SCHEMA COLLECTION animaux ADD '
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="menagerie"
xmlns:ns="menagerie"
xmlns:b="bovins"
xmlns:a="araignees">

<xsd:import namespace="bovins"/>
<xsd:import namespace="araignees"/>

<xsd:element name="mesAnimaux" type="ns:menagerieType"/>

<xsd:complexType name="menagerieType">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="a:araignee"/>
<xsd:element ref="b:bovin"/>
</xsd:choice>
</xsd:complexType>

</xsd:schema>
'
go


Une fois ces deux operations effectuees la collection "animaux" contient
3 schemas avec les namespaces "menagerie", "bovins" et "araignees".

Pour comprendre le sens et l'utilite des <xsd:import .../>, vous pouvez
effacer la collection re-essayer l'exemple precedent en supprimant
auparavant la ligne <xsd:import namespace="bovins"/> dans le troisieme
schema.

Vous obtiendrez l'erreur suivante (en Anglais pour moi, desole)

Reference to an undefined name 'bovin' within namespace 'bovins'

Le <xsd:import .... /> sert a indiquer au serveur que pour resoudre
certaines references il devra importer les composants du namespace
"bovins". Faute de tag import le server se trouve devant une reference a
un element "bovin" dont il n'a pas la definition.

L'attribut schemaLocation que l'on trouve parfois dans xsd:import sert a
indiquer l'emplacement du schema a importer. Cela n'a aucun sens pour
SQL Server 2005 puisque tous les schemas "importables" sont stockes dans
la collection, c'est a dire en metadata. Nous nous contentons d'ignorer
cet attribut.


Le preprocesseur present dans la documentation et dont parlait Med
Bouchenafa sert lui a eliminer les <xsd:include .../> en combinant les
fichiers physiques qui constituent un schema _avant_ de l'importer dans
le serveur (les schemas contenant xsd:include sont rejetes par SQL
Server 2005)



Denis Ruckebusch
SQL Server XML Datatype 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


"JohnPaulGeorgeRingo"
wrote in message news:
bonjour

est-il possible dans une colonne de type xml d'utiliser un schema
multiple (grace à la fonction "import")
l'exemple des devdays 2005 contenant un schema simple
CREATE TABLE [SchemaDD2005].[Commande](
[Commande_ID] [int] IDENTITY(1,1) NOT NULL,
[Commande_ClientID] [int] NOT NULL,
[Commande_Date] [datetime] NOT NULL,
[Commande_Statut] [smallint] NOT NULL,
[Commande_MontantTotalTTC] [money] NULL,
[Commande_InfoPaiement] [xml](CONTENT [dbo].
[SchemaXMLInfoPaiement]) NULL,
PRIMARY KEY CLUSTERED

j'ai personellement besoin d'un schemaXml plus étoffé.

USE [noe]
GO


CREATE XML SCHEMA COLLECTION [dbo].[SchemaXMLAnimaux] AS N'<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:t="http://tempuri.org/Animaux.xsd"
targetNamespace="http://tempuri.org/Animaux.xsd"
elementFormDefault="qualified">

<xsd:import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="Amphibiens.xsd"/>

<xsd:import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="Reptiles.xsd"/>

<xsd:import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="Mammifères.xsd"/>

<xsd:import namespace="http://www.w3.org/XML/1998/namespace"
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
)

s'il vous plait, aidez moi merci

--
---------------------------------------------------------------------
Cordialement
JPGR
"A splendid time is guaranteed for all"
Avatar
JohnPaulGeorgeRingo
Merci, infiniment merci
j'espere etre enfin dépanné.
en fait il faut mettre tous les schemas dans un "meme fichier"
je teste la solution et je vous fait un compte rendu

merci encore mille fois

In article <446274d9$,
says...
Une "XML SCHEMA COLLECTION" peut contenir plusieurs schemas.

Le tag <xsd:import namespace="..."/> permet d'autoriser la reference a
des composants present dans un targetNamespace autre que celui du schema
courant. Toutefois, SQL Server 2005 ignore l'attribut schemaLocation (ce
qui est logique puisque les schemas sont stockes en metadata, et non pas
comme des fichiers referencables individuellement)

Voici un exemple simple

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

<xsd:element name="araignee">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="venimeuse" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

</xsd:schema>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="bovins">

<xsd:element name="bovin">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="laitiere" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

</xsd:schema>
'
go

ALTER XML SCHEMA COLLECTION animaux ADD '
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="menagerie"
xmlns:ns="menagerie"
xmlns:b="bovins"
xmlns:a="araignees">

<xsd:import namespace="bovins"/>
<xsd:import namespace="araignees"/>



--
---------------------------------------------------------------------
Cordialement
JPGR
"A splendid time is guaranteed for all"
Avatar
Denis Ruckebusch [MSFT]
Oui, on peut importer tous les schemas d'un seul coup en les mettant les
uns a la suite des autres dans la chaine de caracteres comme ceci

CREATE XML SCHEMA COLLECTION myCollection AS '
<xsd:schema ..... >
.....
</xsd:schema>
<xsd:schema ..... >
.....
</xsd:schema>
<xsd:schema ..... >
.....
</xsd:schema>'
go

On peut aussi proceder en plusieurs fois en rajoutant des composants une
fois la collection creee. Pour cela il faut utiliser ALTER XML SCHEMA
COLLECTION myCollection ADD ' ...... '

A noter: avec ALTER vous pouvez rajouter des composants dans un
namespace qui existe deja dans la collection.

Si vous importez vos schemas en plusieurs etapes, il faut faire
attention a l'ordre, afin qu'il n'y ait pas de references non resolues.
Les composants references dans les schemas que vous importes doivent
soit etre importes en meme temps, soit etre deja presents dans la
collection (auquel cas vous devez ajouter un <xsd:import..../>

Le plus simple reste d'importer tous les schemas en meme temps, d'un
seul coup, comme vous l'avez suggere.

Denis Ruckebusch
SQL Server XML Datatype 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

"JohnPaulGeorgeRingo"
wrote in message
news:
Merci, infiniment merci
j'espere etre enfin dépanné.
en fait il faut mettre tous les schemas dans un "meme fichier"
je teste la solution et je vous fait un compte rendu

merci encore mille fois

In article <446274d9$,
says...
Une "XML SCHEMA COLLECTION" peut contenir plusieurs schemas.

Le tag <xsd:import namespace="..."/> permet d'autoriser la reference a
des composants present dans un targetNamespace autre que celui du
schema
courant. Toutefois, SQL Server 2005 ignore l'attribut schemaLocation
(ce
qui est logique puisque les schemas sont stockes en metadata, et non
pas
comme des fichiers referencables individuellement)

Voici un exemple simple

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

<xsd:element name="araignee">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="venimeuse" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

</xsd:schema>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="bovins">

<xsd:element name="bovin">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="laitiere" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

</xsd:schema>
'
go

ALTER XML SCHEMA COLLECTION animaux ADD '
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="menagerie"
xmlns:ns="menagerie"
xmlns:b="bovins"
xmlns:a="araignees">

<xsd:import namespace="bovins"/>
<xsd:import namespace="araignees"/>



--
---------------------------------------------------------------------
Cordialement
JPGR
"A splendid time is guaranteed for all"
Avatar
JohnPaulGeorgeRingo
In article ,
says...
bonjour

est-il possible dans une colonne de type xml d'utiliser un schema
multiple (grace à la fonction "import")
l'exemple des devdays 2005 contenant un schema simple
CREATE TABLE [SchemaDD2005].[Commande](
[Commande_ID] [int] IDENTITY(1,1) NOT NULL,
[Commande_ClientID] [int] NOT NULL,
[Commande_Date] [datetime] NOT NULL,
[Commande_Statut] [smallint] NOT NULL,
[Commande_MontantTotalTTC] [money] NULL,
[Commande_InfoPaiement] [xml](CONTENT [dbo].
[SchemaXMLInfoPaiement]) NULL,
PRIMARY KEY CLUSTERED

j'ai personellement besoin d'un schemaXml plus étoffé.

USE [noe]
GO


CREATE XML SCHEMA COLLECTION [dbo].[SchemaXMLAnimaux] AS N'<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:t="http://tempuri.org/Animaux.xsd"
targetNamespace="http://tempuri.org/Animaux.xsd"
elementFormDefault="qualified">


bonjour Denis et merci encore.

Cela fonctionne parfaitement avec sql server 2005.
Je vais voir maintenant pourquoi le meme ordre de creation de schema=
3D20
dans visual studio 2005 me retourne l'erreur "xml document cannot
contain multiple root level element".
mais ca, c'est une autre histoire......

--
---------------------------------------------------------------------
Cordialement
JPGR
"A splendid time is guaranteed for all"
Avatar
JohnPaulGeorgeRingo
re-bonjour

juste une question avec votre clause "choise"

quand je cree le champs XML contenant un "multi" schema pour mes
differentes especes d'animaux, il faut (a un moment T) que je ne lise
que les infos concernant cette espece.
comment ne lire (ou n'ecrire) que ces infos la ?
j'ai pensé dans un autre champs renseigner le nom de l'espece et le
recuperer pour en faire le "namespace" me premettant d'aller directement
sur le noeud xml à lire ou a remplir.

est-ce la bonne methode ?
ou bien le "choice" permet une autre approche ?

merci pour votre interet a mon probleme


---------------------------------------------------------------------
Cordialement
JPGR
"A splendid time is guaranteed for all"
Avatar
Denis Ruckebusch [MSFT]
Je suis plutot specialise "serveur" donc je ne sais pas trop ce que vous
essayez de faire dans VS 2005 mais par definition un schema XML ne peut
avoir qu'une seule racine <xsd:schema>. Mon conseil est de creer les
schemas separement et cela devrait fonctionner.
Pour SQL Server 2005 les commandes CREATE/ALTER XML SCHEMA COLLECTION
'.....' vous laissent specifier plusieurs schemas a la suite pour plus
de commodite (et aussi parce que dans le cas de references croisees il
serait impossible de resoudre toutes les references sans autoriser
l'importation simultanee de plusieurs schemas).

Si vous voulez creer vos schemas dans VS 2005 vous devrez les creer
separement, mais ce n'est pas un probleme. Si vous voulez ensuite les
importer dans une Xml Schema Collection sur le serveur, vous pouvez
charger le contenu des fichiers dans des variables nvarchar(MAX) et les
concatener.
J'ai mis en ligne recemment plusieurs exemples d'importation de schemas
a partir de fichiers separes. Peut etre cela vous aidera-t-il
http://blogs.msdn.com/denisruc/archive/2006/04/18/578671.aspx
http://blogs.msdn.com/denisruc/archive/2006/05/02/588678.aspx


Aussi, j'en profite pour preciser que l'implementation du type XML sur
le seveur est completement distincte des fonctionalites XML offertes
dans le CLR (System.Xml). Le code est different et le serveur ne depend
pas du CLR pour importer les schemas ou valider les instances.
En ce qui concerne les schemas les deux implementations sont bien sur
basees sur les specs du W3C mais il y a quelques differences minimes
(par exemple SQL Server 2005 refuse les particules <xsd:choice/> vides
sauf si minOccurs="0"). Referez vous a
http://msdn2.microsoft.com/en-us/library/ms190665.aspx pour plus de
details.

Cordialement,

Denis Ruckebusch
SQL Server XML Datatype 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

"JohnPaulGeorgeRingo"
wrote in message
news:
In article ,
says...
bonjour

est-il possible dans une colonne de type xml d'utiliser un schema
multiple (grace à la fonction "import")
l'exemple des devdays 2005 contenant un schema simple
CREATE TABLE [SchemaDD2005].[Commande](
[Commande_ID] [int] IDENTITY(1,1) NOT NULL,
[Commande_ClientID] [int] NOT NULL,
[Commande_Date] [datetime] NOT NULL,
[Commande_Statut] [smallint] NOT NULL,
[Commande_MontantTotalTTC] [money] NULL,
[Commande_InfoPaiement] [xml](CONTENT [dbo].
[SchemaXMLInfoPaiement]) NULL,
PRIMARY KEY CLUSTERED

j'ai personellement besoin d'un schemaXml plus étoffé.

USE [noe]
GO


CREATE XML SCHEMA COLLECTION [dbo].[SchemaXMLAnimaux] AS N'<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:t="http://tempuri.org/Animaux.xsd"
targetNamespace="http://tempuri.org/Animaux.xsd"
elementFormDefault="qualified">


bonjour Denis et merci encore.

Cela fonctionne parfaitement avec sql server 2005.
Je vais voir maintenant pourquoi le meme ordre de creation de schema 3D20
dans visual studio 2005 me retourne l'erreur "xml document cannot
contain multiple root level element".
mais ca, c'est une autre histoire......

--
---------------------------------------------------------------------
Cordialement
JPGR
"A splendid time is guaranteed for all"
Avatar
Denis Ruckebusch [MSFT]
Si je comprends bien votre question, vous touchez la a un probleme que
j'ai deja rencontre.

Quand on associe une colonne ou une variable de type XML a une Xml
Schema Collection, la colonne ou la variable en question peut contenir
toute instance qui peut etre validee par n'importe lequel des schemas
presents dans la collection.
Il n'est pas possible de se restreindre a un seulelement ni meme a un
seul namespace.

On peut cependant contourner ce probleme en verifiant le namespace (et
le nom local aussi eventuellement) de l'element. Si on veut interdire
l'insertion de certains elements on peut faire cela grace a une trigger.

Voici un petit exemple qui reprend les collection "animaux" que j'avais
utilisee en exemple il y a quelques jours dans ce meme fil.

Supposons que je souhaire creer une table avec une colonne XML qui doit
contenir des informations sur les araignees uniquement. Mon schema XML
sur les araignees etant contenu dans la collection "animaux" je peux
creer la table suivante

CREATE TABLE mesAraignees (
date Datetime,
araignees XML(animaux)
)
go

Probleme: le serveur acceptera aussi que j'insere une instance de
l'element "bovin" du namespace "bovins". Je cree donc la trigger
suivante.


CREATE TRIGGER TriggerAraignee on mesAraignees INSTEAD OF INSERT
AS
BEGIN

INSERT INTO mesAraignees
SELECT date, araignees.query('for $i in /* return (if
(namespace-uri($i) = "araignees") then $i else ())')
FROM inserted

END


A chaque fois que quelqu'un essaie d'inserer des fragments XML, je ne
retiens que les fragments dont le namespace est "araignees".

Par exemple, nous pouvons essayer d'inserer les valeurs suivantes:

INSERT INTO mesAraignees VALUES ('5/5/2005 12:00:00', '
<x:bovin
xmlns:x="bovins"><name>Marguerite</name><laitiere>true</laitiere></x:bovin>
<x:araignee
xmlns:x="araignees"><name>Mygale</name><venimeuse>true</venimeuse></x:araignee>
<x:bovin
xmlns:x="bovins"><name>Pepito</name><laitiere>false</laitiere></x:bovin>
')

Voici ce que j'obtiens quand je regarde ce qui a ete vraiment insere
dans la table:

SELECT araignees FROM mesAraignees WHERE date = '5/5/2005 12:00:00'

donne le resultat

<x:araignee
xmlns:x="araignees"><name>Mygale</name><venimeuse>true</venimeuse></x:araignee>

Les fragments qualifies par le namespace "bovins" n'ont pas ete inseres
grace a la XQuery 'for $i in /* return (if (namespace-uri($i) =
"araignees") then $i else ())' qui ne retroune que les elements du
namespace "araignees".

Pour finir, une autre petite astuce. Si vous souhaitez ne stocker que
des documents XML (par opposition a des fragments), c-a-d si vous
souhaitez qu'il n'y ait qu'un seul element a la racine, vous pouvez
utiliser DOCUMENT dans la declaration de votre colonne. Pour plus
d'informations, reportez vous a MSDN ici:
http://msdn2.microsoft.com/en-us/library/ms184277.aspx (cf. exemple D)

Cordialement,

Denis Ruckebusch
SQL Server XML Datatype 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


"JohnPaulGeorgeRingo"
wrote in message
news:
re-bonjour

juste une question avec votre clause "choise"

quand je cree le champs XML contenant un "multi" schema pour mes
differentes especes d'animaux, il faut (a un moment T) que je ne lise
que les infos concernant cette espece.
comment ne lire (ou n'ecrire) que ces infos la ?
j'ai pensé dans un autre champs renseigner le nom de l'espece et le
recuperer pour en faire le "namespace" me premettant d'aller directement
sur le noeud xml à lire ou a remplir.

est-ce la bonne methode ?
ou bien le "choice" permet une autre approche ?

merci pour votre interet a mon probleme


---------------------------------------------------------------------
Cordialement
JPGR
"A splendid time is guaranteed for all"
Avatar
JohnPaulGeorgeRingo
merci pour vos lumieres

ce que j'essaye de faire dans VS2005 ?
tout simplement un programme qui via une interface web (ici nous
travaillons en mode intranet (mais pourquoi pas demain via intenret))
s'appuie sur une base sql server 2005.
Je pensais pouvoir tout creer à partir de vs (vu qu'il y a une
integration de sql server).
Donc tout ce que je crée dans sql server je le "retraduis" dans vs.

En ce qui concerne les schemas, tous les schemas 'simples' sont
copiables et utilisables dans vs (qui offre le confort de la
visualisation "à la access" des données xsd). Mais les schemas contenan t
plusieurs namespace donc "racine <xsd:schema>" sortent en erreur.
Mais vous m'avez apporté toutes les infos dont j'ai besoin.

ce n'est pas facile sans livres en francais de trouver les bonnes
options.

merci pour votre aide et vos "trucs"

In article <4464e085$,
says...
Je suis plutot specialise "serveur" donc je ne sais pas trop ce que vous
essayez de faire dans VS 2005 mais par definition un schema XML ne peut
avoir qu'une seule racine <xsd:schema>. Mon conseil est de creer les
schemas separement et cela devrait fonctionner.
Pour SQL Server 2005 les commandes CREATE/ALTER XML SCHEMA COLLECTION
'.....' vous laissent specifier plusieurs schemas a la suite pour plus
de commodite (et aussi parce que dans le cas de references croisees il
serait impossible de resoudre toutes les references sans autoriser
l'importation simultanee de plusieurs schemas).

Si vous voulez creer vos schemas dans VS 2005 vous devrez les creer
separement, mais ce n'est pas un probleme. Si vous voulez ensuite les
importer dans une Xml Schema Collection sur le serveur, vous pouvez
charger le contenu des fichiers dans des variables nvarchar(MAX) et les
concatener.
J'ai mis en ligne recemment plusieurs exemples d'importation de schemas
a partir de fichiers separes. Peut etre cela vous aidera-t-il
http://blogs.msdn.com/denisruc/archive/2006/04/18/578671.aspx
http://blogs.msdn.com/denisruc/archive/2006/05/02/588678.aspx


Aussi, j'en profite pour preciser que l'implementation du type XML sur
le seveur est completement distincte des fonctionalites XML offertes
dans le CLR (System.Xml). Le code est different et le serveur ne depend
pas du CLR pour importer les schemas ou valider les instances.
En ce qui concerne les schemas les deux implementations sont bien sur
basees sur les specs du W3C mais il y a quelques differences minimes
(par exemple SQL Server 2005 refuse les particules <xsd:choice/> vides
sauf si minOccurs="0"). Referez vous a
http://msdn2.microsoft.com/en-us/library/ms190665.aspx pour plus de
details.

Cordialement,

Denis Ruckebusch
SQL Server XML Datatype 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

"JohnPaulGeorgeRingo"
wrote in message
news:
In article ,
says...
> bonjour
>



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