简单XML上的每个循环的XSLT

Ath*_*hul 1 xml xslt xslt-1.0

我有这样的XML

      <filters extra="filters">
<ISP_WebItem FILTER="Farve" FILTERNAME="Sort" UNITCODE=""/>
<ISP_WebItem FILTER="Længde" FILTERNAME="51" UNITCODE="cm"/>
<ISP_WebItem FILTER="Højde" FILTERNAME="3.2" UNITCODE="cm"/>
<ISP_WebItem FILTER="Dybde" FILTERNAME="9" UNITCODE="cm"/>
<ISP_WebItem FILTER="Stavlængde" FILTERNAME="11" UNITCODE="cm"/>
      </filters>
Run Code Online (Sandbox Code Playgroud)

我想遍历每个ISP_WebItem并显示FILTER,FILTERNAME和UNITCODE.我尝试过这样的事情

<xsl:for-each select="filters/ISP_WebItem ">              
          <xsl:value-of  select="FILTER" />
          <xsl:value-of  select="FILTERNAME" />
          <xsl:value-of  select="UNITCODE" />
 </xsl:for-each>
Run Code Online (Sandbox Code Playgroud)

但没用 当我提出一个断点并检查时,我发现代码执行不会发生在每个循环内部(每个循环内部的断点永远不会发生).

我对XSLT知之甚少,我知道这可能是一个简单的问题.但我真的需要克服这个问题.任何人都可以指导我.

注意:有些人要求完整的XSLT和XML我在这里发布它

完成XSLT

<xsl:template match="/">      
<xsl:variable name="p">
  <xsl:choose>
    <xsl:when test="library:Request('pid') != ''">
      <xsl:copy-of select="shop:GetProductFromId(library:Request('pid'))" />
    </xsl:when>
    <xsl:otherwise>
      <xsl:copy-of  select="shop:GetProductFromId(shop:UrlInformation()//productid)" />
    </xsl:otherwise>
  </xsl:choose>
</xsl:variable>
<xsl:copy-of select="msxsl:node-set($p)/product/filters"/>
<xsl:for-each select="msxsl:node-set($p)/product/filters/ISP_WebItem">
    <xsl:value-of  select="@FILTER" />
    <xsl:value-of  select="@FILTERNAME" />
    <xsl:value-of  select="@UNITCODE" />
  </xsl:for-each>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

完整的XML

    <product>
  <estocklevel>0</estocklevel>
  <url>/product/relief-smal-brevordner-bordeaux-2</url>
  <texts>
    <text language="standard">
      <name>Relief Smal Brevordner, Bordeaux (2)</name>
      <longdescription></longdescription>
      <shortdescription>(10)</shortdescription>
      <htmltitle></htmltitle>
      <metadescription></metadescription>
      <metakeywords></metakeywords>
    </text>
  </texts>
  <name>Relief Smal Brevordner, Bordeaux (2)</name>
  <longdescription></longdescription>
  <shortdescription>(10)</shortdescription>
  <htmltitle></htmltitle>
  <metadescription></metadescription>
  <metakeywords></metakeywords>
  <alternativeitemid></alternativeitemid>
  <alternativeitemrule>0</alternativeitemrule>
  <duties />
  <oncampaign extra="oncampaign">0</oncampaign>
  <minweb extra="minweb">0.000000000000</minweb>
  <stockitem extra="stockitem">0.000000000000</stockitem>
  <isp_model extra="isp_model">Smal</isp_model>
  <produkttype extra="produkttype"></produkttype>
  <filters extra="filters">
    <ISP_WebItem FILTER="Farve" FILTERNAME="Bordeaux" UNITCODE=""/>
    <ISP_WebItem FILTER="Rygbredde" FILTERNAME="5" UNITCODE="cm"/>
    <ISP_WebItem FILTER="Papirstørrelse" FILTERNAME="A4" UNITCODE=""/>
    <ISP_WebItem FILTER="Max indhold" FILTERNAME="350 A4 ark" UNITCODE=""/>
    <ISP_WebItem FILTER="Rygetiket" FILTERNAME="Med udskiftelig rygetiket" UNITCODE=""/>
    <ISP_WebItem FILTER="Materiale 1" FILTERNAME="PP" UNITCODE=""/>
    <ISP_WebItem FILTER="Materiale" FILTERNAME="Pap" UNITCODE=""/>
    <ISP_WebItem FILTER="Ringtype" FILTERNAME="D" UNITCODE=""/>
    <ISP_WebItem FILTER="Antal ringe" FILTERNAME="2" UNITCODE=""/>
  </filters>
</product>
Run Code Online (Sandbox Code Playgroud)

ren*_*ene 8

使用元素中的@到distinghish属性选择属性.在xslfiddle.net上测试

XSL

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" encoding="iso-8859-1" indent="no"/>

<xsl:template match="/">
    <xsl:for-each select="filters/ISP_WebItem">
      <xsl:value-of  select="@FILTER" />
      <xsl:value-of  select="@FILTERNAME" />
      <xsl:value-of  select="@UNITCODE" />
    </xsl:for-each>
  </xsl:template>

</xsl:stylesheet>  
Run Code Online (Sandbox Code Playgroud)

XML

<filters extra="filters">
    <ISP_WebItem FILTER="Farve" FILTERNAME="Sort" UNITCODE=""/>
    <ISP_WebItem FILTER="Længde" FILTERNAME="51" UNITCODE="cm"/>
    <ISP_WebItem FILTER="Højde" FILTERNAME="3.2" UNITCODE="cm"/>
    <ISP_WebItem FILTER="Dybde" FILTERNAME="9" UNITCODE="cm"/>
    <ISP_WebItem FILTER="Stavlængde" FILTERNAME="11" UNITCODE="cm"/>
</filters>
Run Code Online (Sandbox Code Playgroud)

结果

<html><head></head><body>FarveSortLængde51cmHøjde3.2cmDybde9cmStavlængde11cm</body></html>
Run Code Online (Sandbox Code Playgroud)