使用 XSLT 显示页面 XMLNS

Use XSLT to reveal Page XMLNS

我正在为我的 XML 文件创建一个快速参考样式表,该参考的一部分是查看我在每个文件中使用的 xml 命名空间。

例如gen_info.xml的起始标签是:

<GeneralInfo xmlpre="Gen" xmlns="http://www.mrinitialman.com/">

显示属性“xmlpre”很简单:<xsl:value-of select="@xmlpre" />。但是 <xsl:value-of select="@xmlns" /> 似乎什么也没做。我错过了什么?

What am I missing?

您忽略了 xmlns="http://www.mrinitialman.com/" 不是 属性 而是 URI 为 "http://www.mrinitialman.com/"namespace declaration. It puts the GeneralInfo element and its descendants in a default namespace 这一事实.

您可以使用 namespace-uri() 函数来检索节点的命名空间 URI。如果 - 看起来* - 你在 GeneralInfo 元素的上下文中,那么:

<xsl:value-of select="namespace-uri()"/>

将return:

http://www.mrinitialman.com/

请注意,元素可以位于从祖先元素继承的命名空间中,也可以由附加在其名称上的前缀确定; IOW,namespace-uri() 函数 return 是参数节点的命名空间 URI,而不是命名空间声明。

--
(*) 从您的问题中不清楚您是如何进入 GeneralInfo 元素的上下文的,因为它位于命名空间中。