Ich wäre nicht hier, wenn ich mich nicht in Oblivion gegoogelt hätte. Ich habe das folgende Problem: Ich habe ein XML-Schema, 3 einzelne XML-Dokumente und ein XML-Dokument, um alle anderen zu verbinden 3. Ich renne in den folgenden Fehler und ich verstehe nicht warum.Versuch, XML-Dateien mit Xinclude-Attribut zu verbinden xml: Basisfehler
E [Xerces] cvc-complex-type.3.2.2: Das Attribut 'xml: base' darf nicht im Element 'SoftwareRequirementsDocument' erscheinen.
Ich habe eine Reihe von Forenbeiträgen von Google mit Menschen mit einem ähnlichen Problem gelesen, aber keine ihrer Fixes würde mir helfen. Ich werde mein Schema, 1 XML-Dokument, das verbunden werden soll, und das XML-Dokument mit XInclude veröffentlichen. Ich werde den Anfang jedes Dokuments so veröffentlichen, wie es benötigt wird. Hier
ist NotionalSchema2.xsd:
<xsd:element name="ProjectLifecycleDocuments" type="ProjectLifecycleDocumentsType"/>
<xsd:complexType name="ProjectLifecycleDocumentsType">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="Team"/>
<xsd:element ref="SoftwareRequirementsDocument"/>
<xsd:element ref="UseCaseDocument"/>
<xsd:element ref="TestCaseDocument"/>
</xsd:choice>
<xsd:attribute name="id" use="required" type="xsd:ID"/>
</xsd:complexType>
<xsd:element name="SoftwareRequirementsDocument" type="SoftwareRequirementsDocumentType"/>
<xsd:complexType name="SoftwareRequirementsDocumentType">
<xsd:sequence>
<xsd:element ref="Section" maxOccurs="unbounded"/>
<!-- Other global elements to be referenced here. -->
</xsd:sequence>
<xsd:attribute name="projectName" use="required" type="xsd:string"/>
<!--<xsd:attribute name="id" use="required" type="xsd:ID"/>-->
</xsd:complexType>
Hier mein NotionalSRS2.xml ist:
<SoftwareRequirementsDocument projectName="Lifecycle Documents with Requirements
Tracking" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="NotionalSchema2.xsd"
xmlns:xx="http://apache.org/xml/features/xinclude/fixup-base-uris">
<Section id="RQ1.0">
<Title>Introduction</Title>
<Para>The Software Requirements Specification details the extent of NUWC’s Lifecycle Project Manager. The product’s main feature is it’s ability to create and manage lifecycle documents using a graphical user interface. The lifecycle documents will be organized and exported using an XML Schema. This can be accomplished by a user who has no knowledge of the XML language. This document will review all the basic functionality required for a user to edit, create, and manage lifecycle projects.
</Para>
</Section>
<Section id="RQ1.1">
<Title>Purpose</Title>
<Para> To provide a detailed description of how the product will produce it’s lifecycle documents as well as edit and export them. It also overviews the basic functional requirements requested by the customer.
</Para>
</Section>
Und hier ist meine Datei XInclude verwenden, ProjectLifecycleDocuments.xml:
<ProjectLifecycleDocuments id="PL1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xmlns:xi="http://www.w3.org/2001/XInclude"
xsi:noNamespaceSchemaLocation="NotionalSchema2.xsd">
<xi:include href="NotionalSRS2.xml"/>
</ProjectLifecycleDocuments>
Jetzt lese ich viel über Namespace, wenn ich diesen Fehler suche, aber ich konnte nicht verstehe, wo ich falsch gelaufen bin.
Wenn Sie mir in die richtige Richtung zeigen könnten, warum dieser Fehler passiert und wie ich es beheben kann, wäre das großartig. Siehe
in Ihrem zweiten Link: „entsprechend der Spezifikation für XInclude, Prozessoren muss ein XML hinzuzufügen: Basisattribut-Elemente von Orten mit einer anderen Basis URI enthalten. Ohne diese Attribute wären die resultierenden Infoset-Informationen inkorrekt. "Was genau wird falsch, wenn das Einfügen von xml: base deaktiviert wird und wann wird es ein Problem? – Andreas
Ich bin mir nicht sicher über einen falschen Teil, aber es würde es schwerer machen Introspektion von wo die Elemente herkommen, vielleicht eine gute Begründung für die Aufnahme dieses Meta-Attributs, wenn rekursive Includes angeboten werden. – ruffsl