At 2003-06-11 15:55 -0300, jwhitney wrote:
I'm trying to generate html code for "Date 1 of 2", "Date 2 of 2", etc., from
XML as below:
<a>
<b/>
<c/>
<date>text</date>
<date>text again</date>
</a>
from within a template that matches "d".
What is key is those nodes that are being "pushed" using <xsl:apply-templates/>
The following stylesheet fragment:
<xsl:template match="d">
<xsl:value-of select="position()" />
<xsl:text> of </xsl:text>
<xsl:value-of select="count(../date)" />
</xsl:template>
produces "3 of 2" and "4 of 2". Is there a way to restrict position() to
evaluate the <date> nodes only?
Yes, by restricting the processing to only push the date elements ... you
would have something along the lines of the following in the processing of
<a> in your example:
<xsl:apply-templates select="date"/>
How else could it be done?
Independently of using position(), by counting the given elements:
<xsl:number/>
... in which case it doesn't matter what nodes are being pushed because you
aren't using position(). The above instruction will count the current node
amongst like sibling nodes.
I hope this helps.
........ Ken
--
Upcoming hands-on courses: (registration still open!)
- (XSLT/XPath and/or XSL-FO) North America: June 16-20, 2003
G. Ken Holman mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
Crane Softwrights Ltd. http://www.CraneSoftwrights.com/m/
Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (F:-0995)
ISBN 0-13-065196-6 Definitive XSLT and XPath
ISBN 0-13-140374-5 Definitive XSL-FO
ISBN 1-894049-08-X Practical Transformation Using XSLT and XPath
ISBN 1-894049-11-X Practical Formatting Using XSL-FO
Member of the XML Guild of Practitioners: http://XMLGuild.info
Male Breast Cancer Awareness http://www.CraneSoftwrights.com/m/bc
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list