1
我试图在php中使用XSLTProcessor class来根据DITA Open Toolkit的xslt文件从.dita文件生成xhtml。php的XSLTProcessor问题
XSLTProcessor使用简单的xml和xslt文件(例如在维基百科上使用samples),但是使用Open Toolkit的xsls失败。
如果我在相同文件(我没有使用开关)的同一台计算机上使用bash中的xsltproc命令,那么一切运行良好。
所以,这里是我的代码:
<?php
$sXML = file_get_contents('concepts/tools.xml');
# LOAD XML FILE
$XML = new DOMDocument();
$XML->loadXML($sXML);
# START XSLT
$xslt = new XSLTProcessor();
$XSL = new DOMDocument();
$XSL->load('xsl/dita2xhtml.xsl');
$xslt->importStylesheet($XSL);
#PRINT
print $xslt->transformToXML($XML);
而不是一个有效的XHTML文件我得到这样的输出:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE span PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<span style="background-color: yellow;"><span style="font-weight: bold">[/concept
{""}) </span>
<span style="background-color: yellow;"><span style="font-weight: bold">[/concept/title
{""}) </span>Tools<span style="font-weight: bold"> (title]</span></span>
<span style="background-color: yellow;"><span style="font-weight: bold">[/concept/shortdesc
{""}) </span>Invest in a good set of tools for doing all kinds of tasks around the house.<span style="font-weight: bold"> (shortdesc]</span></span>
<span style="background-color: yellow;"><span style="font-weight: bold">[/concept/conbody
{""}) </span><span style="background-color: yellow;"><span style="font-weight: bold">[/concept/conbody/p
{""}) </span>Useful tools include the following items:<span style="font-weight: bold"> (p]</span></span> (...)
这只是输出的第一部分,但我没有我不想在这里复制整个文本。
xsl文件和dita概念文件都来自DITA Open Toolkit。
任何想法有什么不对?
我想你应该提供一个降低输入样本引起为了测试问题,或者至少向全情投入的链接。 – 2010-10-06 18:34:12
@Ajjandro:dita文件非常短,但是xsl文件引用了很多其他文件,它们非常大。在这里(http://sourceforge.net/projects/dita-ot/),您可以下载DITA Open Toolkit(您不必安装或运行它),其中包含所有文件。我的测试文件是:samples/concepts/tools.xml和xsl/dita2xhtml.xsl。我可以稍后将它们上载到某个服务器上的zip文件中,如果它更好。 – mimrock 2010-10-06 18:40:41
我得到了与MSXSL相同的结果。输出假设是什么? – 2010-10-06 20:05:50