Wrox Programmer Forums
Go Back   Wrox Programmer Forums > XML > XSLT
|
XSLT General questions and answers about XSLT. For issues strictly specific to the book XSLT 1.1 Programmers Reference, please post to that forum instead.
Welcome to the p2p.wrox.com Forums.

You are currently viewing the XSLT section of the Wrox Programmer to Programmer discussions. This is a community of software programmers and website developers including Wrox book authors and readers. New member registration was closed in 2019. New posts were shut off and the site was archived into this static format as of October 1, 2020. If you require technical support for a Wrox book please contact http://hub.wiley.com
 
Old August 21st, 2015, 07:21 AM
Registered User
 
Join Date: Aug 2015
Posts: 2
Thanks: 0
Thanked 0 Times in 0 Posts
Default How to print full path from an Xml using Xsl

Hello,

Below is the Xml.
<Dimension name="Product" >
<Member name="MAHierarchy1" />
<Member name="MAFolder3" >
<Member name="MAFolder4" >
<Member name="MAFolder5" >
<Member name="MAHierarchy2" />
<Member name="MAHierarchy3" />
<Member name="MAHierarchy4" />
<Member name="MAHierarchy5" />
<Member name="MAHierarchy6" />
<Member name="MAHierarchy7" />
</Member>
<Member name="MAFolder6" >
<Member name="MAHierarchy8" />
<Member name="MAHierarchy9" />
</Member>
</Member>
<Member name="MAFolder7" >
<Member name="MAFolder8" >
<Member name="MAHierarchy10" />
</Member>
<Member name="MAFolder9" >
<Member name="MAHierarchy11" />
<Member name="MAHierarchy12" />
<Member name="MAHierarchy13" />
</Member>
</Member>
</Member>
</Dimension>

Can any one tell me how to create fullpath like below by Xsl?

<Dimension name="Product" >
<Member name="MAHierarchy1" fullPath="Product" />
<Member name="MAFolder3" fullPath="Product">
<Member name="MAFolder4" fullPath="Product.MAFolder3">
<Member name="MAFolder5" fullPath="Product.MAFolder3.MAFolder4" >
<Member name="MAHierarchy2" fullPath="Product.MAFolder3.MAFolder4.MAFolder5"/>
<Member name="MAHierarchy3" fullPath="Product.MAFolder3.MAFolder4.MAFolder5"/>
<Member name="MAHierarchy4" fullPath="Product.MAFolder3.MAFolder4.MAFolder5"/>
<Member name="MAHierarchy5" fullPath="Product.MAFolder3.MAFolder4.MAFolder5"/>
<Member name="MAHierarchy6" fullPath="Product.MAFolder3.MAFolder4.MAFolder5"/>
<Member name="MAHierarchy7" fullPath="Product.MAFolder3.MAFolder4.MAFolder5"/>
</Member>
<Member name="MAFolder6" fullPath="Product.MAFolder3.MAFolder4">
<Member name="MAHierarchy8" fullPath="Product.MAFolder3.MAFolder4.MAFolder6"/>
<Member name="MAHierarchy9" fullPath="Product.MAFolder3.MAFolder4.MAFolder6"/>
</Member>
</Member>
<Member name="MAFolder7" fullPath="Product.MAFolder3">
<Member name="MAFolder8" fullPath="Product.MAFolder3.MAFolder7">
<Member name="MAHierarchy10" fullPath="Product.MAFolder3.MAFolder7.MAFolder8"/>
</Member>
<Member name="MAFolder9" fullPath="Product.MAFolder3.MAFolder7">
<Member name="MAHierarchy11" fullPath="Product.MAFolder3.MAFolder7.MAFolder9"/>
<Member name="MAHierarchy12" fullPath="Product.MAFolder3.MAFolder7.MAFolder9"/>
<Member name="MAHierarchy13" fullPath="Product.MAFolder3.MAFolder7.MAFolder9"/>
</Member>
</Member>
</Member>
</Dimension>
 
