🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: fr.comp.text.xml
4 messages
4 total messages Started by apolloj Fri, 09 Oct 2009 22:48
[newbie] Validation XSD/XML
#108
Author: apolloj
Date: Fri, 09 Oct 2009 22:48
150 lines
6359 bytes
Hi,

1/J'ai ce sh�ma  info.xsd :

<?xml version="1.0" encoding="utf8" ?>
<xsd:schema xmlns=""
             xmlns:xsd="http://www.w3.org/2001/XMLSchema"
             targetNamespace="">

     <xsd:element name="description" type="xsd:string"/>

  <xsd:element name="services-test" type="xsd:string"/>

         <!-- definition du noeud racine 'services-test' -->
         <xsd:complexType name="services-test">
             <xsd:sequence>
                   <xsd:element maxOccurs="unbounded" minOccurs="0" 
name="mat" type="mat"/>
             </xsd:sequence>
             <xsd:attribute name="noNamespaceSchemaLocation" 
type="xsd:token"/>
           </xsd:complexType>

         <!-- definition du noeud 'mat' -->
         <xsd:complexType name="mat">
             <xsd:sequence>
                 <xsd:element maxOccurs="1" minOccurs="0" 
name="description" type="xsd:string"/>
                 <xsd:element maxOccurs="1" minOccurs="1" 
name="contrats" type="contrats"/>
             </xsd:sequence>
             <xsd:attribute name="name" type="xsd:token" use="required"/>
         </xsd:complexType>

         <!-- defintion du noeud 'contrats'-->
         <xsd:complexType name="contrats">
             <xsd:sequence>
                 <xsd:element maxOccurs="unbounded" minOccurs="0" 
name="contrat" type="contrat"/>
             </xsd:sequence>
         </xsd:complexType>

         <!-- validation du noeud 'contrat' -->
         <xsd:complexType name="contrat">
             <xsd:sequence>
                 <xsd:element name="description" type="xsd:string"/>
                 <xsd:element name="etatContrat" type="etatContrat"/>
                 <xsd:element name="services"     type="services"/>
             </xsd:sequence>
             <xsd:attribute name="name" type="xsd:token"/>
         </xsd:complexType>

         <!-- Validation de noeud 'EtatContrat' -->
         <xsd:complexType name="etatContrat">
             <xsd:sequence>
                 <xsd:element name="etat" type="etat"/>
             </xsd:sequence>
             <xsd:attribute name="dateEffet" type="xsd:string" 
use="optional"/>
         </xsd:complexType>

         <xsd:complexType name="etat">
             <xsd:sequence>
                 <xsd:element name="description" type="xsd:token"/>
             </xsd:sequence>
             <xsd:attribute name="name" use="required">
                 <xsd:simpleType>
                     <xsd:restriction base="xsd:NMTOKEN">
                         <xsd:enumeration value="test:etatContrat:prevu"/>
                         <xsd:enumeration 
value="test:etatContrat:operationnel"/>
                         <xsd:enumeration 
value="test:etatContrat:stabilise"/>
                         <xsd:enumeration 
value="test:etatContrat:obsolescent"/>
                         <xsd:enumeration value="test:etatContrat:retire"/>
                     </xsd:restriction>
                 </xsd:simpleType>
             </xsd:attribute>
         </xsd:complexType>

     <xsd:complexType name="services">
         <xsd:sequence>
             <xsd:element maxOccurs="unbounded" minOccurs="0" 
name="service" type="service"/>
         </xsd:sequence>
     </xsd:complexType>

     <xsd:complexType name="service">
         <xsd:sequence>
             <xsd:element name="description" type="xsd:string"/>
         </xsd:sequence>
         <xsd:attribute name="accessPoint" type="xsd:anyURI"/>
         <xsd:attribute name="name" type="xsd:string" use="required" />
         <xsd:attribute name="wsdl" type="xsd:anyURI" use="required" />
     </xsd:complexType>

</xsd:schema>

2/ Le fichier xml suivant :

<?xml version="1.0" encoding="utf8"?>
<services-test>
   <mat name="MAN">
     <description>mat</description>
     <contrats>
       <contrat name="CONTRAT_MAN_top2">
         <description>contrat CONTRAT_MAN_top2</description>
         <etatContrat>
           <etat name=":etatContrat:stabilise">
             <description>Stabilis�</description>
           </etat>
         </etatContrat>
         <services>
             <service name="RestitutionNomenclatureInterface" 
wsdl="http://192.168.31.32:1511/mannaf_CA2_Z2/services/MAN/contrat_naf" 
accessPoint="http://192.168.31.32:1511/mannaf_CA2_Z2/services/MAN/contrat_naf">
               <description>Description</description>
             </service>
             <service name="RestitutionActivitesInterface"

wsdl="http://192.168.31.32:1511/mannaf_CA2_Z2/services/MAN/contrat_naf"

