On 13/09/2012 08:16, Ihe Onwuka wrote:
I have an XSLT 1.0 stylesheet that has been running on an XSLT 2.0
processor no problem but barfs when you upgrade the version attribute
(no other change to the code) to 2.0.
That shouldn't happen right?
No, it's entirely possible that it will happen. Once you set the version
attribute to 2.0, you enable XSLT 2.0's stronger type checking. For
example, in XSLT 1.0, contains(author, "abc") works fine if there is
more than one author (it just takes the first, and ignores the others),
while XSLT 2.0 gives you the type error that you are reporting.
If the stylesheet author's intent was to select the first item and
ignore the others (a common example is contains(following-sibling::*,
"xyz")) then the fix is to make this explicit: change it to
contains(following-sibling::*[1], "xyz"). But sometimes, when you look
at the code, you realize that the stylesheet author simply didn't take
into account the possibility that the expression might select more than
one node.
I've not pinned down the precise line of offending code but the error
I am getting is
A sequence of more than one item is not allowed as the first argument
of contains() ("_IOS, _WEB, _CTV", "_IOS, _WEB, _CTV", ...)
Now the input XML has elements like this
<m__category>_IOS, _WEB, _CTV</m__category>
so I wonder if the processor is parsing that element as a sequence
instead of as a comma separated string.
No, your first argument to contains() has selected more than one string.
The first string is "_IOS, _WEB, _CTV", the second string is exactly the
same, and subsequent strings (if they exist) are not listed in the error
message.
Michael Kay
Saxonica
--~------------------------------------------------------------------
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>
--~--