OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [xml-dev] Query regarding attribute grouping in XML Schema



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>