2017-10-16 8 views
0

xsltを使用してmy xmlに同じ名前の複数のイメージを表示しようとしています。ここでは「レストラン」要素と私のXMLでその子の例である:xslの同じ要素名から複数のイメージを表示する

<cuisine type="Indian"> 
<restaurant> 
    <name>Indu</name> 
    <logo>indu_logo.png</logo> 
    <pics>Website-Heirloom.jpg</pics> 
    <pics>Website-Snapper.jpg</pics> 
    <url>http://indudining.com.au</url> 
    <address>350 George Street, (entry via Angel Place) Sydney</address> 
    <phonenumber>02 9223 0158</phonenumber> 
    <openinghours>12:00PM to late</openinghours> 
    <delivery>Minimum Price: $50. Delivery Fee: $10</delivery> 
    <description>INDU is a celebration of southern Indian and Sri Lankan village culture, flavours and local hospitality.</description> 
    <menu>Desserts, Paratha, Basmati rice</menu> 
    <onlinebooking>Yes</onlinebooking> 
    <event>No</event> 
</restaurant> 

私は、この情報を表示するスタイルのページを構築しようとしている、と私は除いて、私は必要なすべてを表示することができました"pics"と呼ぶとき、それは最初の絵だけを表示します。ここに私が持っている現在のXSLTがあります:

<xsl:template match="/"> 

    <html> 
    <head> 

     <title>Restaurant Info</title>  


     </head> 
     <body> 

     <h1>Restaurant List (A-Z):</h1> 

     <xsl:for-each select="cuisine/restaurant"> 

      <xsl:sort select="name"/> 

      <SPAN> <img src="images/{logo}" width="100"/> </SPAN> 
      <BR /> 
      <SPAN STYLE="font-weight:bold">Restauraunt Name: </SPAN> 
      <xsl:value-of select="name" /> 
      <BR /> 
      <SPAN STYLE="font-weight:bold">Description: </SPAN> 
      <xsl:value-of select="description" /> 
      <BR /> 
      <SPAN STYLE="font-weight:bold">URL: </SPAN> 
      <xsl:value-of select="url" /> 
      <BR /> 
      <SPAN STYLE="font-weight:bold">Address: </SPAN> 
      <xsl:value-of select="address" /> 
      <BR/> 
      <SPAN> <img src="images/{pics}" width="200"/> </SPAN> 
      <BR /> 


      <P/> 
      <hr/> 

     </xsl:for-each> 



     </body> 
    </html> 

</xsl:template> 

ファイルを直接参照せずに両方の写真を表示する最良の方法は何ですか?同じノード名を持つ複数のXML文書に適用できるようにxsltが必要です。

これまで私は主なfor-eachループ内に別のfor-eachループを作成し、その中に 'pics'を呼び出し、 'pics()'の後ろに角かっこを入れて、代わりに 'xsl:value-of'を使って写真を呼び出して、新しいテンプレートを作成して本文に入れます。これはどれもうまくいきませんでしたが(私は間違っていたかもしれませんが)、私が思いついたコードは保存しませんでしたが、誰かがそれをやる方法を知っていて、私の間違ったコードを喜んで書き直してください。

ありがとうございました。

答えて

0

<pics>に別の<xsl:for-each>ループを追加することができます。

<xsl:template match="/"> 
    <html> 
     <head> 
      <title>Restaurant Info</title> 
     </head> 
     <body> 
      <h1>Restaurant List (A-Z):</h1> 
      <xsl:for-each select="cuisine/restaurant"> 
       <xsl:sort select="name" /> 
       ... 
       <xsl:for-each select="pics"> 
        <SPAN> 
         <img src="images/{.}" width="200" /> 
        </SPAN> 
       </xsl:for-each> 
       ... 
      </xsl:for-each> 
     </body> 
    </html> 
</xsl:template> 

出力

<SPAN> 
    <img src="images/Website-Heirloom.jpg" width="200" /> 
</SPAN> 
<SPAN> 
    <img src="images/Website-Snapper.jpg" width="200" /> 
</SPAN> 
+0

ありがとう!私は2番目のループを試みましたが、 "images/{。}"を使って画像を引用しませんでした。レッスンで学んだこと(: – rodney1234

関連する問題