Matching in IDREFS attributes

Subject: Matching in IDREFS attributes
From: Jean Daniel Fekete 8208 <Jean-Daniel.Fekete@xxxxxx>
Date: Thu, 15 Jul 1999 19:39:18 +0200

I am new to this list and, although I searched in the archives and
didn't found any similar request, I may have misread or misunderstood
the specs.

I have XML elements with an ANA attribute of type IDREFS.  I want to
iterate over these refs in XSL and create an hypertext link to each
referenced id.  I am using TEILite so I have something like:


<INTERP ID="MASCULIN" VALUE="Sexe masculin"/>

and I want:

Jehan Basset (<A HREF="#CRIMINEL">1</A>, <A HREF="#MASCULIN">2</A>)

I don't care too much about what is inside the <A>..</A> though.

2nd problem, probably harder: I would also like to have a two-way
linking where the <INTERP ...> points back to all its references.

Here is how I did it with IE5 "context()" extension to XSL:

<xsl:template match="INTERP">
 <xsl:if test="ancestor(TEXT)/BODY//*[@ANA=context()/@ID]">
   <xsl:attribute name="NAME"><xsl:value-of select="@ID"/></xsl:attribute>
   <xsl:value-of select="@VALUE"/>:
  </A><SPAN style="color: blue;">
   <xsl:for-each select="ancestor(TEXT)/BODY//*[@ANA=context()/@ID]">
    <xsl:attribute name="HREF">#<xsl:value-of select="@ANA"/>-<xsl:eval>ChildNumber(this)</xsl:eval></xsl:attribute>
    <xsl:value-of select="."/>

However, it doesn't work when @ANA is a list since there is no "member 
of" operator as far as I know in XSLT.

Is there any way to do it with XSLT?

  Jean-Daniel Fekete
  Ecole des Mines de Nantes, 4 rue Alfred Kastler, La Chantrerie,
  BP 20722, 44307 Nantes Cedex 03, France
  Voice: +33-2-51-85-82-08  | Fax: +33-2-51-85-82-49
  Jean-Daniel.Fekete@xxxxxx |

 XSL-List info and archive:

Current Thread