我已经定义了一个名为tags的变量,它选择一个元素的节点集,这些元素的名称是以下几个值之一:
<xsl:variable name="tags" select="//xs:element[@name='Subscription' or @name='Account' or @name='Product' or @name='ProductRatePlan' or @name='ProductRatePlanCharge' or @name='Usage']"/>
我想定义一个变量:
<xsl:variable name="tagNames" select="'Subscription','Account','Product','ProductRatePlan','ProductRatePlanCharge','Usage'/>
如何重写第一个表达式以选择名称在set $ tagNames中的所有节点?本质上,我正在寻找一个与SQL集成员资格类似的操作:
SELECT * FROM tags WHERE name in ('Subscription', 'Account', 'Product'....)
答案 0 :(得分:2)
在XPath 2.0中,您可以写:
<xsl:variable name="tags" select="//xs:element[@name=('Subscription','Account','Product','ProductRatePlan','ProductRatePlanCharge','Usage')]"/>
答案 1 :(得分:1)
一种方法:
//xs:element
[contains('|Subscription|Account|Product|ProductRatePlan|ProductRatePlanCharge|Usage|',
concat('|', @name, '|'))]
因此,您可以拥有变量或参数:
<xsl:variable name="vTags"
select="'|Subscription|Account|Product|ProductRatePlan|ProductRatePlanCharge|Usage|'"/>
,您的主要XPath表达式变为:
//xs:element[contains($vTags, concat('|', @name, '|'))]