Предупреждение PHP в XSLTProcessor::importStylesheet(), несмотря на почти пустую таблицу стилей XSL

Я пытаюсь использовать следующий код

# LOAD XML FILE
$XML = new DOMDocument();
$XML->loadXML( $exporteddatatransformed );

# START XSLT
$xslt = new XSLTProcessor();
$XSL = new DOMDocument();
$XSL->load( 'xsl/'.$xsltemplatefileid.'.xsl', LIBXML_NOCDATA);
$xslt->importStylesheet( $XSL );            <-- LINE 549
#PRINT
print $xslt->transformToXML( $XML );

Но выдает следующую ошибку.

Предупреждение: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: ошибка компиляции: файл /home/..../xsl/1234567890.xsl строка 2 таблицы стилей элемента в /home/...../myfile.php в строке 549

Лист XSL выглядит следующим образом:

<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
</xsl:template>
</xsl:stylesheet> 

В настоящее время я урезал его до этого «ничего», чтобы диагностировать, где возникает проблема, но он все еще остается в этой «базовой» версии XSL!


person Steve    schedule 05.09.2009    source источник


Ответы (1)


Кажется, он загружается нормально, если вы замените строку xsl:stylesheet на эту:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

Это означает наличие этого файла xsl:

<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/">
    </xsl:template>
</xsl:stylesheet>

Вместо твоего.

Это работает, когда вы пытаетесь преобразовать файл?


Примечание. Я нечасто использую XSL, поэтому не знаю, почему то, что вы предложили, не сработало; но "http://www.w3.org/1999/XSL/Transform " используется как в статье Википедии о преобразованиях XSL, так и в пример файла .xsl, используемый в руководстве по PHP...

Итак, я предполагаю, что это должно помочь решить вашу проблему, даже если я действительно не знаю, «почему» ^^

person Pascal MARTIN    schedule 05.09.2009