无法验证导入 XSD
Not able to validate against imported XSD
我正在尝试根据导入到另一个 XSD 的 XSD 验证我的 XML。
请看下面的代码:
xml1.xml:
<e1 xmlns="n1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="n2 main.xsd">
</e1>
xsd1.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="n1"
elementFormDefault="qualified">
<xsd:element name="e1"/>
</xsd:schema>
main.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="n2"
elementFormDefault="qualified">
<xsd:import namespace = "n1" schemaLocation = "xsd1.xsd"/>
</xsd:schema>
验证 xml1.xml(在带有 xml 工具的 netbeans 中或在 java 中)简单地抛出:
cvc-elt.1: Cannot find the declaration of element 'e1'. [3]
可能是什么问题?
您的 xsi:schemaLocation
模型需要调整。 不是 include 语句 自动将 XSDs 引入范围;它是一个 hint 表示对于给定的名称空间,验证可能会找到合适的 XSD.
当您声明 xsi:schemaLocation="n2 main.xsd"
时,您是在暗示要在 main.xsd 中查找 n2
命名空间,但您并未提及 n1
命名空间实际上与您的根元素相关联。验证遇到 n1
命名空间中的根元素,查阅您的提示,没有发现任何内容,让您知道:
cvc-elt.1: Cannot find the declaration of element 'e1'. [3]
这是应该的。您的前进道路很明确:为根元素的 n1
名称空间添加提示:
xsi:schemaLocation="n2 main.xsd n1 xsd1.xsd"
您的 XML 文档将成功验证。
我正在尝试根据导入到另一个 XSD 的 XSD 验证我的 XML。
请看下面的代码:
xml1.xml:
<e1 xmlns="n1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="n2 main.xsd">
</e1>
xsd1.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="n1"
elementFormDefault="qualified">
<xsd:element name="e1"/>
</xsd:schema>
main.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="n2"
elementFormDefault="qualified">
<xsd:import namespace = "n1" schemaLocation = "xsd1.xsd"/>
</xsd:schema>
验证 xml1.xml(在带有 xml 工具的 netbeans 中或在 java 中)简单地抛出:
cvc-elt.1: Cannot find the declaration of element 'e1'. [3]
可能是什么问题?
您的 xsi:schemaLocation
模型需要调整。 不是 include 语句 自动将 XSDs 引入范围;它是一个 hint 表示对于给定的名称空间,验证可能会找到合适的 XSD.
当您声明 xsi:schemaLocation="n2 main.xsd"
时,您是在暗示要在 main.xsd 中查找 n2
命名空间,但您并未提及 n1
命名空间实际上与您的根元素相关联。验证遇到 n1
命名空间中的根元素,查阅您的提示,没有发现任何内容,让您知道:
cvc-elt.1: Cannot find the declaration of element 'e1'. [3]
这是应该的。您的前进道路很明确:为根元素的 n1
名称空间添加提示:
xsi:schemaLocation="n2 main.xsd n1 xsd1.xsd"
您的 XML 文档将成功验证。