我遇到類似於No matching global declaration available for the validation root的問題,但它無法幫助我解決驗證XML問題。 在php.net的評論中,我讀過根元素的子元素也需要一個命名空間。我嘗試過變體,但它不會解決問題,也不會更改消息。有誰知道什麼是錯的?無法通過XSD驗證
libxml Version => 2.7.6
libxml
libxml2 Version => 2.7.6
libxslt compiled against libxml Version => 2.7.6
PHP:
print_r($xml->schemaValidate('customer.xsd'));
錯誤:
PHP Warning: DOMDocument::schemaValidate():
Element '{http://xxx.de/ecom-customer}customerExport':
No matching global declaration available for the validation root.
XML開頭:
<?xml version="1.0" encoding="UTF-8"?>
<xxx:customerExport xmlns:xxx="http://xxx.de/ecom-customer">
<datasource>PROD</datasource>
...
XSD部分:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xxx="http://xxx.de/ecom-customer"
targetNamespace="http://xxx.de/ecom-customer"
jxb:version="2.0">
<xsd:element name="customerExport" type="xxx:customerExport"
xmlns="xxx">
<xsd:annotation>
<xsd:appinfo>
<jxb:class name="CustomerExportRoot" />
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
您沒有在XSD中定義名稱空間http:// xxx/ecom-customer。 – ThW
感謝您的反饋,將調查缺少的名稱空間。 – DanFromGermany