xsl-list
[Top] [All Lists]

Re: [xsl] XSLT2 node comparison, wordlists

2007-10-24 17:36:14
On 10/24/07, Michael Kay <mike(_at_)saxonica(_dot_)com> wrote:

Nice to see you back, James.

I like to stick my head above the lurking parapet occasionally ;-)

It's not easy, actually!
Oh good.  That is reassuring.  I did think I was just missing something obvious.

I implemented something which worked perfectly that was a combination
between your suggestion and Ken's, and used xsl:result-document to
stick the linkGrps in another file.  So thanks to you both!  If all
the people on this list that have helped me over the years decided to
collect on the number of beers I must owe them my local would run dry.
;-)

Of course, what I'm wondering now is the most efficient way to pull
out the first value from the correct
document('linkGrps.xml')linkGrp/link/@target when processing the text
in question so as to make links from it, to the entry in the wordlist
file.

Basically, say the XML in file.xml looks like:
====
<div>
    <l>
        <seg xml:id="w1">This</seg>
        <seg xml:id="w2">is</seg>
        <seg xml:id="w3">a</seg>
        <seg xml:id="w4">test</seg>.
    </l>
</div>
====
and linkGrps.xml looks like:
====
<div>
    <linkGrp>
        <link targets="wordlist.xml#let1-w1-vA file.xml#w3"/>
    </linkGrp>
    <linkGrp>
        <link targets="wordlist.xml#let8-w17-vB file.xml#w2"/>
    </linkGrp>
    <linkGrp>
        <link targets="wordlist.xml#let20-w25-vA file.xml#w1"/>
        <link targets="wordlist.xml#let20-w32-vC file.xml#w4"/>
    </linkGrp>
</div>
====

And in processing file.xml I want to output something like:
====
<div>
    <span class="l">
        <a id="w1" href="wordlist.html#let20-w25-vA">This</a>
        <a id="w2" href="wordlist.html#let8-w17-vB">is</a>
        <a id="w3" href="wordlist.html#let1-w1-vA">a</a>
        <a id="w4" href="wordlist.html#let20-w32-vc">This</a>
    </span>
</div>
====

Now the reason I'm concerned is that of course linkGrps.xml is quite
large.  Which was one of the reasons I decided to output these values
to a different file, rather than store them in a separate section of
wordlist.xml.  So I'm wondering what the best/quickest way is to get
the wordlist.xml#* token from the correct
document('linkGrps.xml')//linkGrp/link.  My current solution is
iterating over the nodes and matching the one whose tokenized @targets
contains the current file.xml id value.  But that seems rather brute
force and might not be efficiently scalable (I've not tested). I keep
thinking I should be using xsl:key but couldn't seem to get it to work
with document() properly.

Other suggestions?

-James
-- 
James Cummings, Cummings dot James at GMail dot com

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>