XSLT para cada ciclo em XML simples
tenho um XML como este
<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>
quero fazer um loop através de cada Isp_ Webitem e mostrar o filtro,o nome do ficheiro e o código unitário. já tentei uma coisa destas.
<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>
mas sem utilidade. e quando coloquei um ponto de ruptura e verifiquei, descobri que a execução de código não acontece dentro de cada laço( ponto de ruptura dentro de cada laço nunca bate).
Tenho conhecimentos limitados sobre o XSLT e sei que pode ser uma pergunta simples .mas eu realmente preciso superar presente.qualquer um pode guiar-me nisto.Nota: Como algumas pessoas solicitaram para XSLT e XML completos, estou a publicá-lo aqui
XSLT Completo
<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>
XML Completo
<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>
2
1 answers
Seleccione os atributos usando os atributos @ para distinghish dos elementos. Testado em 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>
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>
Resultado
<html><head></head><body>FarveSortLængde51cmHøjde3.2cmDybde9cmStavlængde11cm</body></html>
9
Author: rene, 2014-08-04 09:22:47