So importieren Sie ein XML-schema in die "no namespace"
Habe ich ein schema hier, wo ich bin versucht include/import ein anderes schema, das hat keine Namespaces (und dies kann nicht geändert werden, weil es kommt von einem anderen Anbieter und würde es nicht mehr validieren Sie Ihre XML). Hier ist das erste Schema:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:samp="http://sample/namespace"
targetNamespace="http://sample/namespace"
elementFormDefault="unqualified" attributeFormDefault="unqualified"
xmlns:otr1="http://sample/import/namespace1"
xmlns:otr2="http://sample/import/namespace2">
<xs:import namespace="http://sample/import/namespace1" schemaLocation="other1.xsd" />
<xs:import namespace="http://sample/import/namespace2" schemaLocation="other2.xsd" />
<!-- This one below is having problems, it is valid XML, and I am able to use it
but I am not meeting the actual requirments I have (explained later) -->
<xs:include schemaLocation=="NO_NAME_SPACE_PROBLEM.xsd"/>
...
<xs:element ref="some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA"/>
...
</xs:schema>
Und die "NO_NAME_SPACE_SHEMA_PROBLEM.xsd", das kann geändert werden, um einige Grad, aber es kann nicht haben-namespace.
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="unqualified" attributeFormDefault="unqualified">
<xsd:element name="some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA"
type="xsd:string" nillable="true"/>
</xs:schema>
Das problem ist, dass die some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA
wird in der samp
namespace. Also, wenn ich versuche, marshall dieses XML-druckt es aus <samp:some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA><child-elem/></samp:some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA>
ist das ein großes problem da, die XML-Daten nicht überprüfen, da es ist nicht dazu gedacht zu haben. Also mein Ziel ist es, einfach importieren Sie die Elemente in der nicht-namespace-namespace.
Update 1: Sorry für die Verwirrung, ich war und bin die Verwendung von xs:include, die nicht von xs:import für die nicht-namespace-schema. Frage-syntax aktualisiert wurde. Ich bin auch mit JiBX codegen zum generieren von domain-Objekten und JiBX verbindlich für marshalling. So ist es, es muss sein, JiBX kompatibel zu.
Update 2: Wie pro skaffman Antwort, werde ich jetzt auch die Verwendung von xs:import. Ich denke, ich werde Verzweigung diese in eine neue Frage stellen.
import
und include
Sie tun völlig unterschiedliche Dinge.Ja tut mir Leid, ich meinte man, dass früher, aber wurde aufgehalten bevor ich wieder zu meiner Tastatur.
InformationsquelleAutor Zombies | 2010-08-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie versucht,
Interessant, die XML-Schema-spec stark darauf hin, dass
importieren
NO_NAME_SPACE_PROBLEM.xsd
in die "no namespace". Falls in Ihrer Umgebung, anstatt Sie zu importieren in die einschließenden-schema-Dokument-namespace, dann bin ich ziemlich sicher, dass ein Fehler in Ihre Plattform.update: OK, das update sagt, dass Sie versuchen, zu verwenden
<xs:include>
zu beziehen Typen in einen anderen namespace. Sie können nicht dies tun -<xs:include>
immer bringt die Elemente enthalten, die in dem gleichen Namensraum wie das übergeordnete schema-Dokument. Wenn Sie für einen anderen namespace verwenden, müssen Sie<xs:import>
.Wenn Sie möchten, finden Sie in einem der element-Definitionen, die in der importierten nicht-namespace-schema, dann müssen Sie einen Weg finden, das zuweisen eines Präfixes zu den "no namespace" namespace. Wenn es ein Präfix, könnten Sie finden Sie wie folgt:
Versuchen Sie das Attribut
xmlns:nn=""
an das übergeordnete schema-Dokument, sehen, ob das funktioniert.<xs:import namespace="" schemaLocation="NO_NAME_SPACE_PROBLEM.xsd"/>
aber jetzt<xs:element ref="some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA"/>
kann nicht beheben das element, ref.Siehe aktualisierte Antwort.
du bist aktualisierte Antwort ist ziemlich geschätzt. Ich bin jetzt auf der Suche in dieser Richtung. Ich bin nur mit JiBX Probleme nun, vielleicht werde ich Zweig, der in eine neue Frage.
hinzufügen
xmlns:=""
was zu einem Fehler: kann nicht hinzufügen von leeren string auf " nicht-Standard-namespace.Nicht
xmlns:=""
,xmlns:nn=""
InformationsquelleAutor skaffman