使用 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
元素的上下文的,因为它位于命名空间中。
我正在为我的 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
元素的上下文的,因为它位于命名空间中。