accessPoint="http://192.168.31.32:1511/mannaf_CA2_Z2/services/MAN/contrat_naf">
               <description>Description</description>
             </service>
         </services>
       </contrat>
     </contrats>
   </mat>
</services-test>

3/ Quand j'essaie de valider le fichier xml � partir de xsd :

xmllint --noout --schema ./info.xsd ./info.xml
./info.xml:2: element services-test: Schemas validity error : Element 
'services-test': No matching global declaration available.
./info.xml fails to validate

Qq'un peut-il-me donner des infos ?

Mer�i d'avance.

PS :
xmllint --version
xmllint: using libxml version 20632
    compiled with: Threads Tree Output Push Reader Patterns Writer SAXv1 
FTP HTTP DTDValid HTML Legacy C14N Catalog XPath XPointer XInclude Iconv 
ISO8859X Unicode Regexps Automata Expr Schemas Schematron Modules Debug 
Zlib
Re: [newbie] Validation XSD/XML
#109
Author: Mickaël Wolff
Date: Fri, 09 Oct 2009 23:10
23 lines
1989 bytes
apolloj wrote:

> <?xml version="1.0" encoding="utf8" ?>
> <xsd:schema xmlns=""
>             xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>             targetNamespace="">
> 
>     <xsd:element name="description" type="xsd:string"/>
[snip]
> xmllint --noout --schema ./info.xsd ./info.xml
> ./info.xml:2: element services-test: Schemas validity error : Element 
> 'services-test': No matching global declaration available.
> ./info.xml fails to validate
> 
   Le message est pourtant clair. Tu as d�clar� que l'�l�ment 
service-test est une chaine, qui ne contient *pas* d'autrs �l�ments. Or, 
dans ton fichier XML, service-test contient d'autres �l�ments. Il faut 
donc que tu corrige ton XSD pour que la d�claration de l'�l�ment soit en 
accord avec ton besoin.

-- 
Micka�l Wolff aka Lupus Michaelis
http://lupusmic.org
Re: [newbie] Validation XSD/XML
#110
Author: apolloj
Date: Sat, 10 Oct 2009 09:34
44 lines
2614 bytes
Bonjour,

Mer�i pour la r�ponse

En fait,
services-test apparait 2 fois. C'est un fichier non modifiable (utilis� 
ailleurs aussi et qui est � *priori* valid�)

Comment le parser fait la diff�rence ?


  <xsd:element name="services-test" type="xsd:string"/>
		
		<!-- definition du noeud racine 'services-test' -->
		<xsd:complexType name="services-test">
     		<xsd:sequence>
       			<xsd:element maxOccurs="unbounded" minOccurs="0" name="mat" 
type="mat"/>
     		</xsd:sequence>
     		<xsd:attribute name="noNamespaceSchemaLocation" type="xsd:token"/>
   		</xsd:complexType>


Micka�l Wolff a �crit :
> apolloj wrote:
> 
>> <?xml version="1.0" encoding="utf8" ?>
>> <xsd:schema xmlns=""
>>             xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>>             targetNamespace="">
>>
>>     <xsd:element name="description" type="xsd:string"/>
> [snip]
>> xmllint --noout --schema ./info.xsd ./info.xml
>> ./info.xml:2: element services-test: Schemas validity error : Element 
>> 'services-test': No matching global declaration available.
>> ./info.xml fails to validate
>>
>   Le message est pourtant clair. Tu as d�clar� que l'�l�ment 
> service-test est une chaine, qui ne contient *pas* d'autrs �l�ments. Or, 
> dans ton fichier XML, service-test contient d'autres �l�ments. Il faut 
> donc que tu corrige ton XSD pour que la d�claration de l'�l�ment soit en 
> accord avec ton besoin.
> 
Re: [newbie] Validation XSD/XML
#111
Author: Mickaël Wolff
Date: Sat, 10 Oct 2009 14:56
26 lines
2069 bytes
apolloj wrote:
> En fait,
> services-test apparait 2 fois. C'est un fichier non modifiable (utilis� 
> ailleurs aussi et qui est � *priori* valid�)
   Il n'apparait pas deux fois. Ce sont deux concepts diff�rents. Tu 
devrais lire les sp�cifications du W3C.

> Comment le parser fait la diff�rence ?
> 
> 
>  <xsd:element name="services-test" type="xsd:string"/>

   Le probl�me est l�. La XSD est fausse. La d�claration de l'�l�ment 
devrait etre :

   <xsd:element name="services-test" type="services-test"/>


>         <!-- definition du noeud racine 'services-test' -->
   Ceci n'est pas la d�finition du noeud racine. C'est la d�finition du 
type � complexe � qui doit etre utiliser dans la d�claration de l'�l�ment.
>         <xsd:complexType name="services-test">

-- 
Micka�l Wolff aka Lupus Michaelis
http://lupusmic.org
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads