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

Subject: [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 02:19:48 -0000
File #1 is Louw-Nida data translated into Portuguese:

<html>
<head></head>
<body>
o;?<p class='entry' domain='1.1' >
	<span class='LNgrk'><span class='k'>N:a=9ON<N?O</span><span
class='zsup'>a</span>, <span class='k'>N?O</span> <span
class='it'>m</span></span>
	<span class='LNdfe'>o universo como uma estrutura ordenada</span>
	<span class='LNgle'>cosmo, universo</span>
	<span class='LNill'><span lang='gk'>a= N8N5a=8O a= ON?N9a=5ON1O Oa=8N=
N:a=9ON<N?N= N:N1a=6 Oa=1N=ON1 Oa=0 a<N= N1a=Oa?7</span>, bo Deus que
fez o universo e tudo o que nele existeb (At 17.24). Em muitas lC-nguas,
nC#o existe termo especC-fico para o universo. O equivalente mais prC3ximo
pode ser simplesmente btudo o que existeb. Em outros casos, pode-se usar
uma locuC'C#o como bo mundo e tudo o que estC! acima deleb ou bo cC)u e
a terrab. Em algumas lC-nguas, o conceito da totalidade do universo pode ser
expresso apenas como btudo o que hC! na terra e no cC)ub.</span>
</p>
...
<p class='entry' domain='60.45' >
	<span class='LNgrk'><span class='k'>N<a=;ON9N?N9, N1N9, N1</span>; <span
class='k'>N<OON9a=1O</span><span class='znsup'>a</span>, <span
class='k'>a=1N4N?O</span> <span class='it'>f</span> b bdez
milb.</span>
	<span class='p2'><span class='ke'>N<a=;ON9N?N9:</span> <span
lang='gk'>N5a<7O a=ON5N9N;a=3ON7O N<OOa=7O	N= ON1N;a=1N=OO	N=</span>,
bum que lhe devia dez mil talentosb (Mt 18.24).</span>
	<span class='p2'><span class='ke'>N<OON9a=1O</span><span
class='zsup'>a</span>: <span lang='gk'>a<ON3OOa=7N?O N<OON9a=1N4N1O
Oa=3N=ON5</span>, bcinquenta mil moedas de pratab (At 19.19).</span>
</p>...


I want to insert the p into a second document based on the domain /1.1/

File #2 is the Semantic Domain of Biblical Greek:

<?xml version="1.0"?>
<Lexicon xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
  <Lexicon_Entry Id="000001000000000" Lemma="N1" Version="0"
HasAramaic="false">

 <BaseForms>
      <BaseForm Id="000001001000000">
        <LEXMeanings>
          <LEXMeaning Id="000001001001000" IsBiblicalTerm="Y">
            <LEXDomains>
              <LEXDomain>60.46</LEXDomain>
            </LEXDomains>
            <LEXSenses>
              <LEXSense LanguageCode="en" LastEdited="" LastEditedBy="">
                <DefinitionLong />
                <DefinitionShort>first in a series involving time, space, or
set</DefinitionShort>
                <Glosses>
                  <Gloss>first</Gloss>
                </Glosses>
                <Comments>Occurring only in titles of NT writings: OOa=8O
NN?ON9N=N8a=7N?OO N1 bFirst Letter to the Corinthiansb;
a<8O	a=1N=N=N?O N1 bFirst Epistle of John.b</Comments>
              </LEXSense>
              <LEXSense LanguageCode="pt" LastEdited="" LastEditedBy="">
                <DefinitionLong />
                <DefinitionShort>o primeiro numa sC)rie envolvendo tempo,
espaC'o ou ordem</DefinitionShort>
                <Glosses>
                  <Gloss>primeiro</Gloss>
                </Glosses>
                <Comments />
              </LEXSense>
   ...

I want to insert some contents from p from file #1 into file #2 into
/Comments/ found in /LanguageCode/=pt.

Desired output...
   <LEXSense LanguageCode="pt" LastEdited="" LastEditedBy="">
                <DefinitionLong />
                <DefinitionShort>o primeiro numa sC)rie envolvendo tempo,
espaC'o ou ordem</DefinitionShort>
                <Glosses>
                  <Gloss>primeiro</Gloss>
                </Glosses>
                <Comments >
	 	<span class='p2'><span class='ke'>N<a=;ON9N?N9:</span> <span
lang='gk'>N5a<7O a=ON5N9N;a=3ON7O N<OOa=7O	N= ON1N;a=1N=OO	N=</span>,
bum que lhe devia dez mil talentosb (Mt 18.24).</span>
		<span class='p2'><span class='ke'>N<OON9a=1O</span><span
class='zsup'>a</span>: <span lang='gk'>a<ON3OOa=7N?O N<OON9a=1N4N1O
Oa=3N=ON5</span>, bcinquenta mil moedas de pratab (At 19.19).</span>
 	</Comments
              </LEXSense>

My xslt

   <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="$LN/html/body/p[@domain=$item_number]"/>
        	</xsl:element>
        </xsl:template>

This works but takes 9 hours 30 minutes.

The following attempt yield nothing.

    <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>

I'm sure that /key/ should be much faster but am stuck getting it to work.
I know how to omit the LNxxx data.

Jim Albright
704-562-1529 unlimited cell
Wycliffe Bible Translators

Current Thread