2011-07-24 23 views
0

我嘗試了幾種不同的方法來顯示wName,wContact沒有運氣,所以我期待獲得幫助。XSL樣式表不顯示我想要的最終網頁

這裏是我的網頁

<delivery> 
<wName>Reston</wName> 
<wContact>John McAdams</wContact> 
<orderDate>8/15/2005</orderDate> 
<recvDate>8/21/2005</recvDate> 
<recvBy>David Hanson</recvBy> 
<sCost>385</sCost> 
<manifest> 
    <item itemID="CM204"> 
    <itemName>Camshaft (Box 20)</itemName> 
    <itemQty>10</itemQty> 
    <itemPrice>289.95</itemPrice> 
    </item> 
    <item itemID="CR201"> 
    <itemName>Carburetor (Box 25)</itemName> 
    <itemQty>5</itemQty> 
    <itemPrice>159.95</itemPrice> 
    </item> 
    <item itemID="CRK310"> 
    <itemName>Crankshaft (Box 10)</itemName> 
    <itemQty>3</itemQty> 
    <itemPrice>109.95</itemPrice> 
    </item> 
    <item itemID="DS503"> 
    <itemName>Distributor (Box 15)</itemName> 
    <itemQty>5</itemQty> 
    <itemPrice>125.95</itemPrice> 
    </item> 
    <item itemID="EC501"> 
    <itemName>Engine Computer (Box 1)</itemName> 
    <itemQty>5</itemQty> 
    <itemPrice>414.59</itemPrice> 
    </item> 
    <item itemID="OP460"> 
    <itemName>Oil Pump (Box 20)</itemName> 
    <itemQty>3</itemQty> 
    <itemPrice>214.95</itemPrice> 
    </item> 
    <item itemID="SP300"> 
    <itemName>Standard Spark Plugs (Box 100)</itemName> 
    <itemQty>10</itemQty> 
    <itemPrice>114.45</itemPrice> 
    </item> 
    <item itemID="SP310"> 
    <itemName>Delux Spark Plugs (Box 100)</itemName> 
    <itemQty>10</itemQty> 
    <itemPrice>139.95</itemPrice> 
    </item> 
    <item itemID="TB261"> 
    <itemName>Timing Belt (Box 40)</itemName> 
    <itemQty>5</itemQty> 
    <itemPrice>94.90</itemPrice> 
    </item> 
    <item itemID="TR301"> 
    <itemName>Transmission (Box 1)</itemName> 
    <itemQty>5</itemQty> 
    <itemPrice>310.95</itemPrice> 
    </item> 
    <item itemID="BA105"> 
    <itemName>Standard Batteries (Box 12)</itemName> 
    <itemQty>5</itemQty> 
    <itemPrice>495.40</itemPrice> 
    </item> 
    <item itemID="BA205"> 
    <itemName>Security Batteries (Box 4)</itemName> 
    <itemQty>3</itemQty> 
    <itemPrice>289.95</itemPrice> 
    </item> 
    <item itemID="BA115"> 
    <itemName>Delux Batteries (Box 12)</itemName> 
    <itemQty>5</itemQty> 
    <itemPrice>525.95</itemPrice> 
    </item> 
    <item itemID="SF305"> 
    <itemName>Standard Air Filters (Box 16)</itemName> 
    <itemQty>5</itemQty> 
    <itemPrice>148.25</itemPrice> 
    </item> 
    <item itemID="FI372"> 
    <itemName>Fuel Injection Kits (Box 1)</itemName> 
    <itemQty>15</itemQty> 
    <itemPrice>129.95</itemPrice> 
    </item> 
    <item itemID="BRK681"> 
    <itemName>Brake Line Kit (Box 1)</itemName> 
    <itemQty>25</itemQty> 
    <itemPrice>29.95</itemPrice> 
    </item> 
    <item itemID="CF401"> 
    <itemName>Cooling Fans (Box 20)</itemName> 
    <itemQty>5</itemQty> 
    <itemPrice>34.41</itemPrice> 
    </item> 
    <item itemID="ALT561"> 
    <itemName>Chrome-plated Alternators (Box 5)</itemName> 
    <itemQty>3</itemQty> 
    <itemPrice>105.95</itemPrice> 
    </item> 
    <item itemID="ALT610"> 
    <itemName>Alternator Case Kit (Box 1)</itemName> 
    <itemQty>5</itemQty> 
    <itemPrice>69.95</itemPrice> 
    </item> 
    <item itemID="CC310"> 
    <itemName>Catalytic Converters (Box 5)</itemName> 
    <itemQty>3</itemQty> 
    <itemPrice>121.59</itemPrice> 
    </item> 
    <item itemID="CC315"> 
    <itemName>Universal Catalytic Converters (Box 5)</itemName> 
    <itemQty>5</itemQty> 
    <itemPrice>68.95</itemPrice> 
    </item> 
