|
Subject: Fw: [xsl] Replacing values in the input file with values from a second file From: Hermann Stamm-Wilbrandt <STAMMW@xxxxxxxxxx> Date: Tue, 7 Apr 2009 18:52:23 +0200 |
Martin,
nice, but the Bananas are missing ...
[stammw twoFiles]$ xsltproc doit.xsl doc.xml
<?xml version="1.0"?>
<topic id="A">
<title>Menus</title>
<topic id="AB">
<title>Menu AB Details</title>
<body>>
<p id="AB1">
<uicontrol>Oranges</uicontrol>
</p>
<p id="AB2">
<uicontrol>Apples</uicontrol>>
<uicontrol></uicontrol>
</p>
</body>
</topic>
</topic>
rh73[main]-[stammw twoFiles]$
Mit besten Gr|_en / Best wishes,
Hermann Stamm-Wilbrandt
Developer, XML Compiler
WebSphere DataPower SOA Appliances
----------------------------------------------------------------------
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter
Geschdftsf|hrung: Erich Baier
Sitz der Gesellschaft: Bvblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294
----- Forwarded by Hermann Stamm-Wilbrandt/Germany/IBM on 04/07/2009 06:50
PM -----
Martin Honnen
<Martin.Honnen@gm
x.de> To
xsl-list@xxxxxxxxxxxxxxxxxxxxxx
04/07/2009 03:29 cc
PM
Subject
Re: [xsl] Replacing values in the
Please respond to input file with values from a
xsl-list@xxxxxxxx second file
lberrytech.com
Mark Peters wrote:
> Hi Everyone,
>
> I have a seemingly simple transformation project, but there is a piece
> of the puzzle that I'm missing. Maybe the solution isn't so simple,
> after all. :-)
>
>
> Here is my input file.
>
> <topic id="A">
> <title>Menus</title>
> <topic id="AB">
> <title>Menu AB Details</title>
> <body>
> <p id="AB1">
> <uicontrol conref="AB1a"/>
> </p>
> <p id="AB2">
> <uicontrol conref="AB2a"/>
> <uicontrol conref="AB2b"/>
> </p>
> </body>
> </topic>
> </topic>
>
> For each uicontrol element, I'd like to substitute the element value
> in a second file, whose id attribute value corresponds to the conref
> value in the first file.
>
> Here is the second file (navigation-labels.xml):
>
> <topic id ="navigation-labels">
> <title>Navigation Labels</title>
> <body>
> <p><uicontrol id="AB1a">Oranges</uicontrol></p>
> <p><uicontrol id="AB2a">Apples</uicontrol></p>
> <p><uicontrol id="AB3b">Bananas</uicontrol></p>
> </body>
> </topic>
>
>
> Here is the output I'm trying to produce:
>
> <topic id="A">
> <title>Menus</title>
> <topic id="AB">
> <title>Menu AB Details</title>
> <body>
> <p id="AB1">
> <uicontrol>Oranges</uicontrol>
> </p>
> <p id="AB2">
> <uicontrol>Apples</uicontrol>
> <uicontrol>Bananas</uicontrol>
> </p>
> </body>
> </topic>
> </topic>
Here is an example stylesheet:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output indent="yes"/>
<xsl:key name="uic" match="uicontrol" use="@id"/>
<xsl:variable name="uic-doc" select="document
('navigation-labels.xml')"/>
<xsl:template match="uicontrol">
<xsl:variable name="ref" select="@conref"/>
<xsl:copy>
<xsl:for-each select="$uic-doc">
<xsl:value-of select="key('uic', $ref)"/>
</xsl:for-each>
</xsl:copy>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
--
Martin Honnen
http://JavaScript.FAQTs.com/:
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Replacing values in the i, Mark Peters | Thread | Re: Fw: [xsl] Replacing values in t, Martin Honnen |
| Re: [xsl] Replacing values in the i, Mark Peters | Date | Re: Fw: [xsl] Replacing values in t, Martin Honnen |
| Month |