我想使用XSLT转换如下所示的XML文件:
$item1 = $_POST['title'];
$item2 = $_POST['link'];
$item3 = $_POST['available_shares'];
$item4 = $_POST['risk'];
$item5 = $_POST['description'];
$item6 = $_POST['postID'];
$item7 = $_POST['price'];
$item8 = $_POST['timestamp'];
// Create connection
$mysqli=mysqli_connect("localhost","username","password","database");
// Check connection
if (mysqli_connect_errno()){
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$query = "INSERT INTO `TB_POSTS`
(
postID,
timestamp,
link,
price,
title,
available_shares,
risk,
description
) VALUES(?, ?, ?, ?, ?, ?, ?, ?)";
$stmt = $mysqli->prepare($query); //Prepare
$stmt->bind_param("ssssssss", $item6, $item8, $item2, $item7, $item1, $item3, $item4, $item5); //Bind
$stmt->execute();//Execute
if($stmt->affected_rows === 0) exit('Nothing was inserted.'); //Check to see if it worked
$stmt->close();
如果我开始转换,我将收到一条错误,即“this”没有结束标记。有没有可能绕过这个?
答案 0 :(得分:1)
当你提到oXygen时,我认为你可以使用XSLT 2或3与Saxon 9.在这种情况下你可以试试David Carlisle的标签汤解析器https://github.com/davidcarlisle/web-xslt/blob/master/htmlparse/htmlparse.xsl是用纯XSLT 2编写的为您提供所需的解析结果。
我用两个例子中的最后一个做了一个例子
<root>
<paragraph>Is 3 < 4?</paragraph>
<paragraph>XSLT is powerful <:</paragraph>
</root>
<{3>}中的,完整的样式表是
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:math="http://www.w3.org/2005/xpath-functions/math"
xmlns:d="data:,dpc"
exclude-result-prefixes="xs math d"
version="3.0">
<xsl:import href="https://github.com/davidcarlisle/web-xslt/raw/master/htmlparse/htmlparse.xsl"/>
<xsl:param name="mal-formed-markup" as="xs:string"><![CDATA[
<root>
<paragraph>Is 3 < 4?</paragraph>
<paragraph>XSLT is powerful <:</paragraph>
</root>
]]></xsl:param>
<xsl:template match="/">
<xsl:copy-of select="d:htmlparse($mal-formed-markup, '', false())"/>
</xsl:template>
</xsl:stylesheet>
并将其解析为
<root>
<paragraph>Is 3 < 4?</paragraph>
<paragraph>XSLT is powerful <:</paragraph>
</root>
因此,对于解析器可能根据需要修复标记的两个示例,在实际应用程序中,您当然可以像unparsed-text
一样加载任何非XML文件,然后将返回的字符串反馈给{{1函数,而不是像我在这个例子中那样使用XSLT中包含的数据作为CDATA部分。
另一个选择是提供Saxon 9商业版的oXygen用户使用扩展函数https://xsltfiddle.liberty-development.net/eiZQaFc。
但最好的建议是修复输入的生成以使用XML工具,以便输入从一开始就是XML。