nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

Default-Namespace in Schema und Instanz

Von: Rainer Frey (rainerfrey@web.de) [Profil]
Datum: 24.06.2009 15:02
Message-ID: <h1t84e$tpv$1@news.eternal-september.org>
Newsgroup: de.comp.text.xml
Hallo,

ich habe zum ersten Mal ein Schema entwickelt, und verstehe den Zusammenhang
nicht zwischen dem Default-Namespace des Schemas und der XML-Instanz.

Beim Schema habe ich als Default-Namespace den von XML-Schema gewählt, um
die Schema-Tags nicht qualifizieren zu müssen. Dazu  habe ich einen
Namespace deklariert für das definierte XML, und hab den als
Target-Namespace festgelegt.

In der XML-Instanz möchte ich diesen Namespace als Default-Namespace
verwenden, um die Elemente hier nicht qualifizieren zu müssen. Das geht
aber nicht (s.u.).

Schema:
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/schema"
xmlns:tns="http://www.example.org/schema">
<element name="plugin" type="tns:pluginComplexType"/>
<complexType name="pluginComplexType">
<sequence>
<element name="name" type="string"></element>
<element name="version" type="string"></element>
</sequence>
</complexType>
</schema>

Instanz:
<plugin xmlns="http://www.example.org/schema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/schema schema.xsd ">
<name>name</name>
<version>version</version>
</plugin>

Ergibt beim Validieren (Eclipse oder JAXP/Xerces) folgenden Fehler:
cvc-complex-type.2.4.a: Invalid content was found starting with
element 'name'. One of '{name}' is expected.

Diese Variante der Instanz geht:
<tns:plugin xmlns:tns="http://www.example.org/schema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/schema schema.xsd ">
<name>name</name>
<version>version</version>
</tns:plugin>

Wieso ist es bei diesem Schema nicht möglich, in der Instanz den
Target-Namespace als Default-Namespace zu verwenden? Namespace mit Präfix +
qualifizierte Elemente sollte doch identisch sein zu Default-Namespace und
unqualifizierte Elemente? Und wie kann ich ereichen, dass das Root-Eelement
der Instanz nicht qualifiziert werden muss?

GruÃ
Rainer



[ Auf dieses Posting antworten ]

Antworten