0
<linkbase xsi:schemaLocation="http://www.w3.org/1998/linkbase http://www.xbrl.org/2003/schema.xml" xmlns="http://www.noprefix.org/2003/linkbase" xmlns:xlink="http://www.w3.org/2005/xlink" xmlns:xsi="http://www.w3.org/1999/XMLSchema">
  <roleRef roleURI="http://www.greenserve.com/role/Commitgencies" xlink:href="Commitmentsngencies" xlink:type="simple" />
  </linkbase>

在这个 xml 中有一个 xmlns 属性,后面没有 a:和前缀名称。

xmlns="http://www.noprefix.org/2003/linkbase"

但其他人在 xmlns 之后有一个冒号和前缀。因此,当我尝试解析此 xml 以获取roleref具有“后代”功能的标签时,它不会显示任何内容。但是如果我:在那个 xmlns 之后添加一个和一个前缀,那么它可以正确解析。为什么它的行为就像任何人都可以解释?谢谢。

4

1 回答 1

1

当您有一个没有冒号和前缀的 xmlns 属性时,这是整个文档的默认命名空间......所以所有未加前缀的元素都将位于该默认命名空间中。但是,这与没有命名空间不同。请记住,命名空间实际上是 URI,而不是前缀……前缀只是引用 this 的快捷方式。因此,如果您有这样的 xml 文件:

<xml xmlns="http://example.org" xmlns:ex="http://example2.org">
<element1/>
<element2/>
<ex:element3>
</xml>

没有命名空间前缀的元素不能仅仅通过元素名称来寻址,因为它们仍然在命名空间http://example.org中。

现在,至于如何解析它......这一切都取决于你的工具。如果它是 XSLT,那么在您的 XSLT 文件中,您可以为该名称空间提供一个临时前缀,以便处理这些元素。每种编程语言中的每个库都可能有不同的实现方式(作为众多示例之一,python 中的 lxml 将处理默认命名空间元素,如下所示:{http://example.org}element1)。您必须参考您用来进行解析的任何内容,以获取有关如何处理默认命名空间中的元素的帮助。

于 2012-10-09T06:36:39.377 回答