|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: position() test for processing boundaries
Hi Michael and Wendell,
Thanks for your quick and helpful reactions! They guided me in the right direction toward a practical solution. Since I found one, I'll happily try to explain and share it. Just for reference purposes, I'll copy the example element hierarchy: <p>
<q n="1>
<app n="2">
<rdg n="3">rdg1</rdg>
<rdg n="4">rdg2</rdg>
<rdg n="5">rdg3</rdg>
</app>
[text]
<anchor n="6"/>
<app n="7">
<rdg n="8">rdg1</rdg>
<rdg n="9">rdg2</rdg>
<rdg n="10">rdg3</rdg>
</app>
</q>
[text]
<app n="11">
<rdg n="12">rdg1</rdg>
<rdg n="13">rdg2</rdg>
</app>
<anchor n="14"/>
<q n="15">
<app n="16">
<rdg n="17">rdg1</rdg>
<rdg n="18">rdg2</rdg>
<rdg n="19">rdg3</rdg>
</app>
[text]
<anchor n="20"/>
text
<app n="21" TEIform="app">
<rdg n="22">rdg1</rdg>
<rdg n="23">rdg2</rdg>
</app>
[text]
</q>
</p>I used the general <xsl:copy-of select="(.//*)[position() > 3]"/> instruction just for testing what went wrong with the <xsl:apply-templates select="(.//*)[position() < 6]/descendant-or-self::app"/> instruction in the stylesheet I'm developing. (I want to limit further processing of <app> elements by specifying start and end context position boundaries, in this case the first <anchor n="6"/> element.) On first consideration I thought it was an unexpected effect of the position() test causing the unwanted processing of <app n="2">
<rdg n="3">rdg1</rdg>
<rdg n="4">rdg2</rdg>
<rdg n="5">rdg3</rdg>
</app>
<app n="7">
<rdg n="8">rdg1</rdg>
<rdg n="9">rdg2</rdg>
<rdg n="10">rdg3</rdg>
</app>...instead of limiting it to just the <app n="2"> element. Closer inspection however showed that it rather was its combination with the "descendant-or-self::app" XPath step. This seemed too broad in (correctly, of course) selecting not just the <app> elements before the end context position, but also *all* descendant <app>s of all elements occurring before that position (explaining the inclusion of the <app n="7"> element). Your explications were illuminating enough for me to correctly identify my misunderstanding, and narrowing down the XPath step to "self::app". The instruction <xsl:apply-templates select="(.//*)[position() < 6]/self::app"/> finally does what I expect it to, selecting only the <app n="2"> element. And now I even know why (:-)) Thanks, Ron -- Ron Van den Branden Wetenschappelijk attachi Centrum voor Teksteditie en Bronnenstudie (CTB) Koninklijke Academie voor Nederlandse Taal- en Letterkunde (KANTL) Koningstraat 18 / b-9000 Gent / Belgium e-mail : ron.vandenbranden@xxxxxxxx http://www.kantl.be/ctb/staff/ron.htm
|
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
|

Cart








