xsl-list
[Top] [All Lists]

How do I access the nodeset that the IDREF refers to?

2003-01-08 15:25:52
Hi all,

I'm not sure if I simply didn't use the right words, or I couldn't find the right combination of words, but I have not quite found the answer to my question in the FAQ or the archives.

Given a DTD similar to this:

<!ELEMENT root (subnode)*>
<!ELEMENT subnode (link)*>
<!ELEMENT link EMPTY>

<!ATTLIST subnode
    id     ID     #REQUIRED>

<!ATTLIST link
    idr    IDREF  #REQUIRED>

What I would like to know is how I can access the nodeset of the subnode element listed within the link element. An example xml file might be:

<root>
 <subnode id="a" />
 <subnode id="b">
   <link idr="c" />
   <link idr="d" />
 </subnode>
 <subnode id="c">
   <link idr="e">
 </subnode>
 <subnode id="d" />
 <subnode id="e" />
</root>


An application might be to sort the list of four subnodes (a,b,c,d) based on their links. An algorithm might be:
1. for every not(subnode/link), display subnode id
2. for every (subnode/link)
  2a. choose
        when link reference node contains link
           repeat step 2 with link reference node
        otherwise
           if link reference has not been displayed
               display link reference id
  2b. display subnode id


My question is essentially: how would I create a variable that contains the nodeset of the link reference? First I would need it to test the link to determine if the link itself had links. Next I would want to pass that link back into step two so that I could query its links.

Would the following XSL be something close?

   <xsl:variable name="linkRef">
       <xsl:value-of select="id(subnode/link[(_at_)idr])" />
   </xsl:variable>


Thanks in advance!
Bix

_________________________________________________________________
The new MSN 8 is here: Try it free* for 2 months http://join.msn.com/?page=dept/dialup


XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list