【问题标题】:What is the difference between targetNamespace and xmlns:target? [duplicate]targetNamespace 和 xmlns:target 有什么区别? [复制]
【发布时间】:2010-11-08 18:46:58
【问题描述】:

targetNamespace的作用是什么?

<schema xmlns="http://www.w3.org/2001/SchemaXML"
        targetNamespace="http://www.example.com/name"
        xmlns:target="http://www.example.com/name">

我了解xmlns="http://www.w3.org/2001/SchemaXML 定义了 Schema XML 命名空间。

我也明白xmlns:target="http://www.example.com/name" 定义了我自己的词汇表的命名空间,如果我使用前缀“target”创建自己的模式;这充当 URI http://www.example.com/name 的代理或占位符。

这似乎足以定义命名空间参与者所需的边界和词汇。那么为什么我需要一个与http://www.example.com/name 命名空间重复的targetNamespace 属性呢?

【问题讨论】:

    标签: xsd


    【解决方案1】:

    在这里回答得很好:targetNamespace and xmlns without prefix, what is the difference?

    重申:

    • targetNamespace="" - 由于当前 XML 文档是一个模式,因此该属性定义了该模式旨在定位或验证的命名空间。

    • xmlns="" - 在当前文档中为所有非前缀元素定义默认命名空间(即 &lt;yada:elementName&gt; 中没有 yada:

    • xmlns:target="" - 这里你只是用前缀target:定义你自己的命名空间,这与前面两个特殊情况无关。

    【讨论】:

    • this attribute defines the namespace that this schema is intended to target 我觉得这很混乱。架构是“定位”一个命名空间?因此,如果我使用 targetNamespace="google.com" 创建架构,我刚刚在 Google 上创建了一个命名空间?然后呢?它会扰乱其他做过同样事情的人的模式吗?另外,使用什么前缀?
    • @Imray 令人困惑,我认为它是 XSL 文档定义的 XML 结构,命名空间只是一种唯一标识此结构的方式,以便稍后当 XML 文档引用它时(使用xmlns= 或 xmlns:somelabel= 如上所示)它的名称与您可能引用的其他 XSL 文档不冲突,这有意义吗?
    • targetNamespace.xsd 通常是否与它验证的 .xmls 的 xsi 相同?我知道xsi 是常规的。
    • @MinhNghĩa xsi 和 xsd 是命名空间前缀,但您是对的,它们通常用于指代两个特定的事物。请查看此答案以讨论它们之间的差异:stackoverflow.com/a/41041892/276874
    【解决方案2】:

    targetNamespace 声明了一个命名空间,供其他 xml 和 xsd 文档引用此模式。在这种情况下,目标前缀指的是同一个命名空间,您可以在此架构定义中使用它来引用也在同一架构定义中定义的其他元素、属性、类型等。

    【讨论】:

      【解决方案3】:

      xmlns:target="http://www.example.com/name" 中的前缀“目标”没有什么特别之处。架构处理器如何知道您希望它成为架构的目标命名空间? targetNamespace 就是这样做的——它声明了架构组件所属的命名空间。

      注意并非架构文档中的所有内容都进入 targetNamespace。注意“schema”元素上的属性“elementFormDefault”和“attributeFormDefault”,以及“element”和“attribute”元素上的属性“form”。

      【讨论】:

        猜你喜欢
        • 2015-11-23
        • 2013-02-13
        • 2011-04-26
        • 2016-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-11
        相关资源
        最近更新 更多