[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Typing Variable as AnyURI - Problem

Subject: Re: Typing Variable as AnyURI - Problem
From: Michael Kay <mike@xxxxxxxxxxxx>
Date: Thu, 13 Sep 2012 09:16:57 +0100
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:
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


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.

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

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.