0

我的输入 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 标签的输出。请找出我哪里出错了。

4

1 回答 1

0

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

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

于 2012-07-18T11:52:10.607 回答