xslt-1.0

时间:2016-04-27 08:50:33

标签: php xslt-1.0

问题是,是否有其他(更好)的方式来实现我所做的事情。

我正在尝试的是,使XSLT将文件写入运行XSLT的服务器上。

  

注意:它必须是XSLT-1.0,因为它是由PHP脚本调用的。

     

PHP脚本在本地服务器上运行,并从java程序中调用

XSLT生成一条发送回java程序的消息,所以我不能使用<xsl:output method="xml"/>

我的XSLT中的输入是一个XML,其中还有另一个XML,它是base64编码的。

我解决这个问题的方法是,我正在使用PHP回调

XLST

<!--base64 decode the file so it can be written onto the server-->
<xsl:variable name="base64decode">
   <xsl:if test="not(contains($login ,'Invalid')))">
       <xsl:value-of select="php:function('base64_decode', string($product))"/>
   </xsl:if>
</xsl:variable>

<!--php call-back to write the file onto the server-->
<xsl:variable name="fileputcontent">
    <xsl:if test="$base64decode != ''">
        <xsl:value-of select="php:function('postProduct::wirteFileOnServer', string($base64decode))"/>
    </xsl:if>
</xsl:variable>

PHP

class postProduct {

    public static function writeFileOnServer($file, $path){
        file_put_contents($path, $file);
        $ret = new DOMDocument('1.1', 'UTF-8');

        if(not(is_file($path))){
            $res = '<error>';
            $res.= '<msg>An Error occurred</msg>';
            $res.= '</error>';
        }
        $res = '<data>'.$res.'</data>';
        $res = $ret->loadXML($res, LIBXML_NOERROR | LIBXML_NOWARNING);
        if ($res !== TRUE) {
            $ret->appendChild($err);
        }
        return $ret;
    }

}

0 个答案:

没有答案