的XML(簡化):XML不會驗證對某些XSD
<?xml version="1.0" encoding="UTF-8"?>
<mx:XMLimport xmlns:mx="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Leverancier>nn</Leverancier>
<Bestandsversie>1.1.0.0</Bestandsversie>
</mx:XMLimport>
的XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:element name="XMLimport">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Leverancier" type="xsd:string" minOccurs="1"/>
<xsd:element name="Bestandsversie" type="xsd:string" minOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
如果我從XML的根元素除去mx:
前綴它驗證剛精細。我迷失在名字空間中,現在我正在網上搜索幾個小時。我無法更改XML,因此必須修改XSD以允許使用mx:
前綴。驗證器出現此錯誤:
ERROR: Element '{http://www.w3.org/2001/XMLSchema}XMLimport':
No matching global declaration available for the validation root.
該XML有一些非常錯誤的地方。它使用'http:// www.w3.org/2001/XMLSchema'作爲它的命名空間,這顯然是XSD格式的命名空間(據我所知,它沒有'XMLimport'元素)。你從哪裏得到這個XML? – JLRishe 2013-02-09 15:27:01
嗨JL,XML來自供應商,供應商不能/不會改變它。如果我只是從XML中刪除「mx:」前綴,它工作正常。由於這是不可能的生產方式,我必須改變我自己的XSD。 – HerbertV 2013-02-09 15:34:11
你不是唯一一個在XML命名空間方面丟失的人 - 那個XML的來源顯然也失去了。名稱空間http://www.w3.org/2001/XMLSchema中沒有XMLImport元素。如果供應商真的不能或不會改變它,我會建議找一個新的供應商。如果您不能或不會這樣做,請修正XML:在驗證之前通過篩選器運行它以清理名稱空間聲明。 – 2013-02-10 19:08:05