1

我需要选择所有奇数位置元素并将它们放在左浮动 div 中,并将所有偶数元素放在右浮动 div 中,如下所示:

<rows>
  <row title="A" />
  <row title="B" />
  <row title="C" />
  <row title="D" />
  <row title="E" />
  <row title="F" />
</rows>

==================变换为===>

A-----B
C-----D
E-----F

我正在使用以下 xsl:

    <div class="content-left" style="width:250px; float:left;"> 
    <span class="NewsHeading">
    <h4><xsl:value-of select="@Title"/></h4>
    </span> 
    </div> 
    <div class="content-right" style="float:right"> 
    <span class="NewsHeading">
    <h4><xsl:value-of select="following-sibling::*[1]/@Title"/></h4>
    </span> 
</div>

但我的 XSLT 产生以下内容:

A----B
B----C
C----D
D----E
E----F

如何使第二行从第一行的follow-sibling 的following 兄弟开始?

听起来有点奇怪..基本上我只是不想重复..

4

2 回答 2

1

您可能在某处有一个 'xsl:for-each select="rows/row"' 元素?

然后只需将其替换为

<xsl:for-each select="rows/row[position() mod 2 = 1]">

仅将模板应用于每隔一行

于 2012-12-27T00:16:05.573 回答
1

这是一个完整的解决方案:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="/*">
     <div class="content-carousel">
     <ul class="bjqs">
      <xsl:apply-templates select="*[position() mod 2 =1]"/>
     </ul>
   </div>
 </xsl:template>

 <xsl:template match="row">
   <li>
     <div class="content-left">
        <h4><xsl:value-of select="@title"/></h4>
     </div>
       <div class="content-right">
         <h4><xsl:value-of select="following-sibling::*[1]/@title"/></h4>
       </div>
  </li>
 </xsl:template>
</xsl:stylesheet>

当此转换应用于提供的 XML 文档时:

<rows>
  <row title="A" />
  <row title="B" />
  <row title="C" />
  <row title="D" />
  <row title="E" />
  <row title="F" />
</rows>

产生了想要的正确结果:

<div class="content-carousel">
   <ul class="bjqs">
      <li>
         <div class="content-left">
            <h4>A</h4>
         </div>
         <div class="content-right">
            <h4>B</h4>
         </div>
      </li>
      <li>
         <div class="content-left">
            <h4>C</h4>
         </div>
         <div class="content-right">
            <h4>D</h4>
         </div>
      </li>
      <li>
         <div class="content-left">
            <h4>E</h4>
         </div>
         <div class="content-right">
            <h4>F</h4>
         </div>
      </li>
   </ul>
</div>
于 2012-12-27T00:34:21.523 回答