我输入的xml文件:
<root>
<child/>
</root>
我的预期输出将在视图页面源中:
<root>
<child>
<new_element>new1</new_element>
<new_element>new2</new_element>
<new_element>new3</new_element>
</child>
</root>
我正在查看页面来源的实际输出:
<root>
<child><new_element>new1</new_element> <new_element>new2</new_element> <new_element>new3</new_element></child>
</root>
我的xlst代码是:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="test"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/root/child">
<xsl:copy>
<xsl:value-of select="$test"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
我的PHP代码是:
<?php
$xslt = new xsltProcessor;
$xslt->importStyleSheet(DomDocument::load('test.xsl'));
$val = '<new_element>new1</new_element> <new_element>new2</new_element> <new_element>new3</new_element>';
$xslt->setParameter('','test',$val);
echo $view = $xslt->transformToXML(DomDocument::load('test.xml'));
?>
通过在浏览器中运行它,我得到的输出没有解析xml标签。请找出我出错的地方。
答案 0 :(得分:0)
参数$ test被输入为字符串, NOT 一个文档,因此您的样式表的行为与您要求它的行为完全一致。我不相信有任何标准的XSLT函数可以将文本字符串解析为XDM文档。
要实现您的目标,您应该传递一个文件名作为参数值,而不是text.xsl的字符串内容。然后在样式表中,您可以使用document()函数。