|
Subject: [xsl] Replacing values in the input file with values from a second file From: Mark Peters <flickrmeister@xxxxxxxxx> Date: Tue, 7 Apr 2009 09:14:35 -0400 |
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>
I've tried if statements and choose statements. Here is my current
transformation.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="uicontrol">
<uicontrol>
<xsl:value-of
select="document('navigation-labels.xml')/topic/body/p/uicontrol[document('navigation-labels.xml')/topic/body/p/uicontrol
= .]"/>
</uicontrol>
</xsl:template>
</xsl:stylesheet>
And here is the current output. For each uicontrol element, the
transformation is substituting the first uicontrol element value in
the navigation-labels.xml file, rather than the value from the
corresponding uicontrol element.
<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>Oranges</uicontrol>
<uicontrol>Oranges</uicontrol>
</p>
</body>
</topic>
</topic>
Thanks in advance for any help!
Mark
--
Mark Peters
Senior Technical Writer
Saba Software
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] Count number of specific , Michael Kay | Thread | Re: [xsl] Replacing values in the i, Martin Honnen |
| RE: [xsl] Count number of specific , Michael Kay | Date | Re: [xsl] Replacing values in the i, Martin Honnen |
| Month |