Problem bei elementFormDefault="unqualified" !!!

08/05/2008 - 16:46 von Thomas | Report spam
Hallo zusammen,

ich übe gerade an einem Schema - besser gesagt an zwei Schemata und
einem XML-Dokument und bin an einem Problem gestoßen - nàmlich wenn ich
in einem (importierten!!!) Schema das Attribut elementFormDefault auf
unqualified setze, werden die lokalen Elemente dieses Schemas im
XML-Dokument nicht erkannt.

Konkret geht es um folgendes Beispiel:

=Text.xsd
=<?xml version="1.0" encoding="ISO-8859-1"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:mm="MeinText"
targetNamespace="MeinText" elementFormDefault="unqualified">

<complexType name="MailInhalt">
<sequence>
<element name="Text" type="string"/>
</sequence>
<attribute name="Datum" type="date"/>
</complexType>
<element name="Inhalt" type="mm:MailInhalt"/>
</schema>

=eMail.xsd
=<?xml version="1.0" encoding="ISO-8859-1"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:mt="MeinText"
xmlns:mm="MeinMail" targetNamespace="MeinMail"
elementFormDefault="qualified">

<import namespace="MeinText" schemaLocation="Text.xsd"/>

<complexType name="Mail">
<sequence>
<element name="Betreff" type="string"/>
<element name="Sender" type="string"/>
<element ref="mt:Inhalt"/>
</sequence>
</complexType>

<element name="Nachricht" type="mm:Mail"/>
</schema>

=eMail.xml
=<?xml version="1.0" encoding="ISO-8859-1"?>

<Nachricht xmlns="MeinMail" xmlns:mt="MeinText"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="MeinMail eMail.xsd">
<Betreff>test</Betreff>
<Sender>Benutzer@server.com</Sender>
<mt:Inhalt Datum="2008-05-07">
<Text>Hier kommt der Inhalt!</Text>
</mt:Inhalt>
</Nachricht>
=
Wenn ich nun in Text.xsd das elementFormDefault auf "unqualified" setze,
dann schlàgt die Validierung von eMail.xml fehl und Stylus Studio 2006
sagt "Unknown element 'Text'":
..
...
<mt:Inhalt Datum="2008-05-07">
<Text>Hier kommt der Inhalt!</Text>
</mt:Inhalt>
...
..

Wenn ich aber in Text.xsd das elementFormDefault auf "qualified" setze
und <Text> qualifiziert schreibe also:
..
...
<mt:Inhalt Datum="2008-05-07">
<mt:Text>Hier kommt der Inhalt!</mt:Text>
</mt:Inhalt>
...
..
Dann klappt auch die Validierung der eMail.xml!

Genau das kann ich nicht nachvollziehen, warum es bei der ersten
Variante mit unqualified und unqualifiziertem <Text> Element nicht
funktioniert.

Ich habe es so verstanden, daß das Attribut elementFormDefault dazu da
ist, damit man entscheiden kann, ob die Elementen aus dem betroffenen
Schema in anderen Dokumenten qualifiziert oder einfach notiert werden
sollen und das tue ich doch in beiden Fàllen richtig oder???

Was habe ich denn falsch verstanden bzw. was mache ich denn falsch?

Danke vorab für jede Hilfe.

Gruß
Thomas
 

Lesen sie die antworten

#1 Martin Honnen
08/05/2008 - 16:58 | Warnen spam
Thomas wrote:

<Nachricht xmlns="MeinMail" xmlns:mt="MeinText"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="MeinMail eMail.xsd">
<Betreff>test</Betreff>
<Sender></Sender>
<mt:Inhalt Datum="2008-05-07">
<Text>Hier kommt der Inhalt!</Text>



Versuche es mit
<Text xmlns="">...</Text>
denn sonst ist das 'Text'-Element ja in Namensraum 'MeinMail'.





Martin Honnen MVP XML
http://JavaScript.FAQTs.com/

Ähnliche fragen