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 |