SV: [xsl] XML Question

Subject: SV: [xsl] XML Question
From: "Per Osnes" <per.osnes@xxxxxx>
Date: Wed, 4 Oct 2006 13:18:13 +0200
Hi folks,
This template gives the required output (in Altova).

<xsl:template match="//*[not(*)]">
<xsl:variable name="path">
<xsl:for-each select="ancestor::*"><xsl:value-of
select="name()"/>/</xsl:for-each>
<xsl:value-of select="name()"/>
</xsl:variable>
<xsl:text>
</xsl:text>
<xsl:value-of select="$path"/>
<xsl:value-of select="' ===> '"/>
<xsl:value-of select="text()"/>
</xsl:template>

Actually I wanted to replace the "for each" by something like 
  <xsl:value-of select="string-join(((name(ancestor::*)), name()), '/')"/>

but Altova gives error message "too many items"...
I have used this method earlier for producing the full path for elements in
an XML schema:
  select="string-join((ancestor::xs:element/@name, ./@name), '.')"

Any comments from the experts?

 - Per Osnes.


----- LINKE Markus <markus.linke@xxxxxxxx> wrote:
> Hi,
> 
> I am not sure if this is the right list for such a question, but lets
> try :)
> 
> I would like to create a list of xpaths via xsl from a given
> xml-structure like this:
> 
> <a>
>    <b>
>       <c>
>          content
>       </c>
>       <d>
>          morecontent
>       </d>
>    </b>
> </a>
> 
> it should show the full xpath like
> 
> a/b/c  ====>   content
> a/b/d  ====>   morecontent
> 
> and not just
> 
> c => content
> d => morecontent
> 
> Ideas anyone? I am looking for either a script or some xsl ...
> 
> Cheers,
> Markus

Current Thread