我无法理解声明XML架构的某些行为。
问题 这个xml架构工作正常:
*<?xml version="1.0" encoding="windows-1252" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.example.org" xmlns:ab="http://test.com"
targetNamespace="http://www.example.org"
elementFormDefault="qualified">
<xsd:element name="simple1" type="complexType1"/>
<xsd:complexType name="complexType1">
<xsd:sequence>
<xsd:element name="element1" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>*
但如果我更改targetnamespace除http://www.example.org之外的任何内容,则架构找不到complexType1。为什么会这样。 这不起作用。
*<?xml version="1.0" encoding="windows-1252" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.example.org" xmlns:ab="http://test.com"
targetNamespace="http://www.example.org99999"
elementFormDefault="qualified">
<xsd:element name="simple1" type="complexType1"/>
<xsd:complexType name="complexType1">
<xsd:sequence>
<xsd:element name="element1" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>*
提前致谢
答案 0 :(得分:0)
当您声明诸如complexType
之类的组件时,它会进入架构的targetNamespace
。当您引用具有无前缀名称的组件时,如在type="complexType1"
属性中,这将被视为对默认命名空间的引用(在xmlns属性中声明)。在您的第一个示例中,targetNamespace
和默认命名空间是相同的,因此它可以工作;在第二个例子中,它们是不同的,所以它没有。
如何解决?这取决于你想要达到的目标,你没有告诉我们。