[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: XSLT2 node comparison, wordlists

Subject: Re: XSLT2 node comparison, wordlists
From: "James Cummings" <cummings.james@xxxxxxxxx>
Date: Thu, 25 Oct 2007 01:35:39 +0100
Re:  XSLT2 node comparison
On 10/24/07, Michael Kay <mike@xxxxxxxxxxxx> 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

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2011 All Rights Reserved.