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 17:33:52 -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>

I would always use a key e.g. declare

<xsl:key name="file-ref" match="row/NewFile" use="@id"/>

then simply use a template

   <xsl:template match="xref/@wpid[key('file-ref', ., doc('lookup.xml'))]">
      <xsl:attribute name="{name()}" select="key('file-ref', .,

All normal copying would be handled by the identity transformation.

Of course the path and the lookup document is bested stored in a global parameter or variable.

Current Thread