xsl-list
[Top] [All Lists]

RE: XSLT2: A sequence of more than one item is not allowed as the first argument of contains()

2005-09-25 12:40:23

  I am having problem with contains() in XSLT2
(Saxon8.5.1).  The following code is checking if the
classname contains the word "notification":
 
<xsl:variable name="vKeyword" select="notification"/>

That should surely be:

<xsl:variable name="vKeyword" select="'notification'"/>


<xsl:variable name="vClassName"
select="Class/@classname"/>
<xsl:if test="contains($vClassName, $vKeyword)">
  <xsl:copy-of select="."/>
</xsl:if>

XSLT2 using Saxon8.5.1 returns the following error:
XPTY0004: A sequence of more than one item is not
allowed as the first argument of contains()

This means that Class/@classname contains more than one attribute, which
means that the context node has more than one child called Class.

What to do about it? This depends on whether you want to check if *any* of
these attributes contain the keyword, or if *all* of them contain the
keyword. The 1.0 code checks if the *first* one of the attributes contains
the keyword.

Michael Kay
http://www.saxonica.com/


Using XSLT 1, Saxon8.5.1 returns no error.

What does that error mean?  How do I check if an
attribute contains a keyword in XSLT2?

thanks,
Xiaocun Xu



              
__________________________________ 
Yahoo! Mail - PC Magazine Editors' Choice 2005 
http://mail.yahoo.com

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--





--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--