DarthShader
Erfahrenes Mitglied
Hallo,
ich komme gerade ziemlich bei dem Thema Namespaces durcheinander und hätte da eine, wahrscheinlich einfach zu beantwortende Frage.
Ich habe folgendes einfaches XML Schema erstellt:
Nun lasse ich mir eine XML Datei daraus generieren, die so aussieht:
Meine Frage ist nun, warum muss ich den Namespace "p" angeben? Wenn ich "p" weglasse ("xmlns: p" sowie auch das "p:" beim "TopicBasedDocument" Tag), dann validiert das XML nicht, es erscheint folgender Fehler bei "<topicRoot>":
Kann mir das jemand erklären?
Vielen Dank für Eure Hilfe!
ich komme gerade ziemlich bei dem Thema Namespaces durcheinander und hätte da eine, wahrscheinlich einfach zu beantwortende Frage.
Ich habe folgendes einfaches XML Schema erstellt:
XML:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
xmlns="http://www.test.de/schema/TopicBasedDocument"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.test.de/schema/TopicBasedDocument">
<xsd:complexType name="Topic">
<xsd:sequence minOccurs="1" maxOccurs="1">
<xsd:element name="title" type="xsd:string" />
<xsd:element name="icon" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="id" type="xsd:string" />
</xsd:complexType>
<xsd:complexType name="TopicSet">
<xsd:sequence minOccurs="1" maxOccurs="unbounded">
<xsd:element name="topic" type="Topic" />
</xsd:sequence>
<xsd:attribute name="id" type="xsd:string" />
</xsd:complexType>
<!-- =========
Elements
========= -->
<xsd:element name="TopicBasedDocument">
<xsd:complexType>
<xsd:sequence minOccurs="1" maxOccurs="unbounded">
<xsd:element name="topicRoot" type="TopicSet" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Nun lasse ich mir eine XML Datei daraus generieren, die so aussieht:
XML:
<?xml version="1.0" encoding="UTF-8"?>
<p:TopicBasedDocument
xmlns:p="http://www.test.de/schema/TopicBasedDocument"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.test.de/schema/TopicBasedDocument
test.xsd" >
<topicRoot>
<topic>
<title>title</title>
</topic>
</topicRoot>
</p:TopicBasedDocument>
Meine Frage ist nun, warum muss ich den Namespace "p" angeben? Wenn ich "p" weglasse ("xmlns: p" sowie auch das "p:" beim "TopicBasedDocument" Tag), dann validiert das XML nicht, es erscheint folgender Fehler bei "<topicRoot>":
cvc-complex-type.2.4.a: Invalid content was found starting with
element 'topicRoot'. One of '{topicRoot}' is expected.
Kann mir das jemand erklären?
Vielen Dank für Eure Hilfe!
Zuletzt bearbeitet von einem Moderator: