2016-08-10 8 views
0

テンプレートは、データベースから生成されたデータセットを表示します。データセットには多くの行があります。XSLテンプレートで各レコードのテーブルを繰り返さない方法

<xsl:template match="Photos">は、データセット内の各行に対して実行されます。データセット内のすべての行には1つのイメージがあります。

<td id="tdImage">を繰り返すだけですが、残りは1回だけ実行します。

この目的は、画像を垂直ではなく水平に表示することです。事前に

what it looks now

<xsl:template match="Photos"> 

<table width = "600"> 

    <tr style="width:600;"> 
    <xsl:if test = "SequenceNumber=1" > 
     <td colspan ="5" class ="input">Photos:</td> 
    </xsl:if> 
    </tr> 

    <tr style="width:600;"> 


     <td id="tdImage"> 
      <table width ="150"> 

      <tr> 
       <td style ="padding-left:15px"> 
       <table width ="150"> 
        <tr style="width:150px;"> 
        <td style="width:135px;"> 
         <a href = '{src}' style="font-size:10px;"> 
         <xsl:value-of select="FileName"/> 
         </a> 

        </td> 
        </tr> 
        <tr style="width:150px;"> 
        <td style="width:150px;"> 

         <img type = "hidden" Width="75" Height="75" src='{src}' /> 

        </td> 

        </tr> 


       </table> 

       </td> 
      </tr> 
      </table> 
     </td> 

    </tr> 

</table> 

ありがとう!

編集:例のデータセット

SequenceNumber | FileName |    src 
    --------------------------------------------------------------------- 
      1   | flowers.jpg | blabla.ashx?SequenceNumber=1 
      2   | light.jpg | blabla.ashx?SequenceNumber=2 
      3   | garden.jpg | blabla.ashx?SequenceNumber=3 
      4   | candy.jpg | blabla.ashx?SequenceNumber=4 
+0

このXSLTを試してみてください、あなたが入力として使用されているXMLデータセットの例を示していることはできますか?ありがとうございました! –

+0

@Wafae ...それは本当に入力ソースですか?それはXML形式ではありませんか?これを投稿してください。データのテーブルビューではありません。特定の要素を見る必要があります。 – Parfait

+0

@パフェええ、まさに入力ソースです。データセットは、ストアドプロシージャのテーブル結果です。私がここで変更したのは、テーブル結果の画像の 'src'だけです。それ以外のものはまったく同じです。 – Wafae

答えて

0

のために、私は正確な答えを与えることができるかわからないけど、スターターとして、あなたはおそらくメインのデータセットに一致するテンプレート(の親を持つようにしたいですすべてのPhotos要素)、ここでテーブル行を作成できます。

あなただけの唯一の最初の4を表示したい場合は、あなたがこれを行うことによって始めることができは...

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 
    <xsl:output method="html" doctype-public="XSLT-compat" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" /> 

    <xsl:template match="/*"> 
     <table> 
      <tr> 
       <td colspan="4">Photos:</td> 
      </tr> 
      <tr> 
       <xsl:apply-templates select="Photos[position() &lt; 5]" /> 
      </tr> 
     </table> 
    </xsl:template> 

    <xsl:template match="Photos"> 
     <td> 
      <a href = '{src}' style="font-size:10px;"> 
       <xsl:value-of select="FileName"/> 
      </a> 
      <br /> 
      <img Width="75" Height="75" src='{src}' /> 
     </td> 
    </xsl:template> 
</xsl:stylesheet> 

テーブル内にネストされたテーブルが実際に推奨されませんので、私は「写真」テンプレートを単純化しているノート。

一方、写真が4枚以上あり、1行に4枚表示したい場合は、各行の最初に表示される最初の写真を選択します(1,5,5,9番目の写真、等)、そしてそれらのそれぞれから列を作り上げてください。

することはあまりにも

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 
    <xsl:output method="html" doctype-public="XSLT-compat" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" /> 

    <xsl:template match="/*"> 
     <table> 
      <tr> 
       <td colspan="4">Photos:</td> 
      </tr> 
      <xsl:for-each select="Photos[position() mod 4 = 1]"> 
       <tr> 
        <xsl:apply-templates select="self::*|following-sibling::Photos[position() &lt; 4]" /> 
       </tr> 
      </xsl:for-each> 
     </table> 
    </xsl:template> 

    <xsl:template match="Photos"> 
     <td> 
      <a href = '{src}' style="font-size:10px;"> 
       <xsl:value-of select="FileName"/> 
      </a> 
      <br /> 
      <img Width="75" Height="75" src='{src}' /> 
     </td> 
    </xsl:template> 
</xsl:stylesheet> 
関連する問題