xsl-list
[Top] [All Lists]

Re: [xsl] Distinguish between empty string and no children, in XPath 2?

2008-09-05 08:58:26
Let's say we have a schema (maybe expressed in XML Schema, but not
necessarily so), that allows this instance document:

<top>
 <txt>This is text</txt>
 <books>
   <book>Tarzan</book>
   <book>Harry Potter</book>
 </books>
</top>

The text /top/txt may be empty, and the element /top/books may have no
children, so this instance document is also allowed:

<top>
 <txt/>
 <books/>
</top>

I now want to write an XPath expression that selects all nodes that do
not have child elements in the schema. It would always select /top/txt
and it would never select /top/books, even in the second example
above.

With XPath 1.0, this is not possible, since schema information is not
used there. But can it be done in XPath 2.0?

Ken:
Unless, perhaps, you had the flexibility in your schema to define a base
type with your own name that is a very generic type that allows only element
children of any name, and then specialize all of your element-content
element types on that type restricting each one to the child elements for
that particular type.  Then in your XPath you can test elements as being an
element of your named generic type and it would be checking that the element
is one that has element content.

Instead of applying the xpath to the instance document, don't you just
want to apply it to the schema - select all simpleTypes ?

I don't know if you can tell from the PSVI whether a given type is a
simpleType or complexType, but that would do it... maybe "castable as
xs:anyAtomicType" ?

Just thinking out loud...



-- 
Andrew Welch
http://andrewjwelch.com
Kernow: http://kernowforsaxon.sf.net/

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--