Xslt XSL:通过检查变量打印分隔符

Xslt XSL:通过检查变量打印分隔符,xslt,Xslt,我是XSL新手,我想做一些类似的事情 var oldvalue= '' for each get currentvalue if (oldvalue != currentvalue) { print divider oldvalue = currentvalue } end for 我已经试过了 <xsl:variable name="oldname" select="name" /> <xs

我是XSL新手,我想做一些类似的事情

var oldvalue= '' 
for each
   get currentvalue
   if (oldvalue != currentvalue)
   {
         print divider
         oldvalue = currentvalue
    }      
end for  
我已经试过了

<xsl:variable name="oldname" select="name" /> 

<xsl:for-each select="myxpathstring">
  <xsl:choose>
      <xsl:when test="$newname = $newname">
        <xsl:variable name="oldname" select="$newname" />
        <div class='divider'>divider stuff </div>
       </xsl:when>

      <xsl:otherwise>No</xsl:otherwise>
 </xsl:choose>

</xsl:for-each>

分隔器材料
不
但这不起作用,因为我无法更新'oldname'变量。 有人有办法吗

完整的XSL(带有JSP参数,因为我是动态生成XSL的)


模式的gevonden

  • 欧元 米尔库普
下面是完整xml的一个示例

<?xml version="1.0" encoding="ISO-8859-1"?>
<schemes lang='nl-BE'>
 <scheme id='5E47B7E9'>
  <sport>Fietsen</sport>
<author>Energy Lab</author>
<name>Voorbereiding op de Ronde van Vlaanderen</name>
<planduration>16</planduration>
<fitnesslevel>Beginner</fitnesslevel>
<frequency>1-3</frequency>
<longtraining></longtraining>
<rollers>Ja</rollers>
<price>12</price>
<description>
  <![CDATA[...]]>
</description>
  </scheme>
<scheme id='5E47B7E9'>
  <sport>Triatlon</sport>

<author>Energy Lab</author>
<name>Voorbereiding op de Ronde van Vlaanderen</name>
<planduration>16</planduration>
<fitnesslevel>Expert</fitnesslevel>
<frequency>1-3</frequency>
<longtraining></longtraining>
<rollers>Ja</rollers>
<price>12</price>
<description>
  <![CDATA[...]]>
</description>
  </scheme>
<scheme id='5E47B7E9'>
<sport>Fietsen</sport>

<author>Energy Lab</author>
<name>Voorbereiding op een Triatlon</name>
<planduration>24</planduration>
<fitnesslevel>Beginner</fitnesslevel>
<frequency>1-3</frequency>
<longtraining></longtraining>
<rollers>Ja</rollers>
<price>48</price>
<description>
  <![CDATA[...]]>
</description>
  </scheme>
</schemes>

费特森
能源实验室
瓦兰德隆德酒店
16
新手
1-3
青年成就
12
特里特隆
能源实验室
瓦兰德隆德酒店
16
专家
1-3
青年成就
12
费特森
能源实验室
Voorbereiding Opeen Triatlon
24
新手
1-3
青年成就
48

创建一个返回新值的函数,将旧值和myxpathstring中的值列表作为参数。

如果我理解您的XSLT正确,您必须使用它。有关此方法工作原理的说明,请阅读

XML:

结果:

<div id="counter" class="ui-state-highlight ui-corner-all">
  <p><span style="float: left; margin-right: .3em;" class="ui-icon ui-icon-info"/>1 schema's gevonden</p>
</div><div class="page_navigation ui-widget-header ui-corner-all"/><ul id="schemeslist" class="content">
  <li class="scheme" id="scheme">
    <div class="schemeSports">Fietsen</div>
    <div class="schemeName">Voorbereiding op de Ronde van Vlaanderen</div>
    <div class="planDuration">16</div>
    <div class="fitnessLevel">Beginner</div>
    <div class="order">12
                euro
            <button class="more" onClick="showInfo(&quot;5E47B7E9&quot;)" id="5E47B7E9">MEER</button><button class="buy" onClick="window.location = &quot;buy.html?ID=5E47B7E9&quot;">KOOP</button></div>
  </li>
  <li class="scheme" id="scheme">
    <div class="schemeSports">Triatlon</div>
    <div class="schemeName">Voorbereiding op de Ronde van Vlaanderen</div>
    <div class="planDuration">16</div>
    <div class="fitnessLevel">Expert</div>
    <div class="order">12
                euro
            <button class="more" onClick="showInfo(&quot;5E47B7E9&quot;)" id="5E47B7E9">MEER</button><button class="buy" onClick="window.location = &quot;buy.html?ID=5E47B7E9&quot;">KOOP</button></div>
  </li>
  <div class="divider"/>
  <li class="scheme" id="scheme">
    <div class="schemeSports">Fietsen</div>
    <div class="schemeName">Voorbereiding op een Triatlon</div>
    <div class="planDuration">24</div>
    <div class="fitnessLevel">Beginner</div>
    <div class="order">48
                euro
            <button class="more" onClick="showInfo(&quot;5E47B7E9&quot;)" id="5E47B7E9">MEER</button><button class="buy" onClick="window.location = &quot;buy.html?ID=5E47B7E9&quot;">KOOP</button></div>
  </li>
</ul><div style="clear:both"/><div class="page_navigation ui-widget-header ui-corner-all"/>

1架构的gevonden

  • 费特森 瓦兰德隆德酒店 16 新手 12 欧元 猫鼬
  • 特里特隆 瓦兰德隆德酒店 16 专家 12 欧元 猫鼬
  • 费特森 Voorbereiding Opeen Triatlon 24 新手 48 欧元 猫鼬

