|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: select elements based on another element's attribu
Hi Lars,
Before helping, I'd like to thank you for your excellently written
question. You provided a sample source, a sample output and the code
that you'd written so far, showing that you'd thought about the
problem and exactly where you were needed help. This makes it very
easy to understand what you're asking and very easy to answer. I wish
more questions were written like yours.
Anyway, to answer your question:
> During processing, I would like to select all the attr elements of
> the widget that have a "corresponding" attribute in the widget-ref
> element. Alternatively, I would like to select all the attributes of
> the widget-ref elements that have a "corresponding" attr element in
> the widget element. With "corresponding" I mean that the widget-ref
> attribute name is equal to the attr/@name, and as an additional
> constraint, the attr/@public must be "true".
Because the name() function returns the name of only the first node,
it's easiest to try to compare one name() with multiple @names than it
is to try to compare one @name with multiple name()s, so the easiest
way round is to select all the attributes of the widget-ref
elements...
$widget-ref/@*
whose name() is equal to...
$widget-ref/@*[name() = ...]
the @name of an attr element under the $widget...
$widget-ref/@*[name() = $widget/attrs/attr/@name]
with the proviso that you're only interested in attr elements whose
public attribute has the value 'true'...
$widget-ref/@*[name() = $widget/attrs/attr[@public = 'true']/@name]
To save processing, as they're the same for each $widget-ref
attribute, you should probably store the names of the relevant attr
elements in a separate variable:
<xsl:variable name="widget-attrs"
select="$widget/attrs/attr[@public = 'true']/@name" />
<xsl:for-each select="$widget-ref/@*[name() = $widget-attrs]">
...
</xsl:for-each>
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
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








