首先,感谢您的宽容,我是 XML Schema 初学者。
我已经使用 XInclude 构建了一个包含多个包含的 XML 文件。我之所以选择这种方法高于其他方法,是因为每个包含的 XML 文件都可以独立验证。
当我处理本地文件时,我没有定义任何命名空间,然后我使用 xsi:noNamespaceSchemaLocation 属性来引用我的 xsd 文件。
参数.xml
<?xml version="1.0" encoding="UTF-8"?>
<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="parameters.xsd">
<xi:include href="./Transducers/transducers.xml" parse="xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
</Root>
参数.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:include schemaLocation="./Transducers/transducers.xsd"/>
<xs:element name="Root">
<xs:complexType>
<xs:sequence>
<xs:element ref="Transducers" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
转换器/transducer.xml
<?xml version="1.0" encoding="UTF-8"?>
<Transducers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="./transducers.xsd">
...
</Transducers>
我没有放置transducers.xsd 文件,因为它不再为问题提供附加值。只要考虑到transducer.xml 对他的模式是有效的。
因此,当我尝试验证 parameters.xml 时,出现以下错误:
'noNamespaceSchemaLocation' 属性引用其目标命名空间已用于验证的模式。
我很容易理解的错误,但我无法解决我的情况。
在这种情况下会有什么解决方案。谢谢。