[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [xml-dev] Query regarding attribute grouping in XML Schema
- From: Eddie Robertsson <eddie@allette.com.au>
- To: sabina suresh <sabi_india@yahoo.com>
- Date: Fri, 28 Sep 2001 10:36:48 +1000
Hi Sabina,
> I'm not able to describe this constraint using an
> annotation in a way in which it would be validated by
> a parser. Could you please give an example for the
> same? I would also like to know if it will be treated
> as documentation or would it be validated against by
> the parser?
What James meant (I think?) by using the annotaitons in XML Schema is to
include embedded Schematron rules within the xs:appinfo element of your
schema. For your example this could for example look like:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="Address">
<xs:annotation>
<xs:appinfo>
<pattern name="Both attributes"
xmlns="http://www.ascc.net/xml/schematron">
<rule context="Address[@streetname | @doorno]">
<assert test="@doorno">If you have a streetname attribute you must
have a doornr attribute.</assert>
<assert test="@streetname">If you have a doornr attribute you must
have a streetname attribute.</assert>
</rule>
</pattern>
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="doorno" type="xs:string"/>
<xs:attribute name="streetname" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:schema>
Note, that these constraints can't be validated using a normal XML
Schema validator so you would have to:
1) Get the free Schematron Validator from Topologi [1]
2) Using an API you can chain together different XSLT Stylesheets to
first extract the Schematron information from the XML Schema and then
run a normal Schematron Validation). For more info see the Schematron
[2] and extending XML Schemas [3].
Cheers,
/Eddie
[1] www.topologi.com
[2] http://www.ascc.net/xml/resource/schematron/
[3] http://www.xfront.com/BestPracticesHomepage.html (see Extending XML
Schemas)
>
>
> regards,
> Sabina
>
> --- James Clark <jjc@jclark.com> wrote:
> >
> > > > <element name="ADDRESS">
> > > > <optional>
> > > > <attribute name="doorno"/>
> > > > <attribute name="streetname"/>
> > > > </optional>
> > > > </element>
> > >
> > > I have no experience in RELAX-NG but this look
> > like a good and simple way
> > of
> > > specifying the above constaint. But if this is how
> > you specify that an
> > > element should either have no attributes or both
> > then how would you
> > specify
> > > that element ADDRESS can optionally have
> > attributes doorno and streetname
> > but
> > > without the connection between the attributes?
> > > Would that be something like:
> > >
> > > <element name="ADDRESS">
> > > <optional>
> > > <attribute name="doorno"/>
> > > </optional>
> > > <optional>
> > > <attribute name="streetname"/>
> > > </optional>
> > > </element>
> > >
> > > or?
> >
> > It would be exactly that.
> >
> > James
> >
> >
> >
> >
> -----------------------------------------------------------------
> > The xml-dev list is sponsored by XML.org
> > <http://www.xml.org>, an
> > initiative of OASIS <http://www.oasis-open.org>
> >
> > The list archives are at
> > http://lists.xml.org/archives/xml-dev/
> >
> > To subscribe or unsubscribe from this elist use the
> > subscription
> > manager: <http://lists.xml.org/ob/adm.pl>
>
> __________________________________________________
> Do You Yahoo!?
> Listen to your Yahoo! Mail messages from any phone.
> http://phone.yahoo.com
>
> -----------------------------------------------------------------
> The xml-dev list is sponsored by XML.org <http://www.xml.org>, an
> initiative of OASIS <http://www.oasis-open.org>
>
> The list archives are at http://lists.xml.org/archives/xml-dev/
>
> To subscribe or unsubscribe from this elist use the subscription
> manager: <http://lists.xml.org/ob/adm.pl>