簡體   English   中英

PHP的XSLTProcessor問題

[英]Problem with php's XSLTProcessor

我正在嘗試使用php中的XSLTProcessor類從基於DITA Open Toolkit的xslt文件的.dita文件生成xhtml。

XSLTProcessor使用簡單的xml和xslt文件(例如,使用Wikipedia上的示例 ),但是使用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。

任何想法有什么問題嗎?

終於,我的問題解決了。 tools.xml具有外部dtd參考

<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"

 "../../dtd/technicalContent/dtd/concept.dtd">

默認情況下,DOMDocument未加載wich,這導致了所有問題。 如果您有相同的問題,則必須使用LIBXML_DTDATTR選項,如下所示:

$f = 'DITA-OT1.5.1/samples/concepts/tools.xml';
$XML = new DOMDocument();
$XML->load( $f,LIBXML_DTDATTR);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM