|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Replacing values in the input file with values from a
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
|
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
|