Old August 21st, 2015, 08:04 AM
Friend of Wrox
 
Join Date: Nov 2007
Posts: 1,243
Thanks: 0
Thanked 245 Times in 244 Posts
Default

Assuming an XSLT 2.0 processor like Saxon 9 or XmlPrime or Altova Raptor you can do it with
Code:
<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  exclude-result-prefixes="xs"
  version="2.0">
  
<xsl:template match="@* | node()">
  <xsl:copy>
    <xsl:apply-templates select="@* | node()"/>
  </xsl:copy>
</xsl:template>

<xsl:template match="Member">
  <xsl:copy>
    <xsl:apply-templates select="@*"/>
    <xsl:attribute name="fullPath" select="ancestor::*/@name" separator="."/>
    <xsl:apply-templates/>
  </xsl:copy>
</xsl:template>

</xsl:stylesheet>
__________________
Martin Honnen
Microsoft MVP (XML, Data Platform Development) 2005/04 - 2013/03
My blog
 
Old August 24th, 2015, 04:01 AM
Registered User
 
Join Date: Aug 2015
Posts: 2
Thanks: 0
Thanked 0 Times in 0 Posts
Default

Hi Martin, thanks for the code. I tried this but I am getting blank value like below. Please advice on this.

<?xml version="1.0"?>
<Dimension name="Product">
<Member name="MAHierarchy1" fullPath=""/>
<Member name="MAFolder3" fullPath="">
<Member name="MAFolder4" fullPath="">
<Member name="MAFolder5" fullPath="">
<Member name="MAHierarchy2" fullPath=""/>
<Member name="MAHierarchy3" fullPath=""/>
<Member name="MAHierarchy4" fullPath=""/>
<Member name="MAHierarchy5" fullPath=""/>
<Member name="MAHierarchy6" fullPath=""/>
<Member name="MAHierarchy7" fullPath=""/>
</Member>
<Member name="MAFolder6" fullPath="">
<Member name="MAHierarchy8" fullPath=""/>
<Member name="MAHierarchy9" fullPath=""/>
</Member>
</Member>
<Member name="MAFolder7" fullPath="">
<Member name="MAFolder8" fullPath="">
<Member name="MAHierarchy10" fullPath=""/>
</Member>
<Member name="MAFolder9" fullPath="">
<Member name="MAHierarchy11" fullPath=""/>
<Member name="MAHierarchy12" fullPath=""/>
<Member name="MAHierarchy13" fullPath=""/>
</Member>
</Member>
</Member>
</Dimension>
 
Old August 24th, 2015, 04:42 AM
Friend of Wrox
 
Join Date: Nov 2007
Posts: 1,243
Thanks: 0
Thanked 245 Times in 244 Posts
Default

See http://xsltransform.net/6qVRKxc, it works fine for me using an XSLT 2.0 processor like Saxon 9.
__________________
Martin Honnen
Microsoft MVP (XML, Data Platform Development) 2005/04 - 2013/03
My blog
 
Old August 27th, 2015, 10:10 AM
Authorized User
 
Join Date: Mar 2015
Posts: 34
Thanks: 3
Thanked 2 Times in 2 Posts
Default

Thanks @Martin for your link here.





Similar Threads
Thread Thread Starter Forum Replies Last Post
How to get full path of an XML node? swheeler XML 1 December 11th, 2009 05:28 AM
Extracting the full path of a folder vamshikrishnaD ASP.NET 1.0 and 1.1 Professional 3 August 2nd, 2007 09:16 PM
how to call file using full path labby C# 2005 4 September 27th, 2006 11:25 PM
Retrive full path name from uploaded file itsp PHP How-To 3 June 10th, 2003 07:02 AM





Powered by vBulletin®
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Copyright (c) 2020 John Wiley & Sons, Inc.