2017-03-05 8 views
0

XSLTのキー値を反復する際に問題が発生しています。XSLTのキーに基づいて要素のグループを反復しようとしています

<xsl:key name="group" match="Orders" use="number" /> 

と、この後:

<xsl:variable name="orderNodes">  
    <xsl:copy-of select="key('group', number)" /> 
</xsl:variable> 

私はこれを反復処理しようとしています:

<xsl:for-each select="$orderNodes/Orders"> 
    <xsl:value-of select="number" /> 
</xsl:for-each> 

が、私はエラーを取得しています:私はこのライン持っ

ERROR: 'Could not compile stylesheet' 
FATAL ERROR: 'Could not compile stylesheet' 
      :Error checking type of the expression 'FilterParentPath(variable-ref(groupNodes/result-tree), step("child", 14))'. 
javax.xml.transform.TransformerConfigurationException: Could not compile stylesheet 

何か間違っていますか?

答えて

0

あなたはxsl:variable name="orderNodes"ですが、$groupを使用しようとすると意味がありません。

変数を使用する場合は、最初にコピーが本当に必要かどうかを検討してください。 <xsl:variable name="group" select="key('group', number)"/>、次に例えば$group/numberは、エラーのないXSLTおよび任意のXSLTプロセッサの任意のバージョンで動作するはずです。

実際に元のコードと同じようにコピーが必要な場合は、XSLT 1.0プロセッサで結果ツリーの断片を作成してから、最初にノードセットに変換してノードを選択できるようにする必要がありますそれ:

<xsl:variable name="group-rtf">  
    <xsl:copy-of select="key('group', number)" /> 
</xsl:variable> 

<xsl:variable name="group" select="exsl:node-set($group-rtf)" xmlns:exsl="http://exslt.org/common"/> 

<xsl:for-each select="$group/Orders/number">... 
+0

私のコードで間違いを修正しました。 – ttdol2506

関連する問題