我已經鍵入了一些電影的XML。我需要使用XSLT轉換將信息從「屏幕1」輸出到表格中。該表應顯示「屏幕1」和什麼電影正在播放,類似於下表的三個篩選時間:如何使用xsl:foreach從非嵌套元素中選擇變量
╔════════════╦═════════════╗
║Showing Time║ Film ║
╠════════════╬═════════════╣
║ 1:30pm ║ The Revenant║
║ 5:00pm ║ The Revenant║
║ 8:30pm ║ The Revenant║
╚════════════╩═════════════╝
這裏是我的XML,雖然我不知道它是否被寫入做對於XSLT最好的方法:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="Assignment1.xsl"?>
<Cinema>
<Name> Old Street Cinema</Name>
<Address>23 Old Street, Oxford</Address>
<Telephone>01865 123456</Telephone>
<Owner>John Arbuttle</Owner>
<Showings>
<Showing>
<Films>
<Film>
<Screen>1</Screen>
<Name>The Revenant</Name>
<Usher>Sarah Eccles</Usher>
</Film>
<Film>
<Screen>2</Screen>
<Name>Zoolander 2</Name>
<Usher>Ari Ventaro</Usher>
</Film>
<Film>
<Screen>3</Screen>
<Name>Star Wars the Force Awakens</Name>
<Usher>Jake Calcas</Usher>
</Film>
</Films>
</Showing>
</Showings>
<ScreenTimes>
<Time name="Afternoon">1:30pm</Time>
<Time name="Early Evening">5:00pm</Time>
<Time name="Late Evening">8:30pm</Time>
</ScreenTimes>
</Cinema>
這裏是未完成的XSL文件:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/Cinema">
<html>
<body>
<h1>The Old Street Cinema </h1>
<h2>Screen 1</h2>
<table border="1">
<tr>
<th>Showing Time</th>
<th>Film</th>
</tr>
<xsl:for-each select="ScreenTimes">
<tr>
<td><xsl:value-of select="Time" /></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
我的問題是:我該如何使用XSLT把兩個放映時間和電影的名字表時t他的元素不是嵌套在一起的。
我將您的XML修復爲_well-formed_,但我不知道它是否是您期望的形式。但是,XML仍未提供將電影與播放時間關聯的必要信息。所以,到目前爲止,除非您認爲第一個播放時間與列出的第一個電影標題相符,否則此問題無法解決。 – zx485
我認爲通過將每個元素中的三個放映嵌套在一起或反之亦然,將有更好的方式來對XML進行編碼,但我仍然不確定如何使用XSLT將信息放入表中。 –
Henrymcp
@Henrymcp XSLT應該如何知道選擇哪個屏幕?你會傳遞它作爲參數,還是你想硬編碼到樣式表或...? –