1

私の XSLT には、MyProductsノードを持つ各ノードで呼び出されるノードのコレクションがありProductIdます。

ProductCatalog製品 ID のリストを含む という別のノードを読み取り、 に製品 IDMyProductsを持つ製品のみを選択したいと考えていProductCatalogます。

そのために、有効な ID を取得する XSLT 変数を作成しました。

<xsl:variable name="ValidIds" select="ProductCatalog/ProductId" />
<xsl:variable name="MyProductsWithValidId" select="ProductCatalog(... />

ValidIdsProductId が変数に含まれている ProductCatalog からのノードのみが必要であることを指定して、この XSLT を完成させることができる関数が必要だと思います。

どうすればいいですか?私の XSLT エンジンは XSLT-2.0 を実行しています

4

1 に答える 1

3
<xsl:variable name="MyProductsWithValidId" select="ProductCatalog[ProductId=$ValidIds]"/>

XSLT 1 と XSLT 2 では、 の両側で複数の値を比較できます=。プロセッサは一方の側を他方の側とそれぞれチェックし、何らかの比較が行われるとすぐにtrue()結果true()が返されます。 false()すべての可能な比較が行われた場合にのみ返されます。

したがって、どの比較も真でないか、少なくとも 1 つの比較が真であることがわかりますが、どの比較が真であるかはわかりません。

XSLT 2 での正式な方法は、次のように言うことです。

<xsl:variable name="MyProductsWithValidId" 
              select="ProductCatalog[some $v in $ValidIds satisfies ProductId=$v]"/>

...しかし、私は=自分自身を使用することを好みます。

于 2013-10-04T23:30:21.267 に答える