1

我的 XML 结构类似于:

<a>
   <b>
      <c id="2.3">
      </c>
   </b>
   <d>
      <e>
         <f>
         </f>
      </e>
   </d>
</a>

我在一个模板中"f",我想在其中when对第一个数量的 进行测试idc例如:

<xsl:template match="f">
   <xsl:choose>
      <xsl:when test="substring-before(../../../c/@id, '.') = '2'">
         <xsl:text>Successful</xsl:text>
      </xsl:when>
   </xsl:choose>
</xsl:template>

上面的代码不起作用!

任何人都可以建议我一种让它工作的方法吗?

提前谢谢!!

4

2 回答 2

4

相对路径很好,但有时更明确是有用的。

<xsl:template match="f">
   <xsl:choose>
      <xsl:when test="substring-before(ancestor::a[1]/b/c/@id, '.') = '2'">
         <xsl:text>Successful</xsl:text>
      </xsl:when>
   </xsl:choose>
</xsl:template>
于 2013-10-09T11:05:13.183 回答
4

因为b在祖先和c之间有a。

这应该有效:

substring-before(../../../b/c/@id, '.') = '2'

(假设第二个<b>应该是 a </b>

于 2013-10-09T11:03:10.680 回答