使用php传递变量的Xml转换

时间:2012-07-18 09:30:25

标签: php xml xslt

我输入的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>&lt;new_element&gt;new1&lt;/new_element&gt;   &lt;new_element&gt;new2&lt;/new_element&gt;   &lt;new_element&gt;new3&lt;/new_element&gt;</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标签。请找出我出错的地方。

1 个答案:

答案 0 :(得分:0)

参数$ test被输入为字符串, NOT 一个文档,因此您的样式表的行为与您要求它的行为完全一致。我不相信有任何标准的XSLT函数可以将文本字符串解析为XDM文档。

要实现您的目标,您应该传递一个文件名作为参数值,而不是text.xsl的字符串内容。然后在样式表中,您可以使用document()函数。