我们使用XSLT呈现我们的网页
我想要完成的是使用xml数据渲染模板:
<xsl:for-each select="$itemview/items/item">
<xsl:variable name="productitem">
<productpreview product="{self::node()}" />
</xsl:variable>
<xsl:apply-templates select="msxsl:node-set($productitem)" mode="shop"/>
<!--/.item-->
</xsl:for-each>
模板:
<xsl:template match="productpreview" mode="tshop">
<div class="test">
<xsl:value-of select="@product/itemcode" />
</div>
</xsl:template>
</xsl:stylesheet>
结果模板被渲染但xml结构消失了,我只在<xsl:value-of select="@product" />
时获取数据,而且这些数据看起来很平坦。
是否可以使用apply-template发送xml结构?我该怎么做?
答案 0 :(得分:0)
您既没有显示您的XML输入也没有显示您想要的结果,但假设您只想存储和处理item
元素,那么我会这样做
<xsl:apply-templates select="$itemview/items/item" mode="shop"/>
而不是
<xsl:for-each select="$itemview/items/item">
<xsl:variable name="productitem">
<productpreview product="{self::node()}" />
</xsl:variable>
<xsl:apply-templates select="msxsl:node-set($productitem)" mode="shop"/>
<!--/.item-->
</xsl:for-each>
然后简单地
<xsl:template match="item" mode="shop">
<div class="test">
<xsl:value-of select="itemcode" />
</div>
</xsl:template>
</xsl:stylesheet>
而不是
<xsl:template match="productpreview" mode="tshop">
<div class="test">
<xsl:value-of select="@product/itemcode" />
</div>
</xsl:template>
</xsl:stylesheet>
我认为不需要变量或至少不需要结果树片段,您似乎想要处理原始输入。