</manifest> 
</delivery> 

這裏是XSL樣式表

<?xml-stylesheet type="text/xsl"  
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="html" version="4.0"/> 
<xsl:template match="/"> 
<html> 
<head> 
<title>Election Night Results</title> 
<link href="autotxt.css" rel="stylesheet" type="text/css"/> 
</head> 
<body> 
<ul> 
<xsl:for-each select="delivery/manifest/item"> 
<xsl:for-each select="delivery/wName"> 
<li> 
<xsl:value-of select="wName"/> 
<xsl:value-of select="itemName"/> 
</li> 
</xsl:for-each> 
</ul> 
</body> 
</html> 
</xsl:template> 
</xsl:stylesheet> 
+0

您已經打開了兩個xsl:for - 每個元素只關閉一個開始 –

+0

是您的XML的根元素的交付元素? –

+0

是的,我想我可以添加另一個for-each並選擇wName,但它的工作方式不是這樣的 – user770022

回答

0

你的XML是好的。我已更正了XSL中的一些錯誤。試試這個:

<?xml-stylesheet type="text/xsl"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="html" version="4.0"/> 
<xsl:template match="/"> 
<html> 
<head> 
<title>Election Night Results</title> 
<link href="autotxt.css" rel="stylesheet" type="text/css"/> 
</head> 
<body> 
<p><strong>wName:</strong><xsl:value-of select="/delivery/wName"/></p> 
<p><strong>wContact:</strong><xsl:value-of select="/delivery/wContact"/></p> 
<h2>Parts</h2> 
<table> 
<tr> 
    <th>Item</th> 
    <th>Quantity</th> 
    <th>Price</th> 
</tr> 
<xsl:for-each select="/delivery/manifest/item"> 
<tr> 
    <td><xsl:value-of select="itemName"/></td> 
    <td><xsl:value-of select="itemQty"/></td> 
    <td><xsl:value-of select="itemPrice"/></td> 
</tr> 
</xsl:for-each> 
</table> 
</body> 
</html> 
</xsl:template> 
</xsl:stylesheet> 

這條線:

<xsl:value-of select="/delivery/wName"/> 

從中表明瞭根元素交付元素中選擇wName元素。

這條線:

<xsl:for-each select="/delivery/manifest/item"> 

通過/遞送每個項目元素/清單

而這個行告訴XSL解釋器來循環:

<li><xsl:value-of select="itemName"/></li> 

輸出內的文本節點將ltemName元素轉換爲li html元素。由於您位於正在選擇/ delivery/manufest/item元素的foreach元素中,因此您只需在要輸出的item元素內提供該元素的名稱,在本例中爲itemName。

這行告訴解釋停止循環:

</xsl:for-each> 

希望這有助於?

+0

但是我已經嘗試過創建另一個for-each但沒有運氣,你能給我一個例子嗎?你認爲它應該看起來像 – user770022

+0

這個例子是 –

+0

它不起作用我試着把它拿到窩裏rk沒有快樂。它返回與我的一樣的東西。我只是得到零件清單。 – user770022

0

您的代碼表明您尚未理解上下文在XSLT和XPath中的工作方式。當您使用xsl:for-each時,由select表達式選擇的每個節點將成爲用於評估循環內其他路徑表達式的上下文節點。

所以,當你寫:

<xsl:for-each select="delivery/manifest/item"> 
<xsl:for-each select="delivery/wName"> 
<li> 
<xsl:value-of select="wName"/> 

2點線開始尋找遞送元件是在前面的行選擇的項目元素的一個孩子,而4號線開始尋找wName元素是第2行中選擇的wName元素的子元素。這顯然不是您想要的。第2行應該以「/ delivery」開始,從樹的根部開始選擇,而第4行應該使用「select =」。「來選擇上下文項而不是其子項。