Re: [xsl] inserting data from second file using key and document

Subject: Re: [xsl] inserting data from second file using key and document
From: "Jim Albright jim_albright@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 14 Jan 2019 12:23:15 -0000
Peter,
Wow!!!!
Such a small change. But it works!!!  Such a small change.  This moved it from
9 hours plus to 9 seconds.
And I had a bug to fix.  I forgot the [1] so it was inserting too much stuff.
<xsl:variable name="item_number" select="preceding::LEXDomain[1]"/>
Thank you Peter!!!

Jim Albright

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
    xmlns:xs="http://www.w3.org/2001/XMLSchema";
    exclude-result-prefixes="xs"
    version="2.0">

    <xsl:variable name="LN" select="document('LN-PT-converted2.html')"/>
    <xsl:key name="insert" match="html/body/p" use="@domain"/>

    <xsl:template match="Comments[parent::LEXSense[@LanguageCode='pt']]">
         <xsl:variable name="item_number" select="preceding::LEXDomain[1]"/>
        <xsl:element name="Comments">
           <xsl:apply-templates select="$LN/key('insert', $item_number)"/>
        </xsl:element>
    </xsl:template>

    <xsl:template match="span[@class='LNgrk']"/>
    <xsl:template match="span[@class='LNdfe']"/>
    <xsl:template match="span[@class='LNgle']"/>
    <xsl:template match="span[@class='LNill']"/>

    <!-- identify transform -->
    <xsl:template match="@*|*|processing-instruction()|comment()">
        <xsl:copy>
            <xsl:apply-templates
select="*|@*|text()|processing-instruction()|comment()"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

-----Original Message-----
From: Jim Albright jim_albright@xxxxxxxxxxxx
[mailto:xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx]
Sent: Monday, January 14, 2019 6:50 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] inserting data from second file using key and document

Peter

That is what I am trying to do but something is wrong with my attempt.  Any
clues?

    <xsl:variable name="LN" select="document('LN-PT-converted2.html')"/>
    <xsl:key name="insert" match="$LN/html/body/p" use="@domain"/>

  <xsl:template match="Comments[parent::LEXSense[@LanguageCode='pt']]">
  	 <xsl:variable name="item_number" select="preceding::LEXDomain"/>
   	<xsl:element name="Comments">
           		<xsl:apply-templates select="key('insert', $item_number)"/>
   	</xsl:element>
         </xsl:template>

-----Original Message-----
From: Pieter Masereeuw pieter@xxxxxxxxxxxx
[mailto:xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx]
Sent: Monday, January 14, 2019 12:46 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] inserting data from second file using key and document

Hi Jim,

I have once been struggling too to solve this. The way I do it now is by
placing the key() function after a variable that references a node in the
external document. E.g.:

<xsl:variable name="doc" select="doc('some-uri')"/> ...
<xsl:apply-templates select="$doc/key(...)"/>

Pieter

Current Thread