> > If I understand this correctly, then code such as the following: > > > <xsl:variable name="element_name" select="../@name" > as="xs:TOKEN" /> > > should not be rejected by a Basic XSLT processor, but should be > treated as if it were coded as: > > <xsl:variable name="element_name" select="../@name" > as="xs:string" /> > > Is this a correct understanding? No, this is incorrect. xs:TOKEN is not one of the types in the static context, therefore its name isn't available for use in the stylesheet. The effect is the same as saying as="dvla:vehicle-reg" when you haven't imported a schema for "dvla". Similarly if you ask <xsl:if test="local-name-from-QName(node-name(.)) instance of xs:NCName"> you'll get a static error with a basic processor. The only thing you can test for, and depend on, is <xsl:if test="local-name-from-QName(node-name(.)) instance of xs:string"> because xs:string is the nearest "known" type. This code will work, and give the same answer, with both a basic processor and a schema-aware processor. When I mentioned in the bugzilla entry that the solution is type-safe, one of the properties of this is that any expression that's legal in a basic XSLT processor will give the same answer as the same expression in a schema-aware processor. This works because we've carefully avoided any function such as get-type() that returns the most specific type of a value: you can only do tests to determine whether the value is an instance of a type that's in your static context. I hope this clarifies. Michael KayReceived on Thursday, 29 September 2005 12:31:15 UTC
This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 16:57:09 UTC