Verwenden Sie zwei-schemas in einer xml -
Habe ich die folgenden xsd-Dateien:
SchemaA
<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://schemaA"
elementFormDefault="qualified"
xmlns="http://schemaA"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Configuration">
<xs:complexType>
<xs:all>
<xs:element name="StationNumber" type="xs:int">
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
</xs:schema>
SchemaB
<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://schemaB"
elementFormDefault="qualified"
xmlns="http://schemaB"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:attribute name="Name" type="xs:string" />
</xs:schema>
Ich versuche, auf Sie verweisen und verwenden Sie von den folgenden XML-Code:
<?xml version="1.0"?>
<Configuration xmlns="http://schemaA"
xmlns:ba="http://schemaB">
<StationNumber ba:Name="aaa">1</StationNumber>
</Configuration>
Visual Studio 2008 unterstreicht ba:Namen wie error mit der Beschreibung: 'http://schemaB:Name ' - Attribut nicht deklariert.
Irgendwelche Ideen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist nicht eine zwei-schema problem, Ihre Schemata entsprechen nicht den Inhalt Ihres Dokuments. Das Attribut Namen ist nicht aufgeführt, als eines der möglichen Attribute auf Konfiguration.
Nur weil Sie deklarieren Sie eine Globale Attribut, es bedeutet nicht, Sie können es verwenden, wo immer Sie wollen. So müssen Sie entweder importieren von einem schema in das andere, und angeben, dass das Attribut auftreten können, in Konfiguration, wie in der ersten Antwort ewernli oben.
Oder Sie es zulassen, dass jedes Attribut von der zweiten Namensraum auftreten in das erste schema, z.B.:
GEÄNDERT: folgenden den Kommentar von ewernli unten, die richtig darauf hin, dass dies das zusätzliche problem, dass StationNumber ist von einem einfachen Typ. Wenn Sie möchten, bereiten Sie den Typ zu nehmen-Attribute, die Sie benötigen, um zu erzwingen Komplex:
Nun können Sie die attribute wie oben beschrieben.
Wenn das element StationNumber nicht enthalten ein Attribut in der schemaA, dann
<StationNumber ba:Name="...">...</StationNumber>
ist nicht gültig.Lösung 1: embedd
schemaB
imschemaA
und richtig definieren, das AttributDann die folgende XML würde dann überprüft werden, die von NetBeans:
Lösung 2: haben Sie dennoch eine separate
schemaB
zu definieren, das Attribut, aber Sie brauchen, um es zu importieren inschemaA
mitref
:Dann die XML sieht wie folgt aus:
Muss es in der Lage, die XSD-Code von der namespace und das ist, was es ist, beschweren. Sie können die schemaLocation in die Instanz-Dokument zu erklären, dass diese.