[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Is an XPath processor responsible for catching mi
As far as an XSLT processor is concerned, there is no such thing as a mis-spelt element in an XPath. If the XPath is syntatically correct, then that is fine. Consider a variation on the identity template that has a template that matches on child::authr. you can run this against any input document, whether validated or not. If you confine yourself to validated-only documents, then some documents may be validated against schemas were authr is a valid element name. On 21/02/2008, Costello, Roger L. <costello@xxxxxxxxx> wrote: > Hi Folks, > > Consider this XML document: > > <?xml version="1.0"?> > <Book> > <Title>My Life and Times</Title> > <Author>Paul McCartney</Author> > <Date>1998</Date> > <ISBN>1-56592-235-2</ISBN> > <Publisher>McMillan Publishing</Publisher> > </Book> > > Here is an XPath expression to count the number of <Author> elements: > > count(/Book/Authr) > > Notice that Author has been accidentally misspelled in the XPath > expression. > > The XML document conforms to this XML Schema: > > <?xml version="1.0" encoding="UTF-8"?> > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" > elementFormDefault="qualified"> > <xs:element name="Book"> > <xs:complexType> > <xs:sequence> > <xs:element ref="Title" /> > <xs:element ref="Author" minOccurs="0" > maxOccurs="unbounded" /> > <xs:element ref="Date" /> > <xs:element ref="ISBN" /> > <xs:element ref="Publisher" /> > </xs:sequence> > </xs:complexType> > </xs:element> > <xs:element name="Title" type="xs:string"/> > <xs:element name="Author" type="xs:string"/> > <xs:element name="Date" type="xs:string"/> > <xs:element name="ISBN" type="xs:string"/> > <xs:element name="Publisher" type="xs:string"/> > </xs:schema> > > I executed the XPath using the non-schema-aware version of SAXON and > got the result: 0 > > That is what I expected. > > Then I executed the XPath using the schema-aware version of SAXON and > got the same result. > > That is NOT what I expected. > > I expected SAXON to detect, by consulting the XML Schema, that Authr is > not a legal child of Book and generate an error at compile-time. > > Note that this is a particularly troubling problem, since the XML > Schema declares the number of occurrences of the <Author> element to be > 0-to-unbounded; thus, a result of 0 is a legitimate value and the > misspelling error may go undetected for a long time. > > QUESTIONS > > 1. Is it the responsibility of a schema-aware processor to catch > misspelled tag names in XPath expressions? > > 2. Is there a flag that I can set in SAXON to tell it to catch such > misspelling errors? > > 3. Are there any XSLT/XPath 2.0 processors that will match such > misspelling errors? > > 4. Let me assume the answers to the three questions are No. Then ... > > 4.1 Is there a way to redesign the XPath such that the misspelling > error would be caught? > > 4.2 Is there a way to redesign the XPath such that the misspelling > error would be caught, regardless of whether a schema-aware or > non-schema-aware processor is being used? > > Thanks! > > /Roger
|
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
|