1

在我的 XSLT 中,我有一个节点集合,MyProducts每个节点都有一个ProductId节点。

我想读取另一个名为的节点ProductCatalog,其中包含产品 ID 列表,然后仅从中选择MyProducts具有产品 ID 的产品ProductCatalog

为此,我编写了一个获取有效 ID 的 XSLT 变量:

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

我认为应该有一些函数可以完成这个 XSLT,它指定我只需要 ProductCatalog 中 ProductId 包含在ValidIds变量中的节点。

我该怎么做呢?我的 XSLT 引擎正在运行 XSLT-2.0

4

1 回答 1

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

在 XSLT 1 和 XSLT 2 中,您可以与=. 处理器检查每一侧与另一侧,一旦有任何比较true()结果true()就会返回。 false()仅在进行了所有可能的比较后才返回。

所以你会知道要么没有一个比较是真的,要么至少有一个比较是真的,但你不知道是哪一个。

XSLT 2 中的一种正式方式是:

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

...但我更喜欢只使用=我自己。

于 2013-10-04T23:30:21.267 回答