Frage

Ich versuche, die XSLTProcessor Klasse in PHP zu verwenden, um zu generieren xhtml aus einer .dita Datei auf der Grundlage der DITA Open Toolkit 's xSLT-Dateien.

Die XSLTProcessor arbeiten mit einfachen XML und XSLT-Dateien (zB mit den Proben auf wikipedia), aber es funktioniert nicht mit dem Open Toolkit XSLs.

Der intresting Teil ist, dass alles gut funktioniert, wenn ich xsltproc Befehl von bash auf demselben Computer auf die gleichen Dateien (I keine Schalter verwendet wird).

So, hier ist mein Code:

<?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 );

Und statt einer gültigen XHTML-Datei erhalte ich eine Ausgabe wie folgt:

<?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> (...)

Es ist nur der erste Teil der Ausgabe, aber ich wollte nicht den ganzen Text hier kopieren.

Sowohl die XSL-Datei und DITA-Konzept-Datei ist aus dem DITA Open Toolkit.

Alle Ideen, was falsch ist?

War es hilfreich?

Lösung

Schließlich ist mein Problem gelöst. Die tools.xml hatte eine Außen dtd Referenz

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

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

Weicht nicht durch die DOMDocument standardmäßig geladen wurde, und dass alle Probleme verursacht. Wenn Sie das gleiche Problem haben, haben Sie die LIBXML_DTDATTR Option verwenden, wie folgt aus:

$f = 'DITA-OT1.5.1/samples/concepts/tools.xml';
$XML = new DOMDocument();
$XML->load( $f,LIBXML_DTDATTR);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top