[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
On 13/09/2012 08:16, Ihe Onwuka wrote:
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.
Re: [xsl] Upgrading version should lead to bug - right?
Subject: Re: [xsl] Upgrading version should lead to bug - right? From: Michael Kay <mike@xxxxxxxxxxxx> Date: Thu, 13 Sep 2012 08:38:51 +0100 |
On 13/09/2012 08:16, Ihe Onwuka wrote:
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.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?
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.
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.
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.
Michael Kay Saxonica
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Upgrading version should , Andrew Welch | Thread | [xsl] Templates not applied to outp, Ihe Onwuka |
Re: [xsl] Typing Variable as AnyURI, Andrew Welch | Date | Re: [xsl] Typing Variable as AnyURI, Ihe Onwuka |
Month |