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

Re: Question about cross references

Subject: Re: Question about cross references
From: "Tech Savvy" <tecsavvy@xxxxxxxxx>
Date: Thu, 27 Apr 2006 12:14:09 -0500
tecsavvy
Hi:

Sorry about that, I must have done a reply instead of a reply-all.

I am currently trying to achieve this on XSLT.

This is what I did:

I declared a key for the ids...

<xsl:key  name="steps" match="*[@id]" use="@id"/>


And on the xref template:
<xsl:template match="xref">

	<a href="@xrefid">
      <xsl:for-each select="key('steps',@xrefid)">

                        <xsl:number count="list1" level="any"
    format="1"/>
                </xsl:for-each>
</a>
	</xsl:template>

Any suggestions on this approach?

On 4/27/06, Jay Bryant <jay@xxxxxxxxxxxx> wrote:
> First, an admin thing: all traffic should go to the list. Down the road,
> someone will have the same question, and they might find the answer in the
> archives if we keep all the traffic on the list. Writing to someone
directly
> probably doesn't get a faster or better response, and it robs the archive
of
> potentially useful information. I've cc'd the list to get us back on track.
>
> From your earlier post, I suspect that the following template is the source
> of your problem:
>
> <xsl:template match="xref">
>
> <xsl:apply-templates select="@xrefid"/>
>
> </xsl:template>
>
>
> Do you have a template to handle that attribute or are you letting your
XSLT
> processor take its default behavior (which is to put the text value of the
> attribute into the output)? If you are letting it take its default
behavior,
> you'll never get the FO tags you need.
>
> Also, it's easier (and more maintainable) to just do it all here in this
> template rather than call another one from this point.
>
> To say more, I'd have to see more of your transform.
>
> Jay Bryant
> Bryant Communication Services
>
> ----- Original Message -----
> From: "Tech Savvy" <tecsavvy@xxxxxxxxx>
> To: <jay@xxxxxxxxxxxx>
> Sent: Thursday, April 27, 2006 10:35 AM
> Subject: Re:  Question about cross references
>
>
> Hello:
>
> I have still not been able to find a solution to this problem. Would
> you have any other suggestions to this.
>
> Thank you
>
>
>
>
> 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:  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

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.