[Newbie] XSD Validation for xml

Discussion in 'XML' started by apolloj, Oct 9, 2009.

  1. apolloj

    apolloj Guest

    Hi,

    I've got this xsd schema :

    1/ 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:eek:perationnel"/>
    <xsd:enumeration value="test:etatContrat:stabilise"/>
    <xsd:enumeration value="test:etatContrat:eek:bsolescent"/>
    <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/ This info.xml file :

    <?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/ When I try to validate info.xml againt info.xsd, I've got this error :

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

    What do I miss ?

    Thanks in advance.
     
    apolloj, Oct 9, 2009
    #1
    1. Advertising

  2. apolloj wrote:

    > <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"/>


    Here you are defining the element services-test to have the type xsd:string.


    > <services-test>
    > <mat name="MAN">
    > <description>mat</description>


    yet here you give the element services-test child elements. If the type
    is xsd:string then the element is not allowed any child elements, it can
    only have text contents.

    You probably want to give the services-test element one of the complex
    types you have defined in your schema e.g.
    <xsd:element name="services-test" type="services-test"/>
    as the complex type named services-test is defined in your schema.

    --

    Martin Honnen
    http://msmvps.com/blogs/martin_honnen/
     
    Martin Honnen, Oct 10, 2009
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Markus
    Replies:
    1
    Views:
    1,187
    Markus
    Nov 22, 2005
  2. Matt
    Replies:
    3
    Views:
    37,340
    MKNDK
    Sep 11, 2008
  3. stiank81
    Replies:
    4
    Views:
    15,516
    stiank81
    Jun 26, 2005
  4. Rushi
    Replies:
    1
    Views:
    582
  5. Replies:
    5
    Views:
    1,111
    Brian McCauley
    Nov 29, 2006
Loading...

Share This Page