[Home] [By Thread] [By Date] [Recent Entries]

  • From: Rick JELLIFFE <ricko@g...>
  • To: xml-dev@l...
  • Date: Sat, 24 Jun 2000 16:51:48 +0800

Brian McAndrews wrote:
> 
> given the following XML:
> 
> <Store numberOfProducts=3>
> <Inventory>
> <Product>Baseballs</Product>
> <Product>Footballs</Product>
> <Product>Soccerballs</Product>
> </Inventory>
> </Store>
> 
> Let produce a schema:
> 
> <xsd:complexType name="Inventory">
>    <xsd:element name="Product" type="xsd:string"/>
> </xsd:complexType>
> 
> My question is, (how) can I specify that the number of "Product" be equal to
> the attribute "numberOfProducts" in the Store element?

You can use the Schematron open source schema language, which is
specifically aimed for the 1001 non-regular constraints that real data
requires.

Off the top of my head, the appropriate schema would look something like
this:

<sch:schema  xmlns:sch="http://www.ascc.net/xml/schematron">
<pattern>
 <rule context="Inventory[parent::Store]">
    <assert test="parent::*/@numberOfProducts = count(Product)"
    >The of number "Product" elements in an "Inventory" element should
be 
    equal to the attribute "numberOfProducts" in the Store
element.</assert>
 </rule>
</pattern>

Schematron home page at
http://www.ascc.net/xml/resource/schematron/schematron.html


Rick Jelliffe

***************************************************************************
This is xml-dev, the mailing list for XML developers.
To unsubscribe, mailto:majordomo@x...&BODY=unsubscribe%20xml-dev
List archives are available at http://xml.org/archives/xml-dev/
***************************************************************************

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member