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

Re: Stumped on XPath

Subject: Re: Stumped on XPath
From: Spencer Tickner <spencertickner@xxxxxxxxx>
Date: Mon, 13 Feb 2006 13:27:56 -0800
Re:  Stumped on XPath
Ok, I seem to have got it. I changed the key to read <xsl:key name="r"
match="appendix" use="refnote/@id"/>... After testing 5 or 6 test
scenarios it's giving me exactly what I want. Thank you both so much
for the help.

Cheers

On 2/13/06, Spencer Tickner <spencertickner@xxxxxxxxx> wrote:
> Hi Wendell,
>
> Thanks for the write back, here's the xslt code..
> <xsl:stylesheet version="1.0"
>              xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
>
> <xsl:key name="r" match="refnote" use="@id"/>
>
> <xsl:template match="doc">
> <html>
> <head/>
> <body>
>  <xsl:apply-templates/>
> </body>
> </html>
> </xsl:template>
>
> <xsl:template match="sentence">
>  <p><xsl:apply-templates/></p>
> </xsl:template>
> <xsl:template match="clause">
>  <p class="clause"><xsl:apply-templates/></p>
> </xsl:template>
> <xsl:template match="strong">
> <strong><xsl:apply-templates/></strong>
> </xsl:template>
> <xsl:template match="appendix"/>
> <xsl:template match="id">
> <xsl:for-each select="key('r',@ref)">
>  <xsl:text> (see Appendix </xsl:text>
>  <xsl:number format="A"/>
>  <xsl:text>) </xsl:text>
> </xsl:for-each>
> </xsl:template>
>
> </xsl:stylesheet>
>
> I'll give a shot at trying to switch his code to count the appendix
instead.
>
> thanks,
>
> Spencer
>
> On 2/13/06, Wendell Piez <wapiez@xxxxxxxxxxxxxxxx> wrote:
> > Hi Spenser,
> >
> > If you posted your original XSLT which David fixed, that would help,
> > but I think I remember it well enough -- David's suggestion should
> > work cleanly as long as you say
> >
> > <xsl:number from="appendix"/>
> >
> > instead of the <xsl:number/> he guessed at.
> >
> > The principle he elucidated, namely that you traverse to the
> > referenced node and do the operation there, still applies.
> > <xsl:number/> (in some configuration) spares you all the work of
> > counting things using explicit XPath. The only tricky part is getting
> > the xsl:number set up to give what you want. In this case, unless you
> > say you want to count the appendix elements, it uses the default,
> > which is counting the refnote elements themselves, in their local
> > context (i.e. each one inside its parent). This gives you "1" (i.e.
> > "A") for refnotes 1, 2, and 4, which are each the first refnotes in
> > their parents. (refnote 3 will get you "B"). By switching this to
> > count the appendixes you should get "A" for refnote 1, "B" for
> > refnotes 2 and 3, and "C" for 4.
> >
> > Cheers,
> > Wendell
> >
> > At 04:03 PM 2/13/2006, you wrote:
> > >Hi Wendell and David,
> > >
> > >Sorry I was out of town on a course. I do agree that the solution that
> > >David suggested is cleaner, however it only works with the original
> > >xml. Sorry if the second example was obscure, perhaps this demostrates
> > >it better:
> > >
> > >XML
> > >
> > ><?xml version="1.0"?>
> > ><doc>
> > >  <manual>
> > >  <sentence>This is a sentence with a reference<id ref="1"/> as an
> > >inline element</sentence>
> > >     <clause>This is a clause with inline elements <strong>
> > >and</strong> a reference <id ref="4"/></clause>
> > ></manual>
> > ><appendix>
> > >  <refnote id="1">This is the first reference</refnote>
> > >  </appendix>
> > >  <appendix>
> > >  <refnote id="2">This is the second reference</refnote>
> > ><refnote id="3">This is the third reference</refnote>
> > ></appendix>
> > ><appendix>
> > >         <refnote id="4">This is the third reference</refnote>
> > >  </appendix>
> > ></doc>
> > >
> > >Should produce:
> > >
> > ><html><head><META http-equiv="Content-Type"
content="text/html"></head><body>
> > >  <p>This is a sentence with a reference (see Appendix A)  as an
> > >inline element</p>
> > >     <p class="clause">This is a clause with inline elements <strong>
> > >and</strong> a reference  (see Appendix C) </p>
> > ></body></html>
> > >
> > >But instead produces:
> > >
> > ><html><head><META http-equiv="Content-Type"
content="text/html"></head><body>
> > >  <p>This is a sentence with a reference (see Appendix A)  as an
> > >inline element</p>
> > >     <p class="clause">This is a clause with inline elements <strong>
> > >and</strong> a reference  (see Appendix A) </p>
> > ></body></html>
> > >
> > >I'm sure it's something small I'm missing on my end. I do agree that
> > >this would be a much better solution, so any thoughts would be
> > >appreciated
> >
> >
> > ======================================================================
> > Wendell Piez                            mailto:wapiez@xxxxxxxxxxxxxxxx
> > Mulberry Technologies, Inc.                http://www.mulberrytech.com
> > 17 West Jefferson Street                    Direct Phone: 301/315-9635
> > Suite 207                                          Phone: 301/315-9631
> > Rockville, MD  20850                                 Fax: 301/315-8285
> > ----------------------------------------------------------------------
> >    Mulberry Technologies: A Consultancy Specializing in SGML and XML
> > ======================================================================

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-2013 All Rights Reserved.