[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
targetNamespace and default namespace
- From: Elliotte Rusty Harold <elharo@ibiblio.org>
- To: XML Developers List <xml-dev@lists.xml.org>
- Date: Thu, 29 Sep 2016 07:49:42 -0400
In Eclipse plug-ins we encounter W3C XML Schemas like the following:
<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="com.google.cloud.tools.eclipse.appengine.libraries"
xmlns="http://www.w3.org/2001/XMLSchema">
<element name="extension">
<complexType>
<choice minOccurs="1" maxOccurs="unbounded">
<element ref="library" />
</choice>
<attribute name="point" type="string" use="required" />
<attribute name="id" type="string" />
<attribute name="name" type="string">
<annotation>
<appinfo>
<meta.attribute translatable="true" />
</appinfo>
</annotation>
</attribute>
</complexType>
</element>
...
Note in particular:
1. elementFormDefault is not specified. Therefore it takes the default
value of unqualified.
2. extension is defined by a top-level element. Therefore the
targetNamespace applies and extension is defined only in the namespace
com.google.cloud.tools.eclipse.appengine.libraries
3. The library element is a child of extension and therefore the
targetNamespace does not apply.
Note the use of a Java package name as a target namespace. That's not
recommended, but what's more shocking are the instance documents this
describes. They look like this:
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension-point
id="com.google.cloud.tools.eclipse.appengine.libraries" name="App
Engine Libraries"
schema="schema/com.google.cloud.tools.eclipse.appengine.libraries.exsd"/>
Note the complete lack of namespace declarations. In itself this is
not a problem. Documents don't have to use namespaces. However, if I'm
reading the schema spec correctly, this means that this document is
invalid according to the schema. Am I correct? The schema spec is
quite opaque on these matters.
In more generic terms if a schema declares a target namespace, and
elementFormDefault="unqualified", then top-level elements defined in
the schema should be in the targetNamespace. Am I readin this right?
FWIW, I'm primarily concerned with elements here. The extra
complexities of attributes aren't immediately relevant.
--
Elliotte Rusty Harold
elharo@ibiblio.org
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]