Subject: Re: [xsl] 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 |
Dr Kay - Thanks for the explanation and the link - that's helpful and clarifying. Best, Bridger 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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Help describing the behav, Michael Kay mike@xxx | Thread | [xsl] Multiple Sort Key Components, Don Smith dsmith_loc |
Re: [xsl] Multiple Sort Key Compone, Don Smith dsmith_loc | Date | [xsl] Each value in an XPath array , Costello, Roger L. c |
Month |