2
我想從mysql數據庫生成xml。應用程序不需要知道數據庫中存在的表。生成xml和xsl從php
該函數是這樣的,你輸入表名併爲其生成xml。
該功能的作品完美,但我需要用xsl風格的XML。由於應用程序不知道要處理哪個表,所以編寫一個預定義的xsl已經失敗了。
有人可以建議我如何編程寫一個xsl與生成的XML一起。
功能粘貼在下面。
PHP生成XML(genXMl.php):
<?
header("content-type:text/xml");
if(isset($_GET['tbl']))
{
$myServer = "localhost";
$myUser = "user";
$myPass = "pwd";
$myDB = "test";
$table = $_GET['tbl'];
function getXML($sql="Default Query")
{
$conn=mysql_connect("localhost","user","pwd");
$db=mysql_select_db("test");
$result = mysql_query($sql,$conn);
$columns="";
echo "<records>";
while($row=mysql_fetch_assoc($result))
{
$columns.="<record>";
foreach($row as $key => $value)
{
$columns.="<$key>$value</$key>";
}
$columns.="</record>";
}
echo $columns;
echo "</records>";
}
getXML("SELECT * FROM $table");
}
了xsl:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My header</h2>
<table border="1">
<xsl:for-each select="records/record">
<tr>
<td><xsl:value-of select="<?php echo $key; ?>" /></td> //trying to style the $KEY
</tr>
<tr>
<td><xsl:value-of select="<?php echo $value;?>"/></td> //trying to style the $VALUE </tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
您不能像這樣在XSL樣式表中嵌入PHP標籤,您不能同時調用轉換和PHP腳本。我要麼省略XSL步驟並直接輸出樣式HTML,要麼讓'getXML()'函數返回一個DOM對象,您可以在樣式表中調用該對象。簽出'DomDocument-> load()' – Robin 2011-06-04 21:35:32
您正在通過串聯字符串來構建XML。不要這樣做。使用'DOMDocument'。 – Tomalak 2011-06-04 21:40:27