[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Question about cross references


Subject: Re: [xsl] Question about cross references
From: "Tech Savvy" <tecsavvy@xxxxxxxxx>
Date: Wed, 26 Apr 2006 14:34:05 -0500

Hello Jay:

Thank you for your quick response.
I have to implement this on both XSLT and XSLT Fo. I added this code
to get the ID attribute for all the lists -
<xsl:if test="@id">
     <xsl:copy-of select="@id"/>
   </xsl:if>
I matched xref using the code:
<xsl:template match="xref">

	<xsl:apply-templates select="@xrefid"/>

	</xsl:template>


My problem is, how do I make this xrefid get to match the id value on
the list and produce the number against it?

Like this:

> 1. Some text
> 2. Some other text as in list 1A.



On 4/26/06, Jay Bryant <jay@xxxxxxxxxxxx> wrote:
> That's very possible (and a common task for those of us, including me, who
> use XSLT to mangle documents).
>
> To handle it, you need to write a template to handle xref nodes. Something
> like this:
>
> <xsl:template match="xref">
>  <fo:basic-link internal-destination="{@xrefid}"><xsl:value-of
> select="."/></fo:basic-link>
> </xsl:template>
>
> You also need to create matching ids (the actual destinations) within the
> FO, so you need to do that wherever you have an id attribute in the source.
> Something like this:
>
> <xsl:template match="list1">
>  <fo:block>
>    <xsl:if test="@id">
>      <xsl:copy-of select="@id"/>
>    </xsl:if>
>    <xsl:value-of select="."/>
>  </fo:block>
> </xsl:template>
>
> Of course, you'll probably want to use the proper list elements for your
> list. I just stuck it in a block for simplicity's sake.
>
> Just remember that you need both a link and a corresponding id for the
link.
>
> Also, if you can have id attributes in other than list1 nodes (seems
> likely), you'll want to either handle it in each template or write a
> separate template just to handle id attributes.
>
> If you have more trouble, post back to the list.
>
> HTH
>
> Jay Bryant
> Bryant Communication Services
>
> ----- Original Message -----
> From: "Tech Savvy" <tecsavvy@xxxxxxxxx>
> To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
> Sent: Wednesday, April 26, 2006 1:39 PM
> Subject: [xsl] Question about cross references
>
>
> Hello:
>
> I am trying to achieve a corss ref in xslt and xsl:fo.
>
> Here is wht the XML looks like:
> <
>
> list1 id="l1">
> <text>
>
> <para>Some text</para>
>
> </text>
>
> </list1>
>
> <list1 id="l2">
>
>
> <text>
>
> <para>Some other text as in list <xref xrefid ="l1"/>A.</para>
>
> </text>
>
> </list1>
>
> The desired result is:
>
> 1. Some text
> 2. Some other text as in list 1A.
>
> But the current result is:
> 1. Some text
> 2. Some other text as in list l1A.
>
>
> I want to get the reference from the xrefid and put it on the text.
> The lists are formatted on the XSLT as eithr numbers(1,2) or (A,B)
> etc.
>
> Is there nay way this can be achieved thru XSLT.
>
> Thanks in advance for your help.


Current Thread
Keywords