• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Simple XSL problem: parent attributes

 
Dave Flynn
Greenhorn
Posts: 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
My XML looks like this:

<A name"alpha">
<B id="0">zero</B>
<B id="1">one</B>
</A>

What I want to output is this:

alpha:zero
alphane

If I use some XSL to style this...

<xsl:for-each select="A\B">
<xsl:value-of select="???" />:<xsl:value-of select="." />
</xsl:for-each>

...what do I use in ??? to select the parent attribute @name? What if B has an attribute @name too? Are there any other ways to do this that you can think of?

*had to disable similies :P
[This message has been edited by Dave Flynn (edited May 09, 2001).]
 
Mapraputa Is
Leverager of our synergies
Sheriff
Posts: 10065
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Dave, you can use <xsl:value-of select="../@name"/> construction
".." is a shorthand for parent axis, so "../@name" will select name attribute of parent element only.
 
Sanjay Mishra
Ranch Hand
Posts: 84
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Dave,
I am posting both xml file and xsl file which will produce
the result you want. This is based upon what Mapraputa has said.
XML File: "1.xml"
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="1.xsl"?>
<A name="alpha">
<B id="0">zero</B>
<B id="1">one</B>
</A>
XSL File: "1.xsl"
<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<xsl:apply-templates />
</html>
</xsl:template>
<xsl:template match="A">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="B">
<P>
<xsl:value-of select="../@name"/> :
<xsl:value-of select="."/>
</P>
</xsl:template>
</xsl:stylesheet>
Regards
Sanjay
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic