2016-11-09 34 views
1

繼我的earlier question之後,我想要應用answer的p元素實際上在結果樹片段中。XSLT:在結果樹片段中使用密鑰?

如何使關鍵功能:

<xsl:key name="kRByLevelAndParent" match="p" 
    use="generate-id(preceding-sibling::p 
          [not(@ilvl >= current()/@ilvl)][1])"/> 

反對的結果樹片段p元素匹配?

在這個問題的答案,關鍵是通過應用模板使用:

<xsl:template match="/*"> 
    <list> 
    <item> 
     <xsl:apply-templates select="key('kRByLevelAndParent', '')[1]" mode="start"> 
     <xsl:with-param name="pParentLevel" select="$pStartLevel"/> 
     <xsl:with-param name="pSiblings" select="key('kRByLevelAndParent', '')"/> 
     </xsl:apply-templates> 
    </item> 
    </list> 
</xsl:template> 

我想通過我的結果樹片段作爲參數,並在該鑰匙匹配p元素。

這是正確的思考方式嗎?

回答

2

在XSLT 2.0和更高版本中沒有結果樹片段,只需要臨時樹。至於密鑰,它們適用於每個文檔,key函數只是第三個參數傳入根節點或子樹進行搜索,因此假設您有臨時樹$var,則可以使用key('keyname', key-value-expression, $var)來查找$var中的元素。

相關問題