- From: <noah_mendelsohn@us.ibm.com>
- Date: Fri, 7 Jun 2002 14:47:56 -0400
- To: www-tag@w3.org
- Cc: Norman.Walsh@Sun.COM
Norm: you've done a great job on this. One minor suggested correction
to [1], which currently says:
<original>
In these contexts, QNames are most often used
to identify a particular element type; they are,
in principal, using QNames as they were intended.
It's possible that specifications will invent
new uses for QNames as well, using them as
shortcuts for unique identifiers derived from
a URI/localname pair that have no relationship
to element or attribute types.
</original>
I suggest the second paragraph be changed to something along the lines of:
<suggested>
Other specifications use QNames as shortcuts for unique identifiers
derived from a URI/localname pair that have no relationship to element or
attribute types.
</suggested>
because we already have recommendations that do this.
Specifically, in the XML Schema recommendation, QNames in attribute values
such as type="xsd:Integer" or ref="somens:myAttr" refer not to an element
or attribute, but to an abstraction called a schema component. The type=
reference is to a type definition component, and the ref= is to an element
or attribute declaration component. This is covered in the schema rec.
at [2], which says:
"Schema Representation Constraint:
QName resolution (Schema Document)
For a ·QName· to resolve to a schema
component of a specified kind..."
So, it's clear that QNames resolve to components. Therefore, saying "it
is possible" seems wrong, given that we have a rec that already does this.
Detailed Explanation of Schema QName References
-----------------------------------------------
Here's a concrete if somewhat unusal use case for those few who will want
to understand the subtleties and some motivations for QName reference
mechanisms in XML Schema (or, most of you should probably just trust me
that QName references from a schema document are not to elements and
attributes, and skip the rest of this note.) In general, such references
in XML schema are from an XML schema document to an XML schema component.
Consider:
<schemaQNameReferenceUseCase>
Someone invents an API for creating and managing schemas. It has methods
like createTypeDefinition, createElementDeclaration or some such. Using
this API, a schema is created in memory. This is a perfectly legal schema
per the schema spec. It has never existed in "<...>" XML 1.0 syntax and
indeed is not embodied as XML Infoset(s) (though it does become part of
the PSVI if a validation is done.) We went to some trouble to make sure
that such schemas have first class standing, as we expect them to be
created dynamically by database systems, and sometimes hardwired into
vocabulary-specific applications such as XHTML editors.
I know this is a somewhat subtle example, but consider the case where a
schema document imports this non-document based schema, which again is
perfectly legal. For example, my schema documents imports XHTML, and
we're running in a specialized XHTML editor which is using its own
representation of the XHTML schema. It should be clear that any QNames
that are used to reference from the schema document to the synthetic
schema (from my schema to an XHTML type, for example) could not possibly
be referencing an element or attribute target, since there never were any
element or attribute representations of the target schema.
The fact is that, even when one schema document imports a schema that is
itself in a document, the QName references are to the components created
from the schema document, not to the elements and attributes in the
document. All QName references in XML schema are uniform, and all are to
components. The tricky in-memory example is merely to point out that
there exist referenceable schemas that in fact have never (and never will)
exist in the form of elements and attributes, and we reference all schema
components in the same manner.
There are other reasons why schema references are to components, but the
above example is representative of the issues.
</schemaQNameReferenceUseCase>
Bottom line: I suggest the small tweak to the otherwise excellent draft
that Norm has written.
[1] http://www.w3.org/2001/tag/doc/qnameids.html#sec-qnames-other
[2]
http://www.w3.org/TR/xmlschema-1/#section-Constraints-on-XML-Representations-of-Schemas
------------------------------------------------------------------
Noah Mendelsohn Voice: 1-617-693-4036
IBM Corporation Fax: 1-617-693-8676
One Rogers Street
Cambridge, MA 02142
------------------------------------------------------------------
Received on Friday, 7 June 2002 15:10:02 UTC