Re: [xsl] Using Lookup file in XSLT to cross reference old and pull in new numbers

Subject: Re: [xsl] Using Lookup file in XSLT to cross reference old and pull in new numbers
From: "Martin Honnen martin.honnen@xxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 6 Apr 2021 20:27:49 -0000
On 06.04.2021 19:05, Deiter, Cathy E (US) cathy.deiter@xxxxxxxxxxxxxx wrote:
I am a Newbie and am having difficulties with an XSLT doing a lookup. I
need to lookup up an old file number based off of an attribute, look at
the lookup file and pull in the new number. I am using Oxygen Editor
version 22.1.

My XML file looks like this. I need to find the highlighted file in my
lookup and replace with the new file number.
<step1 id="M20340-03.01.01">
<para> Install access cover. <xref wpid="M20236" pretext="(" posttext=")"/>
<step1 id="M20340-03.01.02">
<para> Fill cooling system to proper fluid level. <xref wpid="M20333"
pretext="(" posttext=")"/>

My Lookup file looks like this (only added a few rows)
<row><NewFile id="M20236">M20016-9-2350-372</Newfile></row>
<row><NewFile id="M20234">M20381-9-2350-372</Newfile></row>
<row><NewFile id="M20232">M20017-9-2350-372</Newfile></row>

This is my XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="
<xsl:output method="xml" indent="yes"/>
<xsl:include href="copy.xsl"/>

<xsl:template match="xref">
<xsl:variable name="OLDFILE"><xsl:value-of

<xsl:attribute name="wpid">
<xsl:when test="$OLDFILE = document($NEWFILE)//NewFile/@id">
<xsl:value-of select="document($NEWFILE)//NewFile[@id=$OLDFILE]"/>
<xsl:copy-of select="."></xsl:copy-of>
Currently it is only returning the original value, not the new file number.

The check in the xsl:when should work I think, unless one of the XML files uses namespaces you haven't shown in the samples.

On the other hand, "it is only returning the original value" sounds odd
or suggests not even the
works (due to namespaces?), as with a match for those elements where the
xsl:when doesn't evaluate to true you would simply create a new "xref"
with an empty "wpid" attribute as your "xref" input elements are empty,
meaning the <xsl:copy-of select="."></xsl:copy-of> can't create any output.

Current Thread