【问题标题】:XML namespaces and the default namespaceXML 命名空间和默认命名空间
【发布时间】:2014-01-30 16:22:36
【问题描述】:

我收到了一个让我有些头疼的 XML 文档。

这里看起来像这样:

<ns1:ObjectInfo xmlns:ns1="urn:package:ObjectInfo" xmlns="package:ObjectInfo">
...
    <Object Id="12345">
        <ns1:ObjectInfo xmlns="urn:package:ObjectInfo">
        </ns1:ObjectInfo>
    </Object>
...
</ns1:ObjectInfo>

我不是 XML 专家,但据我所知,这个 "xmlns="package:ObjectInfo" 定义了默认命名空间,对吧?

首先显式定义命名空间 (ns1:ObjectInfo xmlns:ns1="urn:package:ObjectInfo") 然后再定义默认命名空间 (xmlns="package:ObjectInfo") 真的很常见吗?

认为可能导致问题的是默认命名空间有错字(是:xmlns="package:ObjectInfo",但应该是:"urn :package:ObjectInfo") - 这让我想到:Object 中的 ObjectInfo 元素属于/引用哪个命名空间?

【问题讨论】:

  • 定义多个命名空间别名并定义一个默认命名空间当然很常见。不过,这两个命名空间 URI 之间的共性在这里并不常见。
  • 那是什么文件? “urn:package:ObjectInfo”的 Google 只能找到这个问题!

标签: xml xml-namespaces


【解决方案1】:

这让我想到:Object 中的 ObjectInfo 元素属于/引用哪个命名空间?

ObjectInfo 肯定属于命名空间 ns1。 Object 元素中“无命名空间前缀”的 ObjectInfo 元素的所有子元素都应属于默认命名空间 xmlns="urn:package:ObjectInfo"

我不确定是否有错字。但是,Object 元素属于顶级默认命名空间 xmlns="package:ObjectInfo"

【讨论】:

  • 我同意。也许第一个应该是xmlns="urn:package:ObjectInfo"
  • @John 是的,如果第一个像你说的那样,那么第二个是多余的
猜你喜欢
  • 2013-06-23
  • 2010-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-19
  • 1970-01-01
相关资源
最近更新 更多