Subject: Re: select element based on value of one of the children
From: Ragulf Pickaxe <ragulf.pickaxe@xxxxxxxxx>
Date: Tue, 11 Oct 2005 11:28:08 +0200
|
Hi Bjorn,
> Dear reader,
> As a XML and XSL newbie I would like to know whether it is possible to
> select an element based on the value of one of children and how this can
> best be done.
>
<xsl:template match="a[b='7']">
<xsl:copy-of select="."/>
</xsl:template>
If you wish to do further processing rather than just a copy, you can
apply templates instead. What it is saying is that it should match all
a elements with a child element b whose value is equal to '7'. The
XSLT parser makes an implicit conversion to a string, but otherwise
you might use [string(b)='7'] instead.
> P.S. I tried to do my "homework" and found the following example
> http://www.dpawson.co.uk/xsl/sect2/N3235.html#d4086e214. I, however, do
> not understand what their solution to the problem is.
What this says (from your homework):
<xsl:apply-templates mode="copy"
select="record[data-field/subfield='0039-0310X']" />
Is to apply templates to all record elements that have a child
data-field with another child whose string value is equal to
'0039-0310X'. They use mode so that the template matching * (all
elements) is not invoked by default.
Hope this helps.
Regards,
Ragulf Pickaxe :-)
|