[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
Re: [xml-dev] xsl processing problem with multiple templates
- From: "Ian S. Worthington" <ianworthington@usa.net>
- To: "G. Ken Holman" <gkholman@CraneSoftwrights.com>,<xml-dev@lists.xml.org>
- Date: Sat, 14 Nov 2009 20:40:08 -0500
Hi Ken --
Many thanks for the link to your book. I decided to go with the pull model
as, rightly or wrongly, I felt slightly more in control. I ditched the inline
data so I could generate a link to the full data contents for each fix. But I
couldn't find a way of doing that *under* the for-each whilst still retaining
access to the @href. So I ended up with the following which, whilst it works,
is presumably reading the linked document twice just to extract the fix number
and fix abstract:
<ul>
<xsl:for-each select="fix">
<!-- <xsl:for-each select="document( fix/@href )/fix"> -->
<li>
<a>
<xsl:attribute name="href">
<xsl:value-of select="@href"/>
</xsl:attribute>
<xsl:value-of select="document( @href )/fix/number"/>
</a>
<br/><xsl:value-of select="document( @href )/fix/abstract"/>
</li>
</xsl:for-each>
</ul>
I'm sure there's a more efficient way, yes?
i
------ Original Message ------
Received: 05:50 PM COT, 11/14/2009
From: "G. Ken Holman" <gkholman@CraneSoftwrights.com>
To: <xml-dev@lists.xml.org>
Subject: Re: [xml-dev] xsl processing problem with multiple templates
> At 2009-11-14 16:55 -0500, Ian S. Worthington wrote:
> >The idea of pushing is new to me I'm afraid.
>
> In fact you are already using it because you catch a node pushed at
> your stylesheet when using a template match.
>
> >Where should that "apply-templates" line go?
>
> In place of the <xsl:for-each/>
>
> >Obviously not here:
> >
> ><xsl:stylesheet version="1.0"
> >xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> > <xsl:template match="fixlist">
> > <xsl:message>Matched data root</xsl:message>
> > <html>
> > <body>
> > <xsl:for-each select="fix">
> > <xsl:apply-templates select="fix[not(@href)] |
> >document( fix/@href )/fix"/>
> > <p>Change number: <xsl:value-of select="number"/></p>
> > </xsl:for-each>
> > </body>
> > </html>
> > </xsl:template>
> ></xsl:stylesheet>
>
> Your choice .... either using pull:
>
> <xsl:for-each select="fix[not(@href)] |
> document( fix/@href )/fix">
> <p>Change number: <xsl:value-of select="number"/></p>
> </xsl:for-each>
>
> .. or using push:
>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> <xsl:template match="fixlist">
> <xsl:message>Matched data root</xsl:message>
> <html>
> <body>
> <xsl:apply-templates select="fix[not(@href)] |
> document( fix/@href )/fix"/>
> </body>
> </html>
> </xsl:template>
>
> <xsl:template match="fix">
> <p>Change number: <xsl:value-of select="number"/></p>
> </xsl:template>
>
> </xsl:stylesheet>
>
>
> I hope this helps. On my web site I have a free download of an
> excerpt of my XSLT book where I've introduced the concepts of pull and
push.
>
> I hope this helps.
>
> . . . . . . . . Ken
>
> --
> Vote for your XML training: http://www.CraneSoftwrights.com/x/i/
> Crane Softwrights Ltd. http://www.CraneSoftwrights.com/x/
> Training tools: Comprehensive interactive XSLT/XPath 1.0/2.0 video
> Video lesson: http://www.youtube.com/watch?v=PrNjJCh7Ppg&fmt=18
> Video overview: http://www.youtube.com/watch?v=VTiodiij6gE&fmt=18
> G. Ken Holman mailto:gkholman@CraneSoftwrights.com
> Male Cancer Awareness Nov'07 http://www.CraneSoftwrights.com/x/bc
> Legal business disclaimers: http://www.CraneSoftwrights.com/legal
>
>
> _______________________________________________________________________
>
> XML-DEV is a publicly archived, unmoderated list hosted by OASIS
> to support XML implementation and development. To minimize
> spam in the archives, you must subscribe before posting.
>
> [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/
> Or unsubscribe: xml-dev-unsubscribe@lists.xml.org
> subscribe: xml-dev-subscribe@lists.xml.org
> List archive: http://lists.xml.org/archives/xml-dev/
> List Guidelines: http://www.oasis-open.org/maillists/guidelines.php
>
>
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]