xsl-list
[Top] [All Lists]

Re: crossreferencing any element

2003-11-24 06:33:37
On Mon, 24 Nov 2003, David Carlisle wrote:

If your id attributes are  of type ID then you don't need
to explictly tokenize as the id() function is designed to work with
these space separated strings.

Ah! Now that makes sense.  Yes, the document has a DTD and @id is type
ID and corresp is type IDREFS.

that's what modes are for, when you want to generate the links use
apply-templates mode="link"
and have mode="link" on the link making templates.


In other words, assuming you have id or type ID

<xsl:template match="para">
  <p>
  <xsl:copy-of select="@id"/>
  <xsl:apply-templates select="id(@corresp)" mode="link"/>
  <xsl:apply-templates/>
  </p>
</xsl:template>

<xsl:template match="para" mode="link">
 <a href="#{(_at_)id}">[xref to <xsl:value-of select="@id"/>]</a>
</xsl:template>

Ok, that works when I know what the element is called.  When I
don't know what it is called, I'm assuming that I should then do
something like:

<xsl:template match="node()">
<xsl:copy>
 <xsl:copy-of select="@id"/>
 <xsl:apply-templates select="id(@corresp)" mode="link"/>
 <xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>


-James
---
Dr James Cummings, Oxford Text Archive, 
James(_dot_)Cummings(_at_)ota(_dot_)ahds(_dot_)ac(_dot_)uk

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



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