[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Typing Variable as AnyURI - Problem
On 13/09/2012 08:47, Ihe Onwuka wrote:
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. When an xsl:variable element has content and specifies as="xs:anyURI", then the system takes the result of evaluating the content, which in your case is a sequence of text nodes, and uses the "function conversion rules" to attempt to convert this to the required type. The conversions allowed by the function conversion rules are weaker than the casting rules, but even if the casting rules were used here, casting a sequence of text nodes to an xs:anyURI would not work. Michael Kay Saxonica
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|