1
表試想一下下面的XML使用XSL從XML創建XHTML - 與預定義的寬度
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
<book>
<title lang="eng">A book</title>
<price>39.95</price>
</book>
<book>
<title lang="eng">Another Book</title>
<price>39.95</price>
</book>
</bookstore>
我需要創建一個顯示在XHTML中,每行只有2本圖書XML文件的XSL樣式表。 XML文件中的書籍數量可隨時更改,因此XSL需要考慮到這一點。我認爲這樣做的一個解決方案就是將數據放入表格中,但是我無法將自己的大腦思考成一種有效的創建方式。可能的想法是執行模2檢查或將總書籍除以2,但仍然無法總結如何編寫這些文件來創建有效的代碼。以下是我的一個解決方案,可以在一個長列中一個接一個地顯示所有書籍。
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:template match="/">
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/theStyle.css" />
</head>
<body onload="parent.alertsize(document.body.scrollHeight);">
<div>
<!-- <p><xsl:value-of select="count(//book)"/></p>-->
<xsl:for-each select="/bookstore/book">
<h4><xsl:value-of select='title' /></h4>
<p><xsl:value-of select='price' /></p>
<!--<xsl:if test="postion() mod 2 = 0">
<p>a mod 0</p>
</xsl:if>-->
</xsl:for-each>
</div>
</body>
</html>
</xsl:template>
任何提示/指針/溶液不勝感激。 (不一定要求表作爲解決方案,我只是覺得這可能是一個選項)
感謝您對此的幫助,我覺得好像我理解模板好一點,現在想知道這是否也是一種解決方案。 但是,我的結果代碼將被放置在iframe中,我需要能夠使用XSL來顯示每行只有2個元素。 我知道iframe的寬度,所以作爲解決方案我可以添加一些間距嗎?或者任何人都可以想到另一種解決方案?你仍然可以看到你的結果代碼,它們會一個接一個地顯示出來。 – neilfoxholes
@neilfoxholes那麼,我認爲你的問題是關於XSL轉換,目標HTML是一個完全不同的問題。看看有關兩列布局的教程之一(http://mirificampress.com/show.php?id=106並不錯),看看它是否適合你。 –
感謝您的幫助!我現在解決了我的問題。 – neilfoxholes