使用xsd:import&& XSD:包括

时间:2014-11-26 20:03:05

标签: xml xsd

这是一个算法,总结了使用import或include的可能情况。

假设A.xsd和B.xsd两个文件;

  • if(targetNamesapce属性未在两个文件中定义或在两者中定义,具有相同的值(相同的命名空间)){使用include元素;}
  • else {使用导入元素}

您对此算法有何看法?有效与否?

提前谢谢

1 个答案:

答案 0 :(得分:1)

这些规则会产生正确的结果,但它们也排除了一个法律案例,通常称为“变色龙包括”:

  • 如果A.xsd具有目标名称空间且B.xsd没有,则A.xsd可以包含B.xsd,并且将处理B.xsd,就好像它具有与A.xsd相同的目标名称空间。

注意,如果C.xsd也有一个(不同的)目标命名空间并且还包含B.xsd,那么生成的模式将在命名空间A中有一些组件,而在命名空间C中有一些组件从B中的相同声明派生。 XSD。 (因此名称'chameleon include':从B.xsd派生的组件采用其调用者的名称空间,变色龙采用其周围颜色的方式。)