所以我有这个任务,他们要求 Xslt 提供的数据
这就是我所拥有的:
<xsl:apply-templates select="results/result[@name=$param0]"/>
所以 $param0 是由 jquery 转换函数给出的。我的问题是如何在发送 $param0 的某个值时选择所有 @name?我已经尝试了大多数通配符,但似乎没有任何效果。
你们能帮帮我吗?
输入 XML
<results>
<result name="name1">
<score>2500</score>
</result>
<result name="name2">
<score>13500</score>
</result>
<result name="name3">
<score>65100</score>
</result>
</results>
$param0="name1"的输出
<result name="name1">
<score>2500</score>
</result>
所以我必须得到所有的分数,我需要保留 xslt 语句,这样我仍然可以选择一个。
$param0="wildcard"
<result name="name1">
<score>2500</score>
</result>
<result name="name2">
<score>13500</score>
</result>
<result name="name3">
<score>65100</score>
</result>
我希望这能让我更清楚我在寻找什么......
最佳答案
为什么不使用假字符串通配符?
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="param0" select="'*'"/>
<xsl:template match="/">
<xsl:copy-of select="results/result[@name=$param0 and $param0!='*']
|
results/result[$param0='*']"/>
</xsl:template>
</xsl:stylesheet>
它在
$param0='*'
时复制每个 结果 ,否则当有像 $param0='name1'
这样的匹配时它复制想要的节点;否则它根本不会复制任何东西。您可以在
xsl:apply-templates
中使用相同的表达式。关于按属性选择时使用通配符的 Xslt,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7270281/