我有2个xsds。
我试图从第二个中的1 xsd重新定义一些复杂类型。
但我在重新定义时遇到验证错误。
我无法理解为什么。
第一个Xsd(ConfigProperties.xsd):
?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://example.com/configProperties" targetNamespace="http://example.com/configProperties" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="config-properties">
<xs:complexType>
<xs:sequence>
<xs:element ref="System"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="System">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="PushMessageFields" type="PushMessageFields"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="PushMessageFields"/>
</xs:schema>
第二个Xsd(SomeConfigProperties.xsd):
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://example.com/SomeConfigProperties" targetNamespace="http://example.com/SomeConfigProperties" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:redefine schemaLocation="ConfigProperties.xsd">
<xs:complexType name="PushMessageFields">
<xs:complexContent>
<xs:extension base="PushMessageFields">
<xs:sequence>
<xs:element name="color" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:redefine>
</xs:schema>
我在第二个XSD中收到错误:&#34;无法解析名称&#39; PushMessageFields&#39; &#34;
我的问题在哪里?
答案 0 :(得分:2)
它无法解析名称,因为它无法在PushMessageFields
命名空间中找到http://example.com/SomeConfigProperties
。空无一人。您无法从不同的目标命名空间重新定义类型。
除非您有其他错误,否则如果您更改新样式表的目标命名空间以匹配导入的目标命名空间,则它应该有效。在你的第二个XSD替换:
<xs:schema xmlns="http://example.com/SomeConfigProperties"
targetNamespace="http://example.com/SomeConfigProperties" ... >
与
<xs:schema xmlns="http://example.com/configProperties"
targetNamespace="http://example.com/configProperties" ...>