2016-11-09 3 views
1

私のearlier questionの後に、answerを適用したいp要素は実際には結果ツリーの断片になります。結果ツリーフラグメントでp要素に対してXSLT:結果ツリーフラグメントでキーを使用していますか?

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

試合:

にはどうすればキー機能を作るのですか?

がその答えではキーが適用され、テンプレートを経由して使用されます。

<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関数はルートノードまたはサブツリーを検索するために3番目の引数を持ちます。$varとするとkey('keyname', key-value-expression, $var)を使って$varの要素を見つけることができます。

関連する問題