【问题标题】:Accesing the namespace of node in xslt访问xslt中节点的命名空间
【发布时间】:2012-06-05 08:29:09
【问题描述】:

来源:

    <Data>
    <heading xmlns="Some Uri">
                <text>aaa</text>


    </heading>
    <Data>

XSLT 写的

            <?xml version="1.0" encoding="utf-8"?>
            <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            xmlns:link1="Some Uri">
                <xsl:output method="xml" indent="yes"/>

                  <xsl:template match="Data">
                    <xsl:value-of select="link1:heading/namespace-uri()"/>

                  </xsl:template>


            </xsl:stylesheet>

我遇到了错误。

任何人都可以帮助如何获取命名空间。

谢谢。

【问题讨论】:

标签: xslt xpath xslt-1.0


【解决方案1】:

nonnb 应该将评论作为答案...

namespace-uri() 函数做你想做的事。

【讨论】:

  • 我试过了,我得到了错误。我已经用我所做的事情编辑了这个问题。
  • 我已编辑问题,但无法获取节点的名称空间。你能帮我怎么做吗
【解决方案2】:
<xsl:value-of select="link1:heading/namespace-uri()"/>

在 XSLT 1.0 / XPath 1.0 中,这是一个语法错误

将此更正为

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

在 XSLT 2.0 / XPath 2.0 中,这又是一个错误(namespace-uri() 的参数不能省略。更正为:

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

【讨论】:

  • 我认为 select="link1:heading/namespace-uri()" 应该在 XSLT 2.0 中工作。
  • @MichaelKay:也许你是对的——我发现很难且没有必要准确记住哪些函数可以省略其参数,哪些不能——因此始终提供参数更安全。跨度>
猜你喜欢
  • 1970-01-01
  • 2018-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多