[xsl] Passing xs:string containing zero characters

Subject: [xsl] Passing xs:string containing zero characters
From: Toshihiko Makita <tmakita@xxxxxxxxx>
Date: Wed, 19 May 2010 10:01:09 +0900
Hi!

I'm new to XSLT 2.0 and using it with Saxon 9.1 in DITA-Open Toolkit.
I wrote following variable and pass it as a parameter as $prmLang to the template.


<xsl:variable name="lang" as="xs:string" select="string(@xml:lang)"/>

<xsl:apply-templates select="child::*[contains(@class, ' topic/related-links ')]">
<xsl:with-param name="prmLang" as ="xs:string" select="$lang"/>
</xsl:aplly-templates>


<xsl:template match="*[contains(@class, ' topic/related-links ')]">
  <xsl:param name="prmLang" as="xs:string" required="yes"/>
  ...
</xsl:template>

Then the following error is occured when $lang is empty string.

"[xslt] D:\DITA-OT1.5-FB\demo\xxx\xsl\xxx_dita2fo_relatedlinks.xsl:34: Fatal Error! No value supplied for required parameter"

Is it a right behavior? I thought that xs:string can contain any sequence of zero or more characters.

(If I rewrite the template code required="yes" to select="''", then it works fine.)

Toshihiko Makita

Current Thread