2017-09-26 46 views
0

無法使用樣式表進行轉換,該樣式表具有xsl:text節點內的實體。如果我將&some;放在xsl:text節點之外,則沒有錯誤和空輸出。PHP XSLTProcessor編譯錯誤

test.php的

$xml = new DOMDocument; 
$xml->load('test.xml'); 

$xsl = new DOMDocument; 
$xsl->load('test.xsl'); 

$proc = new XSLTProcessor; 
$proc->importStyleSheet($xsl); 

echo $proc->transformToXML($xml); 

的test.xml

<?xml version="1.0" ?> 
<test>123</test> 

test.xsl

<?xml version="1.0" encoding="utf-8"?> 

<!DOCTYPE xsl:stylesheet [ <!ENTITY some "22323"> ]> 
<xsl:stylesheet version="1.0" 
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 


    <xsl:output method="text" /> 

    <xsl:template match="/"> 
     <xsl:text>&some;</xsl:text> 
    </xsl:template> 

</xsl:stylesheet> 

遇到錯誤:

Warning: XSLTProcessor::importStylesheet(): xsltParseTemplateContent: xslt:text content problem in /Users/stexe/Repos/umi.cms.2/test.php on line 13 

Call Stack: 
    0.0003  226288 1. {main}() /Users/stexe/Repos/umi.cms.2/test.php:0 
    0.0009  228424 2. XSLTProcessor->importStylesheet() /Users/stexe/Repos/umi.cms.2/test.php:13 

OS X,PHP 5.4.45(自制)

PHP信息

libxml2 Version => 2.9.5 
ibxslt Version => 1.1.29 
libxslt compiled against libxml Version => 2.9.4 
+0

PHP和XSLT標記在同一個問題?仍然是我的心...無論如何,&符號&是一個特殊的XML實體,它的符號不能獨立。注意XML實體與HTML實體不同。 – Parfait

回答

1

嘗試load調用之前設置

$xsl = new DOMDocument; 
$xsl->substituteEntities = TRUE;