[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Help describing the behavior of a Path Expression

Subject: Re: Help describing the behavior of a Path Expression
From: "Bridger Dyson-Smith bdysonsmith@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 5 Jun 2019 16:19:58 -0000
Re:  Help describing the behavior of a Path Expression
Dr Kay -
Thanks for the explanation and the link - that's helpful and clarifying.


On Tue, Jun 4, 2019 at 6:07 PM Michael Kay mike@xxxxxxxxxxxx <
xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:

> There are three templates here, that match overlapping sets of nodes. None
> has an explicit priority, so each takes a default priority based on the
> form of the match pattern. The rules are here:
> https://www.w3.org/TR/xslt-30/#default-priority
> The rules indicate that the priority for "node()" is -0.5 (rule 10); the
> priority for "item" is 0 (rule 6), and the priority for
> "item[discount[...]]" is +0.5 (rule 11). Each <item> element selected by an
> xsl:apply-templates instruction is processed using the highest-priority
> rule that it matches.
> In this example the default rules for priorities have the desired effect.
> This isn't always the case. In more complex cases, it's good practice to
> allocate explicit priorities using the "priority" attribute.
> Michael Kay
> On 4 Jun 2019, at 21:06, Bridger Dyson-Smith bdysonsmith@xxxxxxxxx <
> xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
> Hi all -
> apologies for the awkward title. I was helping a coworker with a problem,
> where we wanted to ignore certain elements that didn't meet certain
> requirements. We had a working template for the elements with requirements,
> but how to make the processor ignore the others? My suggestion was to write
> an empty template for the element (`item` below), with the paraphrased
> explanation: "the processor with ignore the general expression but match on
> the specific expression", but I'm clueless about the "why doesn't the
> processor ignore all of the `item` elements, then?". I have the sense that
> explanation might be approximately right, but it (and I) would benefit from
> an improved understanding of what's actually happening.
> Would someone be willing to share some better words to describe this? Is
> it as easy as saying that since $expression-a (`item[discount]`) has a
> predicate, it has a higher precedence than $expression-b (`item`) (or maybe
> more simply: operator precedence - I see a note in Dr. Kay's XSLT/XPath 2.0
> book about this)?
> Thanks in advance for your time and trouble.
> Best,
> Bridger
> Here's a contrived example of our source document:
> <!-- source -->
> <items>
>   <item color="red" size="m">
>     <price>15.00</price>
>   </item>
>   <item color="blue" size="m">
>     <price>15.00</price>
>     <discount percentage="20"/>
>   </item>
>   <item color="yellow" size="l">
>     <price>15.00</price>
>     <discount percentage="10"/>
>   </item>
> </items>
> And a stylesheet:
> <!-- xsl -->
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>   xmlns:xs="http://www.w3.org/2001/XMLSchema"
>   exclude-result-prefixes="xs"
>   version="2.0">
>   <xsl:output encoding="UTF-8" method="xml" indent="yes"/>
>   <xsl:strip-space elements="*"/>
>   <!-- identity transform -->
>   <xsl:template match="@*|node()">
>     <xsl:copy>
>       <xsl:apply-templates select="@*|node()"/>
>     </xsl:copy>
>   </xsl:template>
>   <xsl:template match="item[discount[@percentage ge '15']]">
>     <discount-item color="{@color}" size="{@size}" price="{price}"
> discount="{discount/@percentage}"/>
>   </xsl:template>
>   <xsl:template match="item"/>
> </xsl:stylesheet>
> XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
> EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/293509> (by
> email)
> XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
> EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/1230532> (by
> email <>)

Current Thread


Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
First Name
Last Name
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.