[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
Re: [xml-dev] help with schematron (axis in pattern must be child or attribute)
- From: "G. Ken Holman" <gkholman@CraneSoftwrights.com>
- To: xml-dev@lists.xml.org
- Date: Sun, 17 Oct 2010 16:21:27 -0400
At 2010-10-17 12:04 -0700, trubliphone wrote:
>I have a question about Schematron. I don't know if this is a
>suitable forum, but it's worth a shot.
I think Schematron questions are entirely in scope here ... no
problem in my view.
>I have an XML file with certain elements with an attribute that can
>take one of a set of values. That set, however, change depending
>upon the position of the element. Here's a simplified sample:
>
><root>
> <!-- the 1st matching element -->
> <element match="true" value="one"/>
> <element match="false">
> <element match="false">
> <!-- the 2nd matching element -->
> <element match="true" value="two"/>
> </element>
> </element>
> <element match="false/>
> <!-- the 3rd matching element -->
> <element match="true" value="three/>
> ...
></root>
>
>I've been playing with XPath and the following expression will match
>all of the appropriate elements:
>
>"/descendant-or-self::node()[@match='true']"
All you need is "*[@match='true']" since only attributes can have
attached attributes. And this expression is, implicitly through an
abbreviation, accessing the child axis as the complete syntax is
"child::*[attribute::match='true']".
>I can narrow this down by adding "[position()=n]" and then check in
>an <assert> that @value is one of the allowable terms.
>
>In order to ensure that I don't miss out on any _nested_ elements
>(as with number 2 above) - the matching elements could be absolutely
>anyplace in the document - I search all descendants of the root element.
No need ... the expression I've given you above is context free ...
it will match elements at any depth of the tree.
>However, the above expression generates an error: "axis in pattern
>must be child or attribute".
Right, because you've used the "descendent-or-self::" axis and that
isn't allowed in a pattern expression, which is a subset of all expressions.
I hope this helps.
. . . . . . . . . Ken
--
XSLT/XQuery training: after http://XMLPrague.cz 2011-03-28/04-01
Vote for your XML training: http://www.CraneSoftwrights.com/x/i/
Crane Softwrights Ltd. http://www.CraneSoftwrights.com/x/
G. Ken Holman mailto:gkholman@CraneSoftwrights.com
Male Cancer Awareness Nov'07 http://www.CraneSoftwrights.com/x/bc
Legal business disclaimers: http://www.CraneSoftwrights.com/legal
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]