2013-10-09 82 views
1

我有類似於XML結構:如何通過XPath選擇祖先的孩子?

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

我是"f"模板在這裏我想提出一個when與測試上的cid第一個數字裏面,例如:

<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> 

上面的代碼不起作用!

任何人都可以建議我一種方法使其工作?

Thnx提前!

回答

4

因爲在祖先和c之間有一個b

這應該工作:

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

(假設第二<b>應該是一個</b>

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>