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はドキュメントではなく文字列として入力されるため、スタイルシートは要求どおりに動作します。テキスト文字列を解析してXDMドキュメントにする標準のXSLT関数はないと思います。

目的を達成するには、text.xslの文字列コンテンツではなく、パラメーター値としてファイル名を渡す必要があります。次に、スタイルシート内で、document()関数を使用できます。

于 2012-07-18T11:52:10.607 に答える