Docbook,Images,ANT

时间:2009-10-16 13:51:40

标签: xml ant xerces docbook

我正在尝试将DocBook XML - 文件通过XSLT转换为HTML。 XML-File包含一个图像,这就是我收到以下错误的原因:

build-html:
     [xslt] Transforming into C:\dev\DocBook\DocBookmitXML\output
     [xslt] Processing C:\dev\DocBook\DocBookmitXML\src\BurndownChart.jpg to C:\dev\DocBook\DocBookmitXML\output\BurndownChart.html
     [xslt] Loading stylesheet C:\dev\DocBook\DocBookmitXML\docbook-xsl-1.75.1\xhtml\docbook.xsl
     [xslt] : Fatal Error! org.apache.xerces.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence. Cause: org.apache.xerces.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence.
     [xslt] Failed to process null

DocBook-File:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article SYSTEM "../docbook-xml-4/docbookx.dtd" >
<article>
    <articleinfo>
        <title>Freitags um 11.30 Uhr</title>
        <author>
            <firstname>me, myself </firstname>
            <surname>and I</surname>
        </author>
    </articleinfo>
    <sect1 label="1.0"> 
        <title>An introduction to DocBook</title>
        <para>this is text</para>
    </sect1>
    <sect1 label="2.0">
        <title>Core Docbook</title>
        <para>
            <table frame='all'>
                <title>Testtabelle</title>
                <tgroup cols="3">
                    <thead>
                        <row>
                            <entry>Monat</entry>
                            <entry>Woche</entry>
                            <entry>Besucher</entry>
                        </row>
                    </thead>
                    <tbody>
                        <row>
                            <entry>Mai</entry>
                            <entry>1</entry>
                            <entry>4711</entry>
                        </row>
                        <row>
                            <entry>Mai</entry>
                            <entry>2</entry>
                            <entry>4712</entry>
                        </row>
                        <row>
                            <entry>Mai</entry>
                            <entry>3</entry>
                            <entry>4713</entry>
                        </row>
                        <row>
                            <entry>Gesamt</entry>
                            <entry></entry>
                            <entry>47110</entry>
                        </row>
                    </tbody>
                </tgroup>
            </table>
        now to the difficult stuff... 
        </para>
    </sect1>
    <sect1 label="2.0">
        <title>A Picture</title> 

            <mediaobject>
                <imageobject>
                    <imagedata format="JPEG" fileref="BurndownChart.jpeg" />
                </imageobject>
            </mediaobject>

    </sect1>
</article>

构建文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="docbook-src" default="build-html">
    <property name="docbook.xsl.dir" value="./docbook-xsl-1.75.1/xhtml" />
    <property name="doc.dir" value="output" />
    <property name="src" value="src" />
    <property name="html.stylesheet" value="${docbook.xsl.dir}/docbook.xsl" />
    <property name="xalan.lib.dir" value="./xalan-j_2_7_1"/>

    <path id="xalan.classpath">
        <fileset dir="${xalan.lib.dir}" id="xalan.fileset">
            <include name="xalan.jar" />
            <include name="xercesImpl.jar" />
        </fileset>
    </path>

    <target name="clean" description="Cleans up the generated files">
        <delete dir="${doc.dir}" />
    </target>

    <target name="depends">
        <mkdir dir="${doc.dir}" />
    </target>

    <target name="build-html" depends="clean,depends" description="Generates HTML files from DocBook">
    <xslt basedir="src" destdir="${doc.dir}" style="${html.stylesheet}" extension=".html">
            <classpath refid="xalan.classpath" />
        </xslt>
    </target>
</project>

我应该在哪里查找错误?

1 个答案:

答案 0 :(得分:1)

如果仔细查看错误消息,您会发现它实际上正在尝试处理JPEG文件,这当然会失败。默认情况下,以这种方式调用时,xslt任务将尝试转换它在指定目录中找到的所有文件。您可以添加添加includes="*.xml"之类的属性,告诉它只处理* .xml文件。