XMLSchema (XSL)
hasp
- xml
0 MudGuard
Hallo, ich steh total auf dem Schlauch und wäre euch sehr zu Dank verpflichtet, wenn Ihr mir runter helfen könntet ...
Zum Thema:
Ich würde gerne ein XSD zu folgendem XML schreiben (hier etwas vereinfacht, reicht aber für mein Problem).
Mein Problem ist die Fehlermeldung:
hasp:root cannot have a namespace prefix us ref instead ...
DAS XML
<hasp:shorties xmlns:hasp="http://www.hasp.de" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="val\shorties.xsd">
hasp:tutorial
hasp:titleTEXT</hasp:title>
hasp:literature
hasp:root
hasp:hintTEXT</hasp:hint>
hasp:descriptionTEXT</hasp:description>
</hasp:root>
hasp:root
...
</hasp:root>
</hasp:literature>
</hasp:tutorial>
hasp:tutorial
...
</hasp:tutorial>
</hasp:shorties>
DAS XSD:
Würde dummerweise wahrscheinlich den Rahme dieser Nachricht sprengen, daher in Kurzform:
<xsd:schema targetNamespace="http://www.hasp.de" xmlns:hasp="http://www.hasp.de"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
....
<xsd:complexType name="literatureType">
xsd:sequence
<xsd:element name="hasp:root" type="rootType"/>
</xsd:sequence>
</xsd:complexType>
...
</xsd:schema>
DANKE
Hannes Schmidpeter
Hi,
Würde dummerweise wahrscheinlich den Rahme dieser Nachricht sprengen, daher in Kurzform:
<xsd:schema targetNamespace="http://www.hasp.de" xmlns:hasp="http://www.hasp.de"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
....
<xsd:complexType name="literatureType">
xsd:sequence
<xsd:element name="hasp:root" type="rootType"/>
laß den Namespace im Schema weg. Der hat da m.E. nichts verloren.
Ich versteh auch nicht, wozu Du im XML den Namespace verwendest - scheinen doch alle Elemente aus demselben Namespace zu kommen, also gibt es keine Namenskonflikte.
cu,
Andreas
Danke Andreas,
es ging mir auch nur darum zu verstehen wie es denn mit mehreren namespaces funktionieren würde, d.h. was ist wenn ich zwei versch. namespaces in meinem XML-Dolument habe und ich würde gerne ein XSD schreiben. Mit einer DTD ist das ja ganz leicht, aber mit einem Schema? Wenn ich im XSD einfach die Namespaces weglasse, wie kann dannn ein Parser validieren? (Klassisches Beispiel in einer XML-Datei kommen zwei Schüsseln vor einmal Geschirr einmal Satelit, die Subelemente unterscheiden sich natürlich gravierend, Lösung, logisch --> zwei Namespaces geschirr und sat, aber wie wird via XSD validiert?)
Danke
Hannes
Hi,
es ging mir auch nur darum zu verstehen wie es denn mit mehreren namespaces funktionieren würde, d.h. was ist wenn ich zwei versch. namespaces in meinem XML-Dolument habe und ich würde gerne ein XSD schreiben. Mit einer DTD ist das ja ganz leicht, aber mit einem Schema? Wenn ich im XSD einfach die Namespaces weglasse, wie kann dannn ein Parser validieren? (Klassisches Beispiel in einer XML-Datei kommen zwei Schüsseln vor einmal Geschirr einmal Satelit, die Subelemente unterscheiden sich natürlich gravierend, Lösung, logisch --> zwei Namespaces geschirr und sat, aber wie wird via XSD validiert?)
Ein Schema beschreibt doch immer nur einen einzigen Namensraum.
Im XML können mehrere Namespaces verwendet werden, dann werden die Element-Namen/Attribut-Namen mit einem Namespace-Identifier versehen.
Und die Verbindung, welche Elemente im XML aus welchem Namensraum kommen, wird dann über die xmlns:bla-Attribute hergestellt.
cu,
Andreas
OKAY,
jetzt kommen wir der Sache näher, wie "markiere" ich ein Schema für den Namensraum xyz?
Ich hoffe ich habe mich verständlich ausgedrückt, soweit ich dich verstanden habe existiert ein schemal für satelit und eines für geschirr ... wie halte ich/der parser die beiden auseinander?
Danke
Hannes