我希望仅使用本机XSLT2.0函数动态打印存在于控件列表中的元素。
<xsl:variable name="controlList">name</xsl:variable>
<M N="name" V="Bill Billson"/>
<M N="address" V="1234 street name"/>
<M N="country" V="United Kingdom"/>
<M N="phone" V="123456789"/>
需要输出:
Bill Billson
但最终它需要处理控制列表中的多个值,例如
<xsl:variable name="controlList">name,address,phone</xsl:variable>
到目前为止,我已经尝试了许多不同的排列,但没有得到所需的结果。
<xsl:value-of select="M[@N='{$controlList}']/@V"/>
或
<xsl:for-each select="M">
<xsl:value-of select="/[@name=$controlList]/@V"/>
</xsl:for-each>
非常感谢任何帮助。这可能不适用于本机XSLT2.0函数
答案 0 :(得分:1)
将变量定义为<xsl:variable name="controlList" select="'name', 'address', 'phone'"/>
,然后您可以使用M[@N = $controlList]/@V
。有关示例,请参阅http://xsltransform.net/6qVRKw1。
如果你不能将第一个变量设置为一个字符串序列,那么计算第二个变量,例如
<xsl:variable name="controlList">name,address,phone</xsl:variable>
<xsl:variable name="controlSeq" select="tokenize($controlList, ',')"/>
然后您还可以在
中进行=
比较
<xsl:value-of select="M[@N = $controlSeq]/@V"/>