[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: XSLT problem
Fantastic. :) It works with the examples I have provided you. But I should have said in first place that the <UnitArtInfo> can have more than 3 sub elements. 1) So I wish to copy all the rest elements between <UnitArtInfo> and </UnitArtInfo> that could be there, inclusive this functionality that you have already successfully implemented (Button). I tried to change your code to <xsl:apply-templates select="@* | node()"/> but still didn't succeed. 2) All other Elements that do not match the list (e.g. Lion) should only be copied over in the output like Zeppelin, but without a <Button> Element. New Expected Output: <Civ4ArtDefines xmlns="x-schema:CIV4ArtDefinesSchema.xml"> <UnitArtInfos> <UnitArtInfo> <Type>ART_DEF_UNIT_LION</Type> <fScale>0.61</fScale> </UnitArtInfo> <UnitArtInfo> <Type>ART_DEF_UNIT_ZEPPELIN</Type> <Button>Art/Interface/Buttons/Units/Zeppelin.dds</Button> <fScale>0.70</fScale> </UnitArtInfo> </UnitArtInfos> </Civ4ArtDefines> Would that be possible? Many Thanks, Houman -----Original Message----- From: Martin Honnen [mailto:Martin.Honnen@xxxxxx] Sent: 18 August 2008 14:47 To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: XSLT problem Houman Khorasani wrote: > Expected Output XML: > > <Civ4ArtDefines xmlns="x-schema:CIV4ArtDefinesSchema.xml"> > <UnitArtInfos> > <UnitArtInfo> > <Type>ART_DEF_UNIT_ZEPPELIN</Type> > > <Button>Art/Interface/Buttons/Units/Zeppelin.dds</Button> > <fScale>0.70</fScale> > </UnitArtInfo> > </UnitArtInfos> > </Civ4ArtDefines> The following stylesheet produces the output you have listed above: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="x-schema:CIV4ArtDefinesSchema.xml" xmlns:a="x-schema:CIV4ArtDefinesSchema.xml" exclude-result-prefixes="a" version="1.0"> <xsl:output method="xml" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:variable name="unitInfo" select="document('')/xsl:stylesheet/a:UnitInfos/a:Unit"/> <UnitInfos xmlns="x-schema:CIV4ArtDefinesSchema.xml"> <Unit> <Type>ART_DEF_UNIT_ZEPPELIN</Type> <Button>Art/Interface/Buttons/Units/Zeppelin.dds</Button> </Unit> </UnitInfos> <xsl:template match="@* | node()"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> <xsl:template match="a:UnitArtInfo[a:Type = document('')/xsl:stylesheet/a:UnitInfos/a:Unit/a:Type]"> <xsl:copy> <xsl:apply-templates select="@* | a:Type"/> <xsl:element name="Button"> <xsl:value-of select="$unitInfo[a:Type = current()/a:Type]/a:Button"/> </xsl:element> <xsl:apply-templates select="a:fScale"/> </xsl:copy> </xsl:template> <xsl:template match="a:UnitArtInfo[not(a:Type = document('')/xsl:stylesheet/a:UnitInfos/a:Unit/a:Type)]"/> </xsl:stylesheet> That assumes you want to process those UnitArtInfo elements for which the Type is listed in the stylesheet data. -- Martin Honnen http://JavaScript.FAQTs.com/ This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify the system manager. This message contains confidential information and is intended only for the individual named. If you are not the named addressee you should not disseminate, distribute or copy this e-mail.
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|