2009-9-17 02:21
xmlscript
怎样使XMLDOM输出的内容不带<?xml version"1.0"?> ???
PHP里用XSL把XML转换了一下,然后将转换后的结果输出,我有如下三个选择:
saveXML()、saveXML(node) 和 saveHTML()。
但是,注意了,转换后的结果是要嵌入一个符合XHTML规范的xhtml页面,所以saveHTML()不行,因为它把原来好好的<img/>硬是变成了<img>,XHTML规则被破坏。
无奈只好用saveXML(),这个也有大问题,它会自带<?xml version="1.0" encoding="gb2312"?>这一行,而XHTML页面的顶端已经有一个了。
后来我查资料看到有saveXML(node)有个参数,但是它是专门对付DOM生成的节点,像我这样用XSL转换后的结果,我实在是不知道怎么做啊。:Q
-----------default_xhtml.php ----------
[code]
<?php
header("Content-Type: application/xhtml+xml; charset=gb2312");
echo '<'.'?xml version="1.0" encoding="gb2312"?'.'>';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>
<?php
$xml = new DOMDocument();
$xml->load("test.xml");
$xsl = new DOMDocument();
$xsl->load("test.xsl");
$proc = new XSLTProcessor();
$proc->importStyleSheet($xsl);
$temp = $proc->transformToXML($xml);
$newxml = new DOMDocument();
$newxml->loadXML($temp);
echo $newxml->saveXML(); // 不行,输出结果带<?xml version="1.0"?>
echo $newxml->saveHTML(); //不行,输出结果没有关闭tag,如<img>
?>
</body>
</html>
[/code]