Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[Newbie] XSD Validation for xml

4 views
Skip to first unread message

apolloj

unread,
Oct 9, 2009, 6:33:12 PM10/9/09
to
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: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/ 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.

Martin Honnen

unread,
Oct 10, 2009, 6:50:38 AM10/10/09
to
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/

C. M. Sperberg-McQueen

unread,
Nov 21, 2009, 2:51:56 PM11/21/09
to
apolloj <apoll...@NOSPAMmsn.com> writes:

> 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:schema>
>
> 2/ This info.xml file :

> ...


> 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 ?

Hard to say. When I run that command on those input files, I get

$ xmllint --noout --schema ./apollo.xsd ./apollo.xml
./apollo.xsd:5: element schema: Schemas parser error : Element 'schema', attribute 'targetNamespace' ['anyURI']: The value '' is not valid.
WXS schema ./apollo.xsd failed to compile
$

When I fix that problem by deleting the targetNamespace attribute, I
get a number of other error messages about the schema, and eventually,
as already predicted by Martin Honnen earlier in this thred, the
validator reports errors relating to the fact that you have declared
element 'services-test' as

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

instead of

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

--C. M. Sperberg-McQueen
Black Mesa Technologies LLC http://blackmesatech.com

0 new messages