2017-02-01 1 views
0

Ich habe ein XML-Schema erstellt und hochgeladen. Es ist gültig. Wenn ich versuchte, ein Dokument zu erstellen, wurde es nicht erkannt. Ich habe verschiedene Kombinationen von Schemaattributen ausprobiert. Das Ziel besteht nicht darin, Namensraumpräfixe für Tags im Dokument zu verwenden. Hier ist der Beginn eines Testdokument:Aufrufen eines XML-Schemas in einem Dokument

<?xml version="1.0" encoding="UTF-8"?> 
<indexdata xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.LevTechInc.com/Schemas/IXML.xsd" 
    xmlns="http://www.LevTechInc.com/Schemas/IXML.xsd"> 
    <source creator="Txt2Arc" version="3.0" time="2017-01-20T14:41:49"/> 
    <fonts> 
    <font id="0"> 
    <fname>Arial</fname> 
    <aname>Arial</aname> 
    </font> 
    </fonts> 
    ... 
</indexdata> <!-- added by edit to complete the XML --> 

Antwort

0

xsi:schemaLocation hat zwei Teile, einen Namespace-URI und eine URL, die verwendet wird, um das XML-Schema-Dokument abgerufen werden. In Ihrem Fall sind beide genau die gleiche Zeichenfolge, so dass die folgenden Werke:

ein entferntes Schema Dokument

<?xml version="1.0" encoding="UTF-8"?> 
<indexdata xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.LevTechInc.com/Schemas/IXML.xsd http://www.LevTechInc.com/Schemas/IXML.xsd" 
xmlns="http://www.LevTechInc.com/Schemas/IXML.xsd"> 
    <source creator="Txt2Arc" version="3.0" time="2017-01-20T14:41:49"/> 
    <fonts> 
     <font id="0"> 
      <fname>Arial</fname> 
      <aname>Arial</aname> 
     </font> 
    </fonts> 
</indexdata> 

Aber das Testdokument Referenzierung ist nicht gültig in Bezug auf das Schema auf http://www.LevTechInc.com/Schemas/IXML.xsd weil einige Elemente sollten nicht im Namespace http://www.LevTechInc.com/Schemas/IXML.xsd (source und fonts) sein und ein Element fehlt (records).


Eine naive Art und Weise Ihres Testdokument wäre einzuführen xmlns="" an mehreren Stellen zu korrigieren Elemente in den Standard-Namespace enden zu vermeiden. Aber eine bessere Lösung ist die Standard-Namespace-Deklaration zu aktivieren:

xmlns="http://www.LevTechInc.com/Schemas/IXML.xsd" 

in einer Erklärung mit einem Präfix:

xmlns:ixml="http://www.LevTechInc.com/Schemas/IXML.xsd" 

und verwenden sie nur auf dem ein Element, das in diesem Namensraum sein sollte, indexdata. Dann wird das Dokument

Eine gültige Instanz dieses Schema

<?xml version="1.0" encoding="UTF-8"?> 
<ixml:indexdata xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.LevTechInc.com/Schemas/IXML.xsd http://www.LevTechInc.com/Schemas/IXML.xsd" 
xmlns:ixml="http://www.LevTechInc.com/Schemas/IXML.xsd"> 
    <source creator="Txt2Arc" version="3.0" time="2017-01-20T14:41:49"/> 
    <fonts> 
     <font id="0"> 
      <fname>Arial</fname> 
      <aname>Arial</aname> 
     </font> 
    </fonts> 
    <records></records> 
</ixml:indexdata> 
+0

Dank, dass gearbeitet zu haben scheint. –

+0

@DaveReam Froh, das zu hören. Wenn mein Beitrag Ihre Frage beantwortet hat, denken Sie bitte daran, sie zu akzeptieren. Vielen Dank! Weitere Hilfe zur Annahme einer Antwort: http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work. –

Verwandte Themen