Subject: Re: [xsl] Typing Variable as AnyURI - Problem From: Michael Kay <mike@xxxxxxxxxxxx> Date: Thu, 13 Sep 2012 09:16:57 +0100 |
On Thu, Sep 13, 2012 at 8:31 AM, Michael Kay <mike@xxxxxxxxxxxx> wrote:When an xsl:variable element has content but no "as" attribute, the value of the variable will be a document node acting as the root of a temporary tree (in 1.0 it was called a "result tree fragment"). A document node can be constructed from a sequence of text nodes: they are concatenated to form a single child node for the document node. When you cast a document node to an atomic type, the first thing that happens is that the document node is atomized, which takes the string value as an instance of xs:untypedAtomic; the string value of a document node is the concatenation of all its descendant text nodes. This xs:untypedAtomic value can then be cast to xs:anyURI.Your call to xsl:apply-templates is returning a sequence of text nodes. A sequence of text nodes is not a string (nor is an xs:anyURI), and it cannot be converted to a string by calling the string() or xs:anyURI() functions.
Yes, but what threw me off the scent is that casting the variable to xs:anyURI as in the code example I posted worked.
So whats the difference between what goes when the variable is cast as xs:anyURI and what goes on when the variable is typed xs:anyURI
Michael Kay Saxonica
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Typing Variable as AnyURI, Andrew Welch | Thread | Re: [xsl] Typing Variable as AnyURI, Andrew Welch |
Re: [xsl] Typing Variable as AnyURI, Andrew Welch | Date | Re: [xsl] Replacing substring with , Florent Georges |
Month |