Ant XSLT 2.0 с saxon9 Загрузка таблицы стилей очень и очень медленная - PullRequest
2 голосов
/ 01 апреля 2011

Я только недавно работал с xslt2.0 через ant. У меня есть файл сборки, который выглядит так:

<project name="TranformXml" default="TransformFile">
    <target name="TransformFile">
        <xslt in="input.xml"
            out="student.html"
            style="transform.xsl"
            processor="trax" classpath="./lib/saxon/saxon9he.jar">

            <factory name="net.sf.saxon.TransformerFactoryImpl"/>

        </xslt>  
    </target>
</project>

входной документ input.xml:

<student_list>
    <student>
        <name>George Washington</name>
        <major>Politics</major>
        <phone>312-123-4567</phone>
        <email>gw@example.edu</email>
    </student>

</student_list>

и таблица стилей transform.xsl

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output method="html"/>

    <xsl:template match="/">
    <html>
        <head>
            <title>Student Directory</title>
        </head>
        <body>
        <xsl:apply-templates />
        </body>

    </html>
    </xsl:template>


</xsl:stylesheet>

и вывод моей сборки муравья:

ant -f build.xml 
Buildfile: /home/casey/Development/ant-tests/xslt-transform/build.xml

TransformFile:
     [xslt] Processing /home/casey/Development/ant-tests/xslt-transform/input.xml to /home/casey/Development/ant-tests/xslt-transform/student.html
     [xslt] Loading stylesheet /home/casey/Development/ant-tests/xslt-transform/transform.xsl

BUILD SUCCESSFUL
Total time: 9 seconds

Мне трудно поверить, что на все это нужно 9 секунд. В процессе производства таблицы стилей будут намного сложнее, а ввод - намного больше. Реально я бы хотел, чтобы весь процесс преобразования был менее нескольких секунд.

Есть идеи?

Спасибо

Casey

Ответы [ 2 ]

2 голосов
/ 02 апреля 2011

Вы делаете это: Как запустить XSLT 2.0 с помощью ant?

Кажется, проблема в загрузке пути к классам. Я запустил ant в JDB, и он потратил все дополнительное время на чтение zip-файлов org.apache.tools.ant.AntClassLoader.loadClass.

Я пробовал это перед запуском, и все прошло намного быстрее:

ant -lib /path/to/saxon/saxon9.jar

1 голос
/ 04 августа 2013

То, что я обнаружил, убивало мою производительность, загружало определения DTD через Интернет.

Я создал пустой файл .dtd и отсылал к нему публичные идентификаторы DTD, используя ant xmlcatalog, например так (внутри моегозадача):

<xmlcatalog>
  <dtd publicid="-//W3C//DTD XHTML 1.0 Transitional//EN" location="empty.dtd"/>
<xmlcatalog>

Время сборки сократилось с 22 минут (много документов) до 3 секунд!

...