2017-10-16 36 views
0

我试图在xml中使用xslt在我的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> 

我试图建立一个风格页面来显示这个信息,我已经成功地显示我需要的一切,除了“照片”,因为当我打电话'图片'它只(可以理解)显示第一张照片。这是目前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> 

什么而不直接参考的文件同时显示图片的最佳方式?我需要我的xslt适用于具有相同节点名称的多个XML文档。

到目前为止,我试过了:在我的main 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

THANKYOU!我确实尝试了第二个循环,但是我没有用“images/{。}”引用图片。学习到教训了 (: – rodney1234

相关问题