在xsl中显示来自相同元素名称的多个图像
问题描述:
我试图在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'来调用图片,而不是创建一个新的模板,并将其放入主体中。这一切都没有奏效(虽然也许我做错了),所以我没有保存我想出来的代码,但如果有人知道如何去做,并不觉得我已经给它一个足够好的去应得的听听如何,让我知道和生病很乐意重写我不正确的代码。
谢谢。
答
您可以为<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>
THANKYOU!我确实尝试了第二个循环,但是我没有用“images/{。}”引用图片。学习到教训了 (: – rodney1234