This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
simple XPath question
- To: <xsl-list at lists dot mulberrytech dot com>
- Subject: [xsl] simple XPath question
- From: "Chris Nolte" <nolte at silicon-age dot com>
- Date: Mon, 2 Jul 2001 13:47:29 -0700
- Organization: Silicon Age, Inc.
- Reply-To: xsl-list at lists dot mulberrytech dot com
I am trying to work through an example in Khun Yee Fung's XSLT book. It is
not giving me the solution he claims it should, but I do not understand why
not.
Here is the sample XML:
<?xml version='1.0'?>
<warehouse>
<item>
<name>orange</name>
<country>US</country>
</item>
<item>
<name>ice wine</name>
<country>Canada</country>
</item>
</warehouse>
And here is the stylesheet:
<?xml version='1.0'?>
<xsl:stylesheet version='1.0'
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:output method='xml' indent='yes'/>
<xsl:template match='/'>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match='warehouse'>
<storage>
<xsl:apply-templates select='item/country'/>
</storage>
</xsl:template>
<xsl:template match='country'>
<xsl:copy-of select='.'/>
</xsl:template>
<xsl:template match='country[1]'>
<first-country>
<xsl:copy-of select='.'/>
</first-country>
</xsl:template>
</xsl:stylesheet>
The output I am getting [using Saxon] is:
<?xml version="1.0" encoding="utf-8"?>
<storage>
<first-country>
<country>US</country>
</first-country>
<first-country>
<country>Canada</country>
</first-country>
</storage>
i.e., the first-country template is getting matched both times, even though
the XPath expression uses country[1]. What seems strange to me is that when
I include the line <xsl:copy-of select='position()'/> at the beginning of
the template matching country[1], I get a 1 and a 2.
I believe I am supposed to get:
<storage>
<first-country>
<country>US</country>
</first-country>
<country>Canada</country>
</storage>
Am I doing something wrong, or is the example in Fung's book (Chapter 6, p.
149) wrong? How should the stylesheet be structured to get the intended
output?
Chris
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list