[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Use care in creating Schematron rules that apply to elements withfixed o
Hi Folks, Consider the following XML document. There are two <Attitude> elements; one has a "units" attribute: <Test> <Altitude units="feet" /> <Altitude /> </Test> I want a Schematron rule that expresses this: The <Test> element must have only one child <Altitude> element with a units="feet" attribute. So you write this Schematron rule: <sch:rule context="Test"> <sch:assert test="not(Altitude[@units eq 'feet'][2])"> There is exactly one Altitude child element with a units="feet" attribute. </sch:assert> </sch:rule> The rule fires, the assertion succeeds, and all is fine. Pretty simple, right? Not so fast. If the XML Schema declares the units attribute to be either fixed or with a default: <xsd:attribute name="units" type="xsd:string" default="feet" /> or <xsd:attribute name="units" type="xsd:string" fixed="feet" /> then there are actually two Attitude elements with a units="feet" attribute and the assertion should fail. Yikes! The Schematron rule must be revised: it must check that there is one Altitude element that has a units="feet" attribute or has no units attribute. Lesson Learned: Schematron rules must not be created in isolation, independent of the grammar schema (DTD, XML Schema, Relax NG). /Roger [Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] |
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|