2012-01-05 7 views
1

- しかし、カントはかなりそれが仕事を得る、イムは、このようにそれをやろうとしている。行イムは、すべての第三要素の周囲の容器を持っていると思います

<xsl:when test="$type != ''"> 
      <xsl:variable name="query" select="$currentPage/* [@isDoc and string(umbracoNaviHide) != '1' and type = $type ]"/> 
      <xsl:if test="count($query) &gt; 0"> 
       <section class="brochures-{$section-css-name}"> 
        <xsl:choose> 
         <xsl:when test="$section-css-name = 'portrait' or region = $region"> 
          <h2>Business</h2> 
         </xsl:when> 
         <xsl:when test="$section-css-name = 'landscape' or region = $region"> 
          <h2>Panorama</h2> 
         </xsl:when> 
         <xsl:when test="$section-css-name = 'quadrat' or region = $region"> 
          <h2>Image</h2> 
         </xsl:when> 
        </xsl:choose> 
        <xsl:if test="position() = 1 or position() mod 3 = 0 "> 
         <div class="row"> 
          <div class="case-shadow">&nbsp;<xsl:comment/> 
          </div> 
          <xsl:for-each select="$query"> 
           <xsl:variable name="externalUrl" select="externalUrl"/> 
           <xsl:if test="$externalUrl != ''"> 
            <article class="brochure"> 
             <a href="{$externalUrl}/MailView/" target="_blank" class="replaceURL"> 
              <xsl:if test="$type = 60"> 
               <img src="{$externalUrl}/MailView/pagedata/frontpage.jpg" width="160" height="228" alt="" class="reflect"/> 
              </xsl:if> 
              <xsl:if test="$type = 61"> 
               <img src="{$externalUrl}/MailView/pagedata/frontpage.jpg" width="228" height="160" alt="" class="reflect"/> 
              </xsl:if> 
              <xsl:if test="$type = 62"> 
               <img src="{$externalUrl}/MailView/pagedata/frontpage.jpg" width="160" height="160" alt="" class="reflect"/> 
              </xsl:if> 
              <p> 
               <xsl:value-of select="headline"/> 
              </p> 
             </a> 
            </article> 
           </xsl:if> 
          </xsl:for-each> 
         </div> 
        </xsl:if> 
       </section> 
      </xsl:if> 
     </xsl:when> 

私はの出力をしたいと思いますHTMLはされるように:

<section class="brochures-portrait"> 
<h2>Business</h2> 
<div class="row"> 
    <div class="case-shadow">&nbsp;<!----></div> 
    <article class="brochure"> 
    </article> 
    <article class="brochure"> 
    </article> 
    <article class="brochure"> 
    </article> 
</div> 
<div class="row"> 
<div class="case-shadow">&nbsp;<!----></div> 
    <article class="brochure"> 
    </article> 
    <article class="brochure"> 
    </article> 
</div> 
</section> 

