给出以下XML片段:
...
<ns1:Method>
<Parameter1 />
<Parameter2 />
</ns1:Method>
<ns2:Method>
<Parameter3 />
</ns2:Method>
...
是否可以编写一个XML Schema定义,它将complexType
的{{1}}与其命名空间不同,以便可以使用多个名为Method
的不同类型?
在此示例中,名称空间Method
中的Method
元素应该有2个子元素,名称空间ns1
中的元素应该只有1个子元素。
答案 0 :(得分:1)
不仅可以使用命名空间来区分其他名称相同的组件(包括元素),这也是创建命名空间的原因。
XML Schema的目标命名空间成为XSD中定义的每个元素名称的一部分。您可以通过xsd:import
将来自多个XSD的声明与不同的命名空间相结合。
但请注意,尽管您可以通过命名空间区分不同的Method
元素,但如果可能,仍可以通过其本地名称更好地区分元素:
<CalculateAreaMethod>
<Height/>
<Width/>
</CalculateAreaMethod>
<GetTemperatureMethod>
<Location/>
</GetTemperatureMethod>
最后,基于属性值区分元素类型的另一个选项是XSD 1.1的条件类型赋值,它将支持这种命名:
<Method name="CalculateAreaMethod">
<Height/>
<Width/>
</Method>
<Method name="GetTemperatureMethod">
<Location/>
</Method>