来自另一个文档(),xslt

时间:2014-10-08 09:05:20

标签: xml xslt xpath-2.0

我想获取当前元素名称,但它显示另一个文档名称的名称。如何获取当前文档元素,而不是另一个文档元素名称?,这只是示例编码,不提供建议"获取名称"出于每个人。特别是我喜欢进入每个循环

<xsl:template match="*:LegisRefLink">
    <xsl:element name="LegiRefered" namespace="http://www.w3.org/1999/xhtml">
      <xsl:variable name="legs" select="document(@href)//*"/>
      <xsl:for-each select="$legs//*:ref">
        <xsl:value-of select="name(.)"/>// I would like to get current document element name, but it's showing $legis/ref. how to get current element instead of another document element name.
        <xsl:value-of select="@refNo"/>
      </xsl:for-each>
    </xsl:element>
  </xsl:template>

请帮我实现这个目标!感谢Advances!

此致 萨兰

1 个答案:

答案 0 :(得分:0)

通常在XSL中,当前和上一个上下文之间存在冲突。这些通常必须用变量来解决,以保留以前状态的上下文:

<xsl:template match="*:LegisRefLink">
    <xsl:element name="LegiRefered" namespace="http://www.w3.org/1999/xhtml">
      <!-- Could save "." and get the name within the loop but if that's all we want, keep it efficient. -->
      <xsl:variable name="refName" select="name(.)"/>
      <xsl:variable name="legs" select="document(@href)//*"/>
      <xsl:for-each select="$legs//*:ref">
        <xsl:value-of select="$refName"/>     <!-- Use the value saved earlier when we did have the correct context. -->
        <xsl:value-of select="@refNo"/>
      </xsl:for-each>
    </xsl:element>
  </xsl:template>

请注意,它使用与您正在加载的文档相同的语法 - 一个变量(XSL不允许您更改)只是一种保存特定节点,结果或值的方法。