我们使用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" />
时获取数据,而且这些数据似乎扁平化了。
是否可以使用应用模板发送 xml 结构? 我应该怎么做?
您既没有显示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>
我认为不需要变量,或者至少不需要结果树片段,您似乎想要处理原始输入。