[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Re: Re-arranging an XML file

Subject: Re: Re: Re-arranging an XML file
From: George Cristian Bina <george@xxxxxxxxxxxxx>
Date: Tue, 20 Jan 2009 10:41:51 +0200
Re:  Re: Re-arranging an XML file
Hi Mike,

I do not understand what is the part you have difficulties with. You can define a key to get the Author elements from their id and then just use that, see below:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes" />
<xsl:key name="artistById" match="Artist" use="Number"/>
<xsl:template match="/">
<xsl:apply-templates select="*/AddedAlbums"/>
</xsl:template>
<xsl:template match="AddedAlbums">
<AddedAlbums><xsl:apply-templates/></AddedAlbums>
</xsl:template>
<xsl:template match="Album">
<Album><xsl:apply-templates/></Album>
</xsl:template>
<xsl:template match="AlbumName">
<AlbumName><xsl:value-of select="."/></AlbumName>
</xsl:template>
<xsl:template match="ArtistNumber">
<Name><xsl:value-of select="key('artistById', .)/Name"/></Name>
</xsl:template>
<xsl:template match="*|text()"/>
</xsl:stylesheet>


Best Regards,
George
--
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com

Mike Stroud wrote:
Dear Group,

Further to my mail of Date: Tue, 13 Jan 2009: I am still struggling
with this one. Here is an adaptation of a real-world example:

<?xml version="1.0" encoding="UTF-8"?>
<wc:COLLECTION xmlns:wc="http://www.ptc.com/infoengine/1.0">
<DeletedArtists NAME="DeletedArtists" TYPE="Unknown" STATUS="0">
</DeletedArtists>
<AddedArtists NAME="AddedArtists" TYPE="Unknown" STATUS="0">
<Artist>
    <LastChangedBy>Mike</LastChangedBy>
    <Number>0000000015</Number>
    <Name>Bob Dylan</Name>
</Artist>
<Artist>
    <LastChangedBy>Mike</LastChangedBy>
    <Number>0000000016</Number>
    <Name>Bonnie Tyler</Name>
</Artist>
</AddedArtists>
<DeletedAlbums NAME="DeletedAlbums" TYPE="Unknown" STATUS="0">
</DeletedAlbums>
<AddedAlbums NAME="AddedAlbums" TYPE="Unknown" STATUS="0">
<Album>
    <ArtistNumber>0000000015</ArtistNumber>
    <AlbumNumber>0000000010</AlbumNumber>
    <AlbumName>Blood on the Tracks</AlbumName>
</Album>
<Album>
    <ArtistNumber>0000000015</ArtistNumber>
    <AlbumNumber>0000000011</AlbumNumber>
    <AlbumName>Empire Burlesque</AlbumName>
</Album>
<Album>
    <ArtistNumber>0000000016</ArtistNumber>
    <AlbumNumber>0000000020</AlbumNumber>
    <AlbumName>Hide Your Heart</AlbumName>
</Album>
</AddedAlbums>
</wc:COLLECTION>

How can I turn that into something like this using XSL?

<AddedAlbums>
  <Album>
    <Name>Bob Dylan</Name>
    <AlbumName>Blood on the Tracks</AlbumName>
  </Album>
  <Album>
    <Name>Bob Dylan</Name>
    <AlbumName>Empire Burlesque</AlbumName>
  </Album>
  <Album>
    <Name>Bonnie Tyler</Name>
    <AlbumName>Hide Your Heart</AlbumName>
  </Album>
</AddedAlbums>

Many thanks,

Mike in SA
ps: Please don't think that I'm a great fan of Bonnie Tyler! I don't
think I could even name one of her songs!
M.

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.