RE: [xsl] xpath problem

Subject: RE: [xsl] xpath problem
From: "Andrew Welch" <ajwelch@xxxxxxxxxxxxxxx>
Date: Tue, 14 Jun 2005 14:26:14 +0100
> hi ever one
>
> from the fllowing xml fragment
> <AA>
> <BB>
> <category cat_id="1">one</category>
> <category cat_id="2">one</category>
> <category cat_id="3">two</category>
> <category cat_id="4">three</category>
> <BB>
> <CC>
> <sb-category  id="1"  category="1">one</category>
> <sb-category  id="2"  category="1">one</category>
> <sb-category  id="3"  category="1">two</category>
> <sb-category  id="4"  category="3">three</category>
> <CC>
> <AA>
>
>
> i am trying to output all sub-category  within <CC>
> corspondes to a particuler category within <BB>
>
> my last attempet to achive the desired result was the
> following but is wrong
>
> can any one please help

Your XML sample isn't well-formed, it should really be:

<AA>
	<BB>
		<category cat_id="1">one</category>
		<category cat_id="2">one</category>
		<category cat_id="3">two</category>
		<category cat_id="4">three</category>
	</BB>
	<CC>
		<sb-category  id="1"  category="1">one</sb-category>
		<sb-category  id="2"  category="1">one</sb-category>
		<sb-category  id="3"  category="1">two</sb-category>
		<sb-category  id="4"  category="3">three</sb-category>
	</CC>
</AA>

To access <CC>/<sb-category> from within <BB>/<category> you could use:

<xsl:template match="category">
  <xsl:apply-templates select="//sb-category[@category =
current()/@cat_id]"/>

This will match any sb-category in the whole document (// means
descentant-or-self from the root).

To make the xpath more specific, you could use:

  <xsl:apply-templates
select="parent::BB/following-sibling::CC/sb-category[@category =
current()/@cat_id]"/>

Cheers
andrew

Current Thread