[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Help parsing a node

Subject: Re: [xsl] Help parsing a node
From: Martin Honnen <Martin.Honnen@xxxxxx>
Date: Thu, 26 Apr 2012 18:46:47 +0200

Michele R Combs wrote:

I didn't write this line of code -- it's in a style sheet I'm attempting to comprehend -- so I don't want to change anything until I understand what it's doing. But more to the point, it actually is working 99% of the time. There's just one single case where it's counting something as unique when it shouldn't and I have no idea why,, which is why I'm trying to understand precisely what it is selecting and how. The line I cited:

<xsl:variable name="uniqueTypes" select="ead/archdesc/dsc/descendant::*/container[not(@type=following::*/container/@type)]/@type" />

appears at the very start of the style sheet, at which point yes, there is an element<ead> and yes, it will find something. Hence my first question: what precisely is this selecting and how? I *think* that it is selecting certain @type attributes from various<container> elements but I'm not sure which ones, or how it knows that they're unique.

The variable $uniqueTypes is then used later at various places in the code, for example:

<xsl:for-each select="$uniqueTypes">

Hence my second question, whether $uniqueTypes is the same no matter where it gets used later.

A variable gets one value and that value never changes, even if the variable is used in different locations.

If the xsl:variable element is a child of the xsl:stylesheet element then it is a global variable and then I think a relative path is evaluated relative to the initial context node which is usually the root node (also called document node).

I don't see why you would get different results with the same variable used in different places unless there is local parameter or variable of the same name hiding the global one.


	Martin Honnen --- MVP Data Platform Development

Current Thread