1
我有一個使用PHP 5的XSLTProcessor來處理下面的XML文檔的問題。這個問題不是由XSLT處理的輸出,而是html輸出的元素得到了xmlns:php =「http://php.net/xsl」添加到他們。下面是一個例子。PHP XSL輸出問題
的PHP:
$xmldoc = DOMDocument::load($xml);
$xsldoc = DOMDocument::load($xslt);
$proc = new XSLTProcessor();
$proc->registerPHPFunctions();
$proc->importStyleSheet($xsldoc);
echo $proc->transformToXML($xmldoc);
的XML:
<allusers>
<user>
<uid>bob</uid>
</user>
<user>
<uid>tom</uid>
</user>
</allusers>
的XSLT:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:php="http://php.net/xsl"
xsl:extension-element-prefixes="php">
<xsl:output method="html" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="allusers">
<h2>Users</h2>
<table>
<xsl:for-each select="user">
<tr><td>
<xsl:value-of select="php:function ('MyClass::firstLetter',string(.))"/>
</td></tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
和奇數輸出(注意的xmlns:PHP =「HTTP:/ /php.net/xsl「):
<!DOCTYPE html>
<html>
<head></head>
<body>
<h2 xmlns:php="http://php.net/xsl">Users</h2>
<table xmlns:php="http://php.net/xsl">
<tr><td>b</td></tr>
<tr><td>t</td></tr>
</table>
</body>
</html>
任何想法?我確定我有我需要的所有進口產品,並正確使用它們,但如果有人能告訴我什麼或我要去哪裏出錯,那就太好了。提前致謝。
謝謝soooo,它實際上是導致問題的'extension-element-prefixes'元素。這固定了一切。 – ars265
@ ars265:不客氣。 –