File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes XML and Related Technologies and the fly likes Simple XSL problem: parent attributes Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Engineering » XML and Related Technologies
Bookmark "Simple XSL problem: parent attributes" Watch "Simple XSL problem: parent attributes" New topic
Author

Simple XSL problem: parent attributes

Dave Flynn
Greenhorn

Joined: May 09, 2001
Posts: 1
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

Joined: Aug 26, 2000
Posts: 10065
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.

Uncontrolled vocabularies
"I try my best to make *all* my posts nice, even when I feel upset" -- Philippe Maquet
Sanjay Mishra
Ranch Hand

Joined: Jul 08, 2000
Posts: 84
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
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Simple XSL problem: parent attributes