file_put_content в 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;
}

}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]