gpt4 book ai didi

php - 从 php 生成 xml 和 xsl

转载 作者:行者123 更新时间:2023-11-29 03:45:30 27 4
gpt4 key购买 nike

我正在尝试从 mysql 数据库生成 xml。应用程序不需要知道数据库中存在的表。

该函数是这样的,您输入表名并为其生成 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>

最佳答案

您不应将 xml 标记定义为数据库中的键,而应为您的 xml 定义一个您可以使用 DTD 或 XSD 验证的唯一结构。

那么,您的 XSL 将非常简单。

例如,而不是:

$columns.="<$key>$value</$key>";

你可以这样做:

$columns.="<key name=\"$key\">$value</key>";

然后,您的 xsl 将很容易制作 :)

正如@Tomalak 在评论中提到的,您应该使用 DOMDocument 而不是连接字符串。

关于php - 从 php 生成 xml 和 xsl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6239473/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com