- From: <noah_mendelsohn@us.ibm.com>
- Date: Wed, 29 Jul 2009 16:03:34 -0400
- To: "Costello, Roger L." <costello@mitre.org>
- Cc: "xmlschema-dev@w3.org" <xmlschema-dev@w3.org>
On Slide 27, you say:
"With XML Schema 1.0 you could not restrict a type defined in another
schema. In XML Schema 1.1 you can by adding a targetNamespace attribute to
each element and attribute in the restriction"
I think it would be more accurate to say:]
"A XSD 1.0 Schema Document with one targetNamespace could not restrict a
type using elements from another targetNamespace. In XML Schema 1.1, you
can do this, by adding a targetNamespace attribute to each such "foreign"
element and attribute in the restriction"
Reasons for the corrections:
* Neither XSD 1.0 nor XSD 1.1 speak directly about restrictions across
"schemas".
* Schema documents are the standard way of setting down schema
information, but not the only possible way (APIs might be another.) As
far as I know, there's nothing in XSD 1.0 that would prevent such
cross-targetNamespace restriction using representations other than Schema
Documents. The issue is: schema documents (I.e. the standard XML form
for writing down a schema) lacked the capability. XSD 1.1 allows it.
* You only need to supply the targetNamespace if the elements happen to be
foreign (foreign is not a formal term, but I hope it's clear for purposes
of this note. Although it wouldn't come up in the simplest cases, one can
imagine a case in which some of the elements were in fact from the
targetNamespace of the schema document, and for those no targetNamespace
would be needed.
Actually, looking at your example, I think it lacks important prefix
definitions. I think this would be clearer. This defines a type
lib:BookInLibrary based on books:Book:
<xs:schema targetNamespace="http://www.libraries.org"
xmlns:books="Book.xsd">
<xs:import namespace="http://www.book.org"
schemaLocation="Book.xsd"/>
<xs:complexType name="BookInLibrary">
<xs:complexContent>
<xs:restriction base="books:Book">
<xs:sequence>
<xs:element name="Title" type="xs:string"
targetNamespace="http://www.book.org"/>
<xs:element name="Author" type="xs:string"
maxOccurs="2"
targetNamespace="http://www.book.org"/>
<xs:element name="Date" type="xs:gYear"
targetNamespace="http://www.book.org"/>
<xs:element name="ISBN" type="xs:string"
targetNamespace="http://www.book.org"/>
<xs:element name="Publisher" type="xs:string"
targetNamespace="http://www.book.org"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:schema>
--------------------------------------
Noah Mendelsohn
IBM Corporation
One Rogers Street
Cambridge, MA 02142
1-617-693-4036
--------------------------------------
"Costello, Roger L." <costello@mitre.org>
Sent by: xmlschema-dev-request@w3.org
07/24/2009 02:16 PM
To: "xmlschema-dev@w3.org" <xmlschema-dev@w3.org>
cc: (bcc: Noah Mendelsohn/Cambridge/IBM)
Subject: [Updated] XML Schema 1.1 Tutorial
Hi Folks,
I updated my XML Schema 1.1 Tutorial:
http://www.xfront.com/xml-schema-1-1/xml-schema-1-1.ppt
Here are the changes:
1. At the beginning I added a "5 minute intro" section that quickly covers
all of the new capabilities in XML Schema 1.1
2. I completely revised the section on targetNamespace (thanks to Michael
Kay and Michael Sperberg-McQueen for straightening me out)
3. I added a few more slides on xs:error
Thanks to Noah and Mukul for their suggestions.
I will be announcing the tutorial on xml-dev shortly.
/Roger
Received on Wednesday, 29 July 2009 20:04:20 UTC