我想将XSL
文件整合到XML
字符串中,通过php
CURL
命令向我提供。
我试过这个
$output = XML gived me by curl option;
$hotel = simplexml_load_string($output);
$hotel->addAttribute('?xml-stylesheet type=”text/xsl” href=”css/stile.xsl”?');
echo $hotel->asXML();
当我在浏览器上看到XML时,我收到没有样式表的文件。 我的错误在哪里?
答案 0 :(得分:1)
SimpleXMLElement 默认情况下不允许您创建处理指令(PI)并将其添加到节点。然而,姐妹图书馆 DOMDocument 允许这样做。您可以通过从 SimpleXMLElement 扩展来结合这两者并创建一个函数来提供该功能:
class MySimpleXMLElement extends SimpleXMLElement
{
public function addProcessingInstruction($target, $data = NULL) {
$node = dom_import_simplexml($this);
$pi = $node->ownerDocument->createProcessingInstruction($target, $data);
$result = $node->appendChild($pi);
return $this;
}
}
这很容易使用:
$output = '<hotel/>';
$hotel = simplexml_load_string($output, 'MySimpleXMLElement');
$hotel->addProcessingInstruction('xml-stylesheet', 'type="text/xsl" href="style.xsl"');
$hotel->asXML('php://output');
示例性输出(美化):
<?xml version="1.0"?>
<hotel>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
</hotel>
另一种方法是将XML块插入simplexml元素:"PHP SimpleXML: insert node at certain position"或"Insert XML into a SimpleXMLElement"。