- From: G. Ken Holman <gkholman@CraneSoftwrights.com>
- Date: Mon, 26 Mar 2012 14:03:19 -0400
- To: "xmlschema-dev@w3.org" <xmlschema-dev@w3.org>
At 2012-03-26 17:45 +0000, Costello, Roger L. wrote:
>Hi Folks,
>
>What is the data type of this fixed element:
>
> <element name="Aircraft" fixed="boeing:AC-747" />
A "simple ur-type definition" because you haven't said otherwise.
W3C Schema Part 1 Section 3.2.2:
"The default when no simple type definition is referenced or provided
is the ·simple ur-type definition·, which imposes no constraints at all."
>Can an XML instance document specify that its type is a QName, like so:
>
> <Aircraft xsi:type="xs:QName">boeing:AC-747</Aircraft>
>
>That results in an error, why?
There are a bunch of errors there. To make it well-formed you need:
<Aircraft xsi:type="xs:QName"
xmlns:boeing="urn:X-MD"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema">boeing:AC-747</Aircraft>
But you can't make it schema valid to your
constraint of the value being a fixed string,
because the value is a QName. Lexically they may
be the same, but the schema values are different types.
If you take out the fixed= from the schema then
the above instance validates against it because
there is no constraint on the schema value.
Now, if you change your schema to require the
value to be a QName, then the above instance will validate against this:
<?xml version="1.0" encoding="US-ASCII"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:boeing="urn:X-MD">
<xsd:annotation>
<xsd:documentation xml:lang="en">
</xsd:documentation>
</xsd:annotation>
<xsd:element name="Aircraft" fixed="boeing:AC-747" type="xsd:QName"/>
</xsd:schema>
But it won't validate against:
<Aircraft>boeing:AC-747</Aircraft>
... because the data type states the value is a
QName and the prefix cannot be resolved.
I think you are mixing up the lexical expression
and the schema value. The fixed= constraint in
the schema is on the schema value, not on the lexical expression.
For example, this validates against the QName schema above:
<Aircraft xmlns:roger="urn:X-MD">roger:AC-747</Aircraft>
... because the constraint is on the schema
value, not on the lexical value. In the schema
value of a QName, the lexical prefix is
irrelevant and used only to obtain the URI value.
W3C Schema Part 1 Section 3.2.1:
"Note that it is values that are supplied and/or checked, not strings."
I hope this helps.
. . . . . . . . . Ken
--
Contact us for world-wide XML consulting and instructor-led training
Free 5-hour video lecture: XSLT/XPath 1.0 & 2.0 http://ude.my/uoui9h
Crane Softwrights Ltd. http://www.CraneSoftwrights.com/x/
G. Ken Holman mailto:gkholman@CraneSoftwrights.com
Google+ profile: https://plus.google.com/116832879756988317389/about
Legal business disclaimers: http://www.CraneSoftwrights.com/legal
Received on Monday, 26 March 2012 18:08:14 UTC