您必须在这里使用不同的方法。你能提供一个输入XML的小例子吗?我已经检查了你的例子,它是有效的,但我没有把它翻译成mine@user1194465:在问题中提供输入XML和结果XML。
<?xml version="1.0" encoding="UTF-8"?>
<schemes lang='nl-BE'>
    <scheme id='5E47B7E9'>
        <sport>Fietsen</sport>
        <author>Energy Lab</author>
        <name>Voorbereiding op de Ronde van Vlaanderen</name>
        <planduration>16</planduration>
        <fitnesslevel>Beginner</fitnesslevel>
        <frequency>1-3</frequency>
        <longtraining></longtraining>
        <rollers>Ja</rollers>
        <price>12</price>
        <description><![CDATA[...]]></description>
    </scheme>
    <scheme id='5E47B7E9'>
        <sport>Triatlon</sport>
        <author>Energy Lab</author>
        <name>Voorbereiding op de Ronde van Vlaanderen</name>
        <planduration>16</planduration>
        <fitnesslevel>Expert</fitnesslevel>
        <frequency>1-3</frequency>
        <longtraining></longtraining>
        <rollers>Ja</rollers>
        <price>12</price>
        <description><![CDATA[...]]></description>
    </scheme>
    <scheme id='5E47B7E9'>
        <sport>Fietsen</sport>
        <author>Energy Lab</author>
        <name>Voorbereiding op een Triatlon</name>
        <planduration>24</planduration>
        <fitnesslevel>Beginner</fitnesslevel>
        <frequency>1-3</frequency>
        <longtraining></longtraining>
        <rollers>Ja</rollers>
        <price>48</price>
        <description><![CDATA[...]]></description>
    </scheme>
</schemes>
<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet version='1.0'
                xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:output method='xml' indent='yes' omit-xml-declaration='yes'/>

<xsl:key name='schemata' match='scheme' use='name'/>

<xsl:template match='scheme'>
    <li class='scheme' id='scheme'>
        <div class='schemeSports'>
            <xsl:value-of select="sport"/>
        </div>
        <xsl:variable name="theid" select="@id"/>
        <div class='schemeName'>
            <xsl:value-of select="name"/>
        </div>
        <div class='planDuration'>
            <xsl:value-of select="planduration"/>
        </div>
        <div class='fitnessLevel'>
            <xsl:value-of select="fitnesslevel"/>
        </div>
        <div class='order'>
            <xsl:if test="price != ''">
                <xsl:value-of select="price"/>
                euro
            </xsl:if>
            <button class='more' onClick='showInfo("{$theid}")' id='{$theid}'>MEER</button>
            <button class='buy' onClick='window.location = "buy.html?ID={$theid}"'>KOOP</button>
        </div>
    </li>
</xsl:template>

<xsl:template match='/schemes'>
    <xsl:variable name="counter" select="count(.)"/> <!-- jsp -->
    <div id='counter' class='ui-state-highlight ui-corner-all'>
        <p>
            <span style="float: left; margin-right: .3em;" class="ui-icon ui-icon-info"/>
            <xsl:value-of select="$counter"/>
            <xsl:text> schema's gevonden</xsl:text>
        </p>
    </div>
    <div class="page_navigation ui-widget-header ui-corner-all"/>
    <ul id='schemeslist' class="content">
        <!-- muenchian grouping -->
        <xsl:for-each select='scheme[generate-id() = generate-id(key("schemata", name)[1])]'>
            <xsl:sort select='name'/>
            <xsl:if test='position() != 1'>
                <div class='divider'/>
            </xsl:if>
            <xsl:apply-templates select='key("schemata", name)'/>
        </xsl:for-each>
    </ul>
    <div style='clear:both'/>
    <div class="page_navigation ui-widget-header ui-corner-all"/>
</xsl:template>

</xsl:stylesheet>
<div id="counter" class="ui-state-highlight ui-corner-all">
  <p><span style="float: left; margin-right: .3em;" class="ui-icon ui-icon-info"/>1 schema's gevonden</p>
</div><div class="page_navigation ui-widget-header ui-corner-all"/><ul id="schemeslist" class="content">
  <li class="scheme" id="scheme">
    <div class="schemeSports">Fietsen</div>
    <div class="schemeName">Voorbereiding op de Ronde van Vlaanderen</div>
    <div class="planDuration">16</div>
    <div class="fitnessLevel">Beginner</div>
    <div class="order">12
                euro
            <button class="more" onClick="showInfo(&quot;5E47B7E9&quot;)" id="5E47B7E9">MEER</button><button class="buy" onClick="window.location = &quot;buy.html?ID=5E47B7E9&quot;">KOOP</button></div>
  </li>
  <li class="scheme" id="scheme">
    <div class="schemeSports">Triatlon</div>
    <div class="schemeName">Voorbereiding op de Ronde van Vlaanderen</div>
    <div class="planDuration">16</div>
    <div class="fitnessLevel">Expert</div>
    <div class="order">12
                euro
            <button class="more" onClick="showInfo(&quot;5E47B7E9&quot;)" id="5E47B7E9">MEER</button><button class="buy" onClick="window.location = &quot;buy.html?ID=5E47B7E9&quot;">KOOP</button></div>
  </li>
  <div class="divider"/>
  <li class="scheme" id="scheme">
    <div class="schemeSports">Fietsen</div>
    <div class="schemeName">Voorbereiding op een Triatlon</div>
    <div class="planDuration">24</div>
    <div class="fitnessLevel">Beginner</div>
    <div class="order">48
                euro
            <button class="more" onClick="showInfo(&quot;5E47B7E9&quot;)" id="5E47B7E9">MEER</button><button class="buy" onClick="window.location = &quot;buy.html?ID=5E47B7E9&quot;">KOOP</button></div>
  </li>
</ul><div style="clear:both"/><div class="page_navigation ui-widget-header ui-corner-all"/>