关于使用xslt 1.0 Display X distinct random node sets using XSLT 1.0
返回一组随机节点集的问题使用此代码:
<msxsl:script language="JScript" implements-prefix="my">function random() {
return Math.random();
}</msxsl:script>
<xsl:template match="/">
<output>
<xsl:call-template name="pick-random">
<xsl:with-param name="node-set" select="NewDataSet/Vehicle"/>
<xsl:with-param name="quota" select="5"/>
</xsl:call-template>
</output>
</xsl:template>
<xsl:template name="pick-random">
<xsl:param name="node-set"/>
<xsl:param name="quota"/>
<xsl:param name="selected" select="dummy-node"/>
<xsl:choose>
<xsl:when test="count($selected) < $quota and $node-set">
<xsl:variable name="set-size" select="count($node-set)"/>
<xsl:variable name="rand" select="floor(my:random() * $set-size) + 1"/>
<xsl:call-template name="pick-random">
<xsl:with-param name="node-set" select="$node-set[not(position()=$rand)]"/>
<xsl:with-param name="quota" select="$quota"/>
<xsl:with-param name="selected" select="$selected | $node-set[$rand]"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="$selected"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
返回看起来有点像这样的xml:
<output>
<Vehicle>
<make>something</make>
<model>something else</model>
<price>lots</price>
</Vehicle>
<Vehicle>
<make>something</make>
<model>something else</model>
<price>lots</price>
</Vehicle>
<Vehicle>
<make>something</make>
<model>something else</model>
<price>lots</price>
</Vehicle>
<Vehicle>
<make>something</make>
<model>something else</model>
<price>lots</price>
</Vehicle>
</output>
我很难理解如何迭代这个返回的节点集以将html样式添加到特定节点。
非常感谢Michael原始代码
答案 0 :(得分:1)
现在如何遍历此返回的节点集以添加html样式 到特定节点
而不是:
<xsl:otherwise>
<xsl:copy-of select="$selected"/>
</xsl:otherwise>
你可以这样做:
<xsl:otherwise>
<xsl:apply-templates select="$selected"/>
</xsl:otherwise>
然后添加与&#34;特定节点匹配的模板&#34;你想要风格。没有看到预期的结果(至少),很难比具体更具体。