使用 xml 数据应用模板



我们使用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>

我认为不需要变量,或者至少不需要结果树片段,您似乎想要处理原始输入。

相关内容

  • 没有找到相关文章