我看過幾個關于這個問題的不同帖子,但沒有一個建議的解決方案解決了我的問題,這似乎代表我存在一些根本性的誤解。我的印象是我的 XML 和 XSD 之間存在名稱間距問題,但我不確定如何解決?
驗證我的 XML 時出現以下錯誤:
元素
'{http://www.w3.org/2001/XMLSchema}schema':沒有可用于驗證根的匹配全域宣告。第 1 行`
XML:
<?xml version="1.0" encoding="UTF-8"?>
<DOCUMENT_FILE
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="path\to\my.xsd">
<DOCUMENT>
<BRANCH_NUMBER>num</BRANCH_NUMBER>
</DOCUMENT>
</DOCUMENT_FILE>
XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1.0">
<xsd:element name="DOCUMENT_FILE">
<xsd:complexType>
<xsd:sequence minOccurs="1" maxOccurs="1">
<xsd:element name="DOCUMENT" minOccurs="1" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence minOccurs="1" maxOccurs="1">
<xsd:element name="BRANCH_NUMBER" minOccurs="1" maxOccurs="1" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
uj5u.com熱心網友回復:
您的 XML 對您的 XSD 有效。(您的基本理解是合理的。)您如何指定 XSD 的路徑可能只是一個小問題。
同一目錄下的XSD:
代替
xsi:noNamespaceSchemaLocation="path\to\my.xsd">
和
xsi:noNamespaceSchemaLocation="my.xsd">
另一個相對指定的本地目錄中的 XSD:
xsi:noNamespaceSchemaLocation="path/to/my.xsd">
另一個絕對指定的本地目錄中的 XSD:
xsi:noNamespaceSchemaLocation="file:///path/to/my.xsd">
遠程目錄中的 XSD:
xsi:noNamespaceSchemaLocation="https://example.com/path/to/my.xsd">
也可以看看
- 如何正確參考本地 XML 架構檔案?
- 如何使用 schemaLocation 或 noNamespaceSchemaLocation 將 XML 鏈接到 XSD?
聊天后更新:我們更仔細地閱讀了錯誤訊息,并意識到這是關于驗證 XSD 本身的失敗,而不是 XML。以上關于 XSD 路徑規范的提示可能對未來的讀者有用,所以無論如何我都會保留這個答案。
底線:如果您看到有關schema元素的驗證錯誤,請檢查您是否實際呼叫了驗證例程,其中指定的 XML 檔案已更正,而不是 XSD 檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/396652.html
