This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Variable Array extract
- From: David N Bertoni/Cambridge/IBM <david_n_bertoni at us dot ibm dot com>
- To: xsl-list at lists dot mulberrytech dot com
- Date: Mon, 5 Aug 2002 11:20:32 -0700
- Subject: Re: [xsl] Variable Array extract
- Reply-to: xsl-list at lists dot mulberrytech dot com
Actually, the monthnames element cannot have a null namespace URI. From
section 2.2:
http://www.w3.org/TR/xslt#stylesheet-element
"In addition, the xsl:stylesheet element may contain any element not
from the XSLT namespace, provided that the expanded-name of the element
has a non-null namespace URI."
So:
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
xmlns:foo="http://foo.com"
exclude-result-prefixes="foo">
<foo:monthnames>
<month number="1">January</month>
<month number="2">Febuary</month>
<month number="3">March</month>
<month number="4">April</month>
<month number="5">May</month>
<month number="6">June</month>
<month number="7">July</month>
<month number="8">August</month>
<month number="9">September</month>
<month number="10">October</month>
<month number="11">November</month>
<month number="12">December</month>
</foo:monthnames>
<xsl:template match="/">
<out>
<xsl:value-of select="document('')/xsl:stylesheet/foo:monthnames"/>
</out>
</xsl:template>
</xsl:stylesheet>
Dave
Mike Brown <mike@skew.org>
Sent by: owner-xsl- To: xsl-list@lists.mulberrytech.com
list@lists.mulberrytech. cc: (bcc: David N Bertoni/Cambridge/IBM)
com Subject: Re: [xsl] Variable Array extract
08/05/2002 10:53 AM
Please respond to xsl-list
Alvin York wrote:
>
> I have the following code snippet in an XSLT stylesheet that is
converting
> XML to HTML:
>
> <xsl:variable name="monthnames">
> <month number="1">January</month>
> <month number="2">Febuary</month>
> <month number="3">March</month>
> <month number="4">April</month>
> <month number="5">May</month>
> <month number="6">June</month>
> <month number="7">July</month>
> <month number="8">August</month>
> <month number="9">September</month>
> <month number="10">October</month>
> <month number="11">November</month>
> <month number="12">December</month>
> </xsl:variable>
>
> <xsl:variable name="month" select="number(substring(//Date,5,2))"/>
> <xsl:value-of select="$month"/>
> <xsl:value-of select="$monthnames/month[@number=$month]"/>
>
>
> The line <xsl:value-of select="$month"/> prints the month number just
fine,
> but the next line (trying to print the month name) gives me this error:
>
> "An error occurred while getting or processing the formatter for XML to
HTML
> conversion."
>
> What am I doing wrong?
Your variable is a result tree fragment, a type of object that is like a
node-set but upon which you can only perform string operations. You can
convert it to a node-set with the exsl:node-set($monthnames) extension
function or your XSLT processor's equivalent, if it doesn't support EXSLT.
A more portable way is to not use xsl:variable and just embed the lookup
data
in the stylesheet. Put this at the top level of the stylesheet (before the
first template, typically)...
<monthnames>
<month number="1">January</month>
...
</monthnames>
...and then access it as a true node-set:
document('')/xsl:stylesheet/monthnames
- Mike
____________________________________________________________________________
mike j. brown | xml/xslt: http://skew.org/xml/
denver/boulder, colorado, usa | resume: http://skew.org/~mike/resume/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list