Subject: Re: [xsl] XPath attribute expression From: Alexey Nickolaenkov <nikolaenkov@xxxxxxxxxxxx> Date: Tue, 19 Dec 2006 10:28:38 +0300 |
Tuesday, December 19, 2006, 2:27:52 AM, you wrote: HDL> Assume that my document has this structure: HDL> <topLevel> HDL> <ents> HDL> <ent name="abc"><value>test1</value></ent> HDL> <ent name="def"><value>test2</value></ent> HDL> </ents> HDL> . HDL> . HDL> . HDL> <para>This is a <entRef name="def"/>.</para> HDL> What XPath expression can I use in context of this <entRef> element to HDL> reference the content of the <value> element that matches the <ent> name HDL> attribute (as shown above). I've gotten this far: HDL> /topLevel/ents/ent[@name]/value HDL> But, that always returns the first value. Somehow I need to test @name HDL> that equals the "name" of the current tag. I think that problem is not in XPath but in templates. I suppose something like that will suit for you: <xsl:key name="ents-by-name" use="@name" match="//ents/ent"/> <xsl:template match="topLevel"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"/> <title>test</title> </head> <body> <xsl:apply-templates select="page"/> </body> </html> </xsl:template> <xsl:template match="para"> <p><xsl:apply-templates select="@*|node()"/></p> </xsl:template> <xsl:template match="entRef"> <xsl:variable name="ent-name" select="key('ents-by-name', @name)"/> <b> <xsl:choose> <xsl:when test="$ent-name"> <xsl:value-of select="$ent-name"/> </xsl:when> <xsl:otherwise> <xsl:text/>Undefined ent </xsl:otherwise> </xsl:choose> </b> </xsl:template> -- Alexey mailto:alexey.nikolaenkov@xxxxxxxxxxxx
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] XPath attribute expressio, David Carlisle | Thread | RE: [xsl] XPath attribute expressio, Hintz, David L |
Re: [xsl] Apache FOP Border, Tony Lavinio | Date | [xsl] key() and document() - scopin, Bryn Lewis |
Month |