XPath位置,其中text(或属性)等于value

时间:2014-12-08 08:54:22

标签: xml xslt xpath position

XML:

<row type="header">
 <column>href</column>
 <column>other</column>
</row>
<row type="data">
 <column>a</column>
 <column>b</column>
</row>

XSLT :(我确定我在下面的模板中的行[@type ='data'] /列)

<xsl:template match="column" mode="panelTabsBody">
 <td>
  <a>
   <xsl:attribute name="href">
    <xsl:value-of select="../../row[@type='header']/column[text()='href'][position()]" />
   </xsl:attribute>
  </a>
 </td>
</xsl:template>

如何获取text()等于href的列位置?如果它更容易,我可以给列值'href'一个属性。示例:<column type='link'>href</column>

修改
我尝试了以下,但这没有工作
XSLT:

<xsl:template match="column" mode="panelTabsBody">
 <xsl:variable name="testt" select="count(../../row[@type='header']/column[text()='href']/preceding-sibling::column) + 1" />
 <td>
  <a>
   <xsl:attribute name="href">
    <xsl:value-of select="../../row[@type='header']/column[position() = testt]" />
   </xsl:attribute>
  </a>
 </td>
</xsl:template>

1 个答案:

答案 0 :(得分:1)

简单的答案是testt是变量,因此您需要使用$前缀来引用它

<xsl:value-of select="../../row[@type='header']/column[position() = $testt]" />

当然,这是选择&#39;标题的列。您已经知道的行包含&#34; href&#34;。也许你只需要这样做?

<xsl:value-of select="../column[position() = $testt]" />