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

2行目を最初の行の次の兄弟の次の兄弟から開始する方法は??

ちょっと奇妙に聞こえます..基本的に私は繰り返しを望んでいません..

4

2 に答える 2

1

おそらくどこかに 'xsl:for-each select="rows/row"' 要素がありますか?

次に、それを置き換えるだけです

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

テンプレートを 2 行おきにのみ適用するには

于 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 に答える