Re: What are all the scenarios in which targetNamespace can be added to attribute declarations?
Michael Kay <[email protected]> Wed, 01 Aug 2012 09:25:41 +0100
| Newsgroups | gmane.text.xml.schema.devel |
|---|---|
| Message-ID | <[email protected]> |
Yes, this is the use case that the targetNamespace attribute was introduced for, and the WG decided to restrict its use to this scenario. My own instinct was to generalize it so it could be used anywhere, but the WG was reluctant to do this, as it would have meant a total decoupling of the current relationship between schema documents and namespaces. Michael Kay Saxonica On 31/07/2012 21:08, Costello, Roger L. wrote: > Hi Folks, > > Below I show an example of an attribute declaration with a targetNamespace attribute. > > The attribute is embedded inside a complexType that restricts another complexType that is in a different namespace. > > Is my example illustrative of the only scenario in which the targetNamespace attribute can be added to an attribute declaration? Or are there other scenarios? > > /Roger > > > -------------------------------------------------------------------------------- > BookStore.xsd > -------------------------------------------------------------------------------- > <?xml version="1.0"?> > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" > targetNamespace="http://www.bookstore.org" > xmlns="http://www.bookstore.org" > xmlns:b="http://www.book.org" > elementFormDefault="qualified"> > > <xs:import namespace="http://www.book.org" > schemaLocation="Book.xsd"/> > > <xs:complexType name="BookTypeMyNamespace"> > <xs:complexContent> > <xs:restriction base="b:BookType"> > <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:attribute name="id" type="xs:ID" use="required" targetNamespace="http://www.book.org"/> <!-- HERE IT IS --> > </xs:restriction> > </xs:complexContent> > </xs:complexType> > > <xs:element name="BookStore"> > <xs:complexType> > <xs:sequence> > <xs:element name="Book" maxOccurs="unbounded" type="BookTypeMyNamespace" /> > </xs:sequence> > </xs:complexType> > </xs:element> > > </xs:schema> > > -------------------------------------------------------------------------------- > Book.xsd > ------------------------------------------------------------------------------- > -<?xml version="1.0"?> > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" > targetNamespace="http://www.book.org" > xmlns="http://www.book.org" > elementFormDefault="qualified"> > > <xs:complexType name="BookType"> > <xs:sequence> > <xs:element name="Title" type="xs:string"/> > <xs:element name="Author" type="xs:string" maxOccurs="unbounded"/> > <xs:element name="Date" type="xs:gYear"/> > <xs:element name="ISBN" type="xs:string"/> > <xs:element name="Publisher" type="xs:string"/> > </xs:sequence> > <xs:attribute ref="id" /> > </xs:complexType> > > <xs:attribute name="id" type="xs:ID" /> > > </xs:schema> > >