是否可以将所有内容节点存储为数组并传递给另一个模板?我已经尝试但是不能让它工作。我的选择表达式是选择正确的节点。
<xsl:variable name="array" select="/data/contents/content[ ..... ] />
<xsl:value-of select="$array/.../... " />
<xsl:variable name="bannerList" select="data/contents[$dayOfWeekIndex]/content[position() <= 5]" />
<xsl:apply-templates select="$bannerList" mode="article">
<xsl:with-param name="numberOfBanners" select="count($bannerList)" />
</xsl:apply-templates>
我想改用call-template并将bannerList作为参数发送。
答案 0 :(得分:1)
是的,很容易接近,看看:
<强> XML:强>
<body>
<RIAssetType><text>Product</text></RIAssetType>
<RIAssetType><text>Service</text></RIAssetType>
<RIAssetType><text>Company/Business Unit</text></RIAssetType>
<RIAssetType><text>Technology</text></RIAssetType>
<RIAssetType><text>Intellectual Property/Data Only</text></RIAssetType>
</body>
<强> XSLT:强>
<?xml version='1.0' ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="body">
<copyBody>
<xsl:call-template name="childCopy">
<xsl:with-param name="bodyChild" select="self::body/child::*"/>
</xsl:call-template>
</copyBody>
</xsl:template>
<xsl:template name="childCopy">
<xsl:param name="bodyChild"/>
<xsl:for-each select="$bodyChild/self::*">
<xsl:copy>
<xsl:copy-of select="."/>
</xsl:copy>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
<强>输出:强>
<copyBody>
<RIAssetType>
<RIAssetType>
<text>Product</text>
</RIAssetType>
</RIAssetType>
<RIAssetType>
<RIAssetType>
<text>Service</text>
</RIAssetType>
</RIAssetType>
<RIAssetType>
<RIAssetType>
<text>Company/Business Unit</text>
</RIAssetType>
</RIAssetType>
<RIAssetType>
<RIAssetType>
<text>Technology</text>
</RIAssetType>
</RIAssetType>
<RIAssetType>
<RIAssetType>
<text>Intellectual Property/Data Only</text>
</RIAssetType>
</RIAssetType>
</copyBody>
看来你在XPATH的某个地方有结构,请再次检查。