17 #include <libxml/xmlmemory.h>
18 #include <libxml/debugXML.h>
19 #include <libxml/HTMLtree.h>
20 #include <libxml/xmlIO.h>
21 #include <libxml/xinclude.h>
22 #include <libxml/catalog.h>
23 #include <libxslt/xslt.h>
24 #include <libxslt/xsltInternals.h>
25 #include <libxslt/transform.h>
26 #include <libxslt/xsltutils.h>
28 #include <ktemporaryfile.h>
29 #include <kstandarddirs.h>
32 #include <QTextOStream>
42 :
QThread(parent), m_docbookUrl(docBookUrl)
49 xsltStylesheetPtr cur = NULL;
52 const char *params[16 + 1];
54 params[nbparams] = NULL;
58 QString xsltFileName(KGlobal::dirs()->findResource(
"appdata",
"docbook2xhtml.xsl"));
59 uDebug() <<
"XSLT file is'"<<xsltFileName<<
"'";
60 QFile xsltFile(xsltFileName);
61 xsltFile.open(QIODevice::ReadOnly);
62 QString xslt = xsltFile.readAll();
63 uDebug() <<
"XSLT is'"<<xslt<<
"'";
66 QString localXsl = KGlobal::dirs()->findResource(
"data",
"ksgmltools2/docbook/xsl/html/docbook.xsl");
67 uDebug() <<
"Local xsl is'"<<localXsl<<
"'";
68 if (!localXsl.isEmpty())
70 localXsl = QString(
"href=\"file://") + localXsl +
"\"";
71 xslt.replace(QRegExp(
"href=\"http://[^\"]*\""), localXsl);
73 KTemporaryFile tmpXsl;
74 tmpXsl.setAutoRemove(
false);
76 QTextStream str (&tmpXsl);
80 xmlSubstituteEntitiesDefault(1);
82 uDebug() <<
"Parsing stylesheet " << tmpXsl.fileName();
83 cur = xsltParseStylesheetFile((
const xmlChar *)tmpXsl.fileName().toLatin1().constData());
84 uDebug() <<
"Parsing file " << m_docbookUrl.path();
85 doc = xmlParseFile((
const char*)(m_docbookUrl.path().toUtf8()));
86 uDebug() <<
"Applying stylesheet ";
87 res = xsltApplyStylesheet(cur, doc, params);
89 KTemporaryFile tmpXhtml;
90 tmpXhtml.setAutoRemove(
false);
93 uDebug() <<
"Writing HTML result to temp file: " << tmpXhtml.fileName();
94 xsltSaveResultToFd(tmpXhtml.handle(), res, cur);
96 xsltFreeStylesheet(cur);
100 xsltCleanupGlobals();
106 #include "docbook2xhtmlgeneratorjob.moc"
void xhtmlGenerated(const QString &)
void writeToStatusBar(const QString &text)
Write text to the status bar.
static UMLApp * app()
Get the last created instance of this class.
UMLDoc * document() const
Returns a pointer to the current document connected to the KMainWindow instance.
int xmlLoadExtDtdDefaultValue
Docbook2XhtmlGeneratorJob(KUrl &docBookUrl, QObject *parent)
Constructor.
UMLDoc provides a document object for a document-view model.