しかし、私は私のパンフレットS :(


[OK]を、THXのすべての周りの1を得るが、イム終了しませんeは必ずどのようにこれでそれを統合する:

代わりに、すべての要素を反復処理し、各1の位置をdeterming、代わりに今度は、あなたが試してみてくださいと第一、第四に、関連する要素にマッチする
<xsl:template match="/"> 
    <xsl:variable name="chosenregion"> 
     <xsl:value-of select="umbraco.library:RequestQueryString('region')"/> 
    </xsl:variable> 
    <xsl:if test="$currentPage/showRegionNavgation = '1'"> 
     <nav class="region-sort"> 
      <ul> 
       <li class="grey-gradient"> 
        <xsl:if test="$chosenregion = ''"> 
         <xsl:attribute name="class">selected</xsl:attribute> 
        </xsl:if> 
        <a href="?">All</a> 
       </li> 
       <li class="grey-gradient"> 
        <xsl:if test="$chosenregion = '76'"> 
         <xsl:attribute name="class">selected</xsl:attribute> 
        </xsl:if> 
        <a href="?region=76">North</a> 
       </li> 
       <li class="grey-gradient"> 
        <xsl:if test="$chosenregion = '77'"> 
         <xsl:attribute name="class">selected</xsl:attribute> 
        </xsl:if> 
        <a href="?region=77">Mid</a> 
       </li> 
       <li class="grey-gradient last"> 
        <xsl:if test="$chosenregion = '78'"> 
         <xsl:attribute name="class">selected</xsl:attribute> 
        </xsl:if> 
        <a href="?region=78">South</a> 
       </li> 
      </ul> 
     </nav> 
    </xsl:if> 

    <xsl:call-template name="brochure"> 
     <xsl:with-param name="type">60</xsl:with-param> 
     <xsl:with-param name="region"> 
      <xsl:value-of select="umbraco.library:RequestQueryString('region')"/> 
     </xsl:with-param> 
     <xsl:with-param name="section-css-name">portrait</xsl:with-param> 
    </xsl:call-template> 
    <xsl:call-template name="brochure"> 
     <xsl:with-param name="type">61</xsl:with-param> 
     <xsl:with-param name="region"> 
      <xsl:value-of select="umbraco.library:RequestQueryString('region')"/> 
     </xsl:with-param> 
     <xsl:with-param name="section-css-name">landscape</xsl:with-param> 
    </xsl:call-template> 
    <xsl:call-template name="brochure"> 
     <xsl:with-param name="type">62</xsl:with-param> 
     <xsl:with-param name="region"> 
      <xsl:value-of select="umbraco.library:RequestQueryString('region')"/> 
     </xsl:with-param> 
     <xsl:with-param name="section-css-name">quadrat</xsl:with-param> 
    </xsl:call-template> 
</xsl:template> 
<xsl:template name="brochure"> 
    <xsl:param name="type"/> 
    <xsl:param name="section-css-name"/> 
    <xsl:param name="region"/> 
    <xsl:choose> 
     <xsl:when test="$region != ''"> 
      <xsl:variable name="query" select="$currentPage/* [@isDoc and string(umbracoNaviHide) != '1' and type = $type and region = $region ]"/> 
      <xsl:if test="count($query) &gt; 0"> 
       <section class="brochures-{$section-css-name}"> 
        <xsl:choose> 
         <xsl:when test="$section-css-name = 'portrait' or region = $region"> 
          <h2> 
           <xsl:value-of select="umbraco.library:GetDictionaryItem('Business')"/> 
          </h2> 
         </xsl:when> 
         <xsl:when test="$section-css-name = 'landscape' or region = $region"> 
          <h2> 
           <xsl:value-of select="umbraco.library:GetDictionaryItem('Panorama')"/> 
          </h2> 
         </xsl:when> 
         <xsl:when test="$section-css-name = 'quadrat' or region = $region"> 
          <h2> 
           <xsl:value-of select="umbraco.library:GetDictionaryItem('Image')"/> 
          </h2> 
         </xsl:when> 
        </xsl:choose> 
        <div class="case-shadow">&nbsp;<xsl:comment/> 
        </div> 
        <xsl:for-each select="$query"> 
         <xsl:variable name="externalUrl" select="externalUrl"/> 
         <xsl:if test="$externalUrl != ''"> 
          <article class="brochure"> 
           <a href="{$externalUrl}/MailView/" target="_blank" class="replaceURL"> 
            <xsl:if test="$type = 60"> 
             <img src="{$externalUrl}/MailView/pagedata/frontpage.jpg" width="176" height="248" alt="" class="reflect"/> 
            </xsl:if> 
            <xsl:if test="$type = 61"> 
             <img src="{$externalUrl}/MailView/pagedata/frontpage.jpg" width="242" height="170" alt="" class="reflect"/> 
            </xsl:if> 
            <xsl:if test="$type = 62"> 
             <img src="{$externalUrl}/MailView/pagedata/frontpage.jpg" width="176" height="175" alt="" class="reflect"/> 
            </xsl:if> 
            <p> 
             <xsl:value-of select="headline"/> 
            </p> 
           </a> 
          </article> 
         </xsl:if> 
        </xsl:for-each> 
       </section> 
      </xsl:if> 
     </xsl:when> 
     <xsl:when test="$type != ''"> 
      <xsl:variable name="query" select="$currentPage/* [@isDoc and string(umbracoNaviHide) != '1' and type = $type ]"/> 
      <xsl:if test="count($query) &gt; 0"> 
       <section class="brochures-{$section-css-name}"> 
        <xsl:choose> 
         <xsl:when test="$section-css-name = 'portrait' or region = $region"> 
          <h2>Business</h2> 
         </xsl:when> 
         <xsl:when test="$section-css-name = 'landscape' or region = $region"> 
          <h2>Panorama</h2> 
         </xsl:when> 
         <xsl:when test="$section-css-name = 'quadrat' or region = $region"> 
          <h2>Image</h2> 
         </xsl:when> 
        </xsl:choose> 
        <div class="case-shadow">&nbsp;<xsl:comment/> 
        </div> 
        <xsl:for-each select="$query"> 
         <xsl:choose> 
          <xsl:when test="position() = 1 or position() mod 3 = 0"> 
           <div class="row"> 
            <xsl:variable name="externalUrl" select="externalUrl"/> 
            <xsl:if test="$externalUrl != ''"> 
             <article class="brochure"> 
              <a href="{$externalUrl}/MailView/" target="_blank" class="replaceURL"> 
               <xsl:if test="$type = 60"> 
                <img src="{$externalUrl}/MailView/pagedata/frontpage.jpg" width="160" height="228" alt="" class="reflect"/> 
               </xsl:if> 
               <xsl:if test="$type = 61"> 
                <img src="{$externalUrl}/MailView/pagedata/frontpage.jpg" width="228" height="160" alt="" class="reflect"/> 
               </xsl:if> 
               <xsl:if test="$type = 62"> 
                <img src="{$externalUrl}/MailView/pagedata/frontpage.jpg" width="160" height="160" alt="" class="reflect"/> 
               </xsl:if> 
               <p> 
                <xsl:value-of select="headline"/> 
               </p> 
              </a> 
             </article> 
            </xsl:if> 
           </div> 
          </xsl:when> 
          <xsl:otherwise> 
           <xsl:variable name="externalUrl" select="externalUrl"/> 
           <xsl:if test="$externalUrl != ''"> 
            <article class="brochure"> 
             <a href="{$externalUrl}/MailView/" target="_blank" class="replaceURL"> 
              <xsl:if test="$type = 60"> 
               <img src="{$externalUrl}/MailView/pagedata/frontpage.jpg" width="160" height="228" alt="" class="reflect"/> 
              </xsl:if> 
              <xsl:if test="$type = 61"> 
               <img src="{$externalUrl}/MailView/pagedata/frontpage.jpg" width="228" height="160" alt="" class="reflect"/> 
              </xsl:if> 
              <xsl:if test="$type = 62"> 
               <img src="{$externalUrl}/MailView/pagedata/frontpage.jpg" width="160" height="160" alt="" class="reflect"/> 
              </xsl:if> 
              <p> 
               <xsl:value-of select="headline"/> 
              </p> 
             </a> 
            </article> 
           </xsl:if> 
          </xsl:otherwise> 
         </xsl:choose> 
        </xsl:for-each> 
       </section> 
      </xsl:if> 
     </xsl:when> 
     <xsl:otherwise> 
      <xsl:variable name="query" select="$currentPage/* [@isDoc and string(umbracoNaviHide) != '1' and type = $type and region = $region ]"/> 
      <xsl:if test="count($query) &gt; 0"> 
       <section class="brochures-{$section-css-name}"> 
        <xsl:choose> 
         <xsl:when test="$section-css-name = 'portrait' or region = $region"> 
          <h2>Business</h2> 
         </xsl:when> 
         <xsl:when test="$section-css-name = 'landscape' or region = $region"> 
          <h2>Panorama</h2> 
         </xsl:when> 
         <xsl:when test="$section-css-name = 'quadrat' or region = $region"> 
          <h2>Image</h2> 
         </xsl:when> 
        </xsl:choose> 
        <div class="case-shadow">&nbsp;<xsl:comment/> 
        </div> 
        <xsl:for-each select="$query"> 
         <xsl:variable name="externalUrl" select="externalUrl"/> 
         <xsl:if test="$externalUrl != ''"> 
          <article class="brochure"> 
           <a href="{$externalUrl}/MailView/" target="_blank" class="replaceURL"> 
            <xsl:if test="$type = 60"> 
             <img src="{$externalUrl}/MailView/pagedata/frontpage.jpg" width="176" height="248" alt="" class="reflect"/> 
            </xsl:if> 
            <xsl:if test="$type = 61"> 
             <img src="{$externalUrl}/MailView/pagedata/frontpage.jpg" width="242" height="170" alt="" class="reflect"/> 
            </xsl:if> 
            <xsl:if test="$type = 62"> 
             <img src="{$externalUrl}/MailView/pagedata/frontpage.jpg" width="176" height="175" alt="" class="reflect"/> 
            </xsl:if> 
            <p> 
             <xsl:value-of select="headline"/> 
            </p> 
           </a> 
          </article> 
         </xsl:if> 
        </xsl:for-each> 
       </section> 
      </xsl:if> 
     </xsl:otherwise> 
    </xsl:choose> 
</xsl:template> 
+0

このようなことは簡単ではありませんが、予想される出力だけでなく入力XMLも投稿できますので、期待する内容について混同することはありません。ありがとう! –

+0

投稿を更新しました – nuffsaid

答えて

2

、 7位など。

<brochures> 
    <brochure>Brochure 1</brochure> 
    <brochure>Brochure 2</brochure> 
    <brochure>Brochure 3</brochure> 
    <brochure>Brochure 4</brochure> 
    <brochure>Brochure 5</brochure> 
</brochures> 

を次のように

たとえば、あなたがちょうどあなたのdivを書き出すことができ、あなたはとても

<xsl:apply-templates select="brochure[position() mod 3 = 1]" mode="first"/> 

したら、このような行の上に置かように、すべての第三の要素になるだろう、あなたの入力XMLだったと仮定そのグループに必要な3つの行を一致させます。

<div class="row"> 
    <xsl:apply-templates select="self::*|following-sibling::*[position() &lt; 3]"/> 
</div> 

完全なXSLTです。注意:私はより多くの構成可能にするためにdivごとの行の数をパラメータ化しました。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 

    <xsl:param name="rows" select="3" /> 

    <xsl:template match="/brochures"> 
     <section> 
     <xsl:apply-templates select="brochure[position() mod $rows = 1]" mode="first"/> 
     </section> 
    </xsl:template> 

    <xsl:template match="brochure" mode="first"> 
     <div class="row"> 
     <xsl:apply-templates select="self::*|following-sibling::*[position() &lt; $rows]"/> 
     </div> 
    </xsl:template> 

    <xsl:template match="brochure"> 
     <article class="brochure"/> 
    </xsl:template> 
</xsl:stylesheet> 

は(パンフレット要素に一致する2つのテンプレートを区別するモードの使用に注意してください)以下は

<section> 
    <div class="row"> 
    <article class="brochure" /> 
    <article class="brochure" /> 
    <article class="brochure" /> 
    </div> 
    <div class="row"> 
    <article class="brochure" /> 
    <article class="brochure" /> 
    </div> 
</section> 
に戻され、上記のサンプルXMLに適用

これはあなた自身のXMLに適合させるのに十分な情報を提供してくれることを願っています。

関連する問題