[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Re: [xsl] Stumped on XPath
Subject: Re: [xsl] Stumped on XPath From: Spencer Tickner <spencertickner@xxxxxxxxx> Date: Mon, 13 Feb 2006 13:27:56 -0800 |
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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Stumped on XPath, Spencer Tickner | Thread | Re: [xsl] Stumped on XPath, Wendell Piez |
Re: [xsl] Stumped on XPath, Spencer Tickner | Date | Re: [xsl] Stumped on XPath, Wendell Piez |
Month |