没有namespace-attribute的模式导入

JBA*_*JBA 1 xml import schema xsd namespaces

HY,

如果我导入这样的命名空间:

<xs:import namespace="UniqueIRIstyleNameSpaceName" schemaLocation="mySchema.xsd"></xs:import>
Run Code Online (Sandbox Code Playgroud)

我知道mySchema.xsd创建了一个targetNamespace ="UniqueIRIstyleNameSpaceName".现在,如果我去:http://www.w3schools.com/schema/el_import.asp并读取绑定到'xs'的命名空间中定义的'import'元素的相应API,它表示属性'namespace'是可选的.

现在这里是问题:

  • 必须这样导入的属性'namespace'的值始终与相应模式(.xsd)中'targetNamespace'的值相同?

  • 如果是这样的话:根本不完全放弃"命名空间"属性会更容易吗?

  • 如果不是:...我陷入了深深的麻烦,因为我似乎没有完全理解命名空间概念,并且真的会对几个关键字感兴趣,在那里查找信息以关闭泄漏:)

我问这个是因为我目前正在使用XML/XSD,这是我职业生涯的第5次,并且从未在另一个版本中看到它,但是'namespace'属性总是在那里并且在相应的模式中匹配'targetNamespace'的值.

非常感谢提前和问候

JBA

Col*_*ion 5

必须这样导入的属性'namespace'的值始终与相应模式(.xsd)中'targetNamespace'的值相同?

是的,一点没错.您无法重新定义导入架构的目标命名空间!

这确实是可能的,但<xs:include>只有当包含的模式没有目标名称空间时才使用.这种技术被称为"变色龙设计".

如果是这样的话:根本不完全放弃"命名空间"属性会更容易吗?

不应该.省略namespace属性的唯一情况是导入的模式没有目标名称空间.也就是说,它的目标命名空间是全局命名空间.

<xs:import>namespace属性是主之一.指定导入的命名空间可能足以使架构处理器导入必要的架构.这schemaLocation是一个暗示在哪里找到它.