Как указать XML-документы для преобразования с помощью сбора ресурсов в ant?

Я пытаюсь использовать ant для использования XSLT для предварительной обработки трех конкретных таблиц стилей в моем проекте. В документации Ant для задачи xslt говорится, что он должен иметь возможность принимать любые сбор ресурсов. В частности, говорится:

Используйте коллекции ресурсов, чтобы указать ресурсы, к которым должна применяться таблица стилей. Используйте вложенный преобразователь и атрибут destdir задачи, чтобы указать выходные файлы.

Поэтому я попытался указать эти таблицы стилей с помощью набора файлов и использовать набор файлов в качестве вложенного элемента в задаче xslt, но пока это не сработало. Вместо этого он, по-видимому, проигнорирует указанный набор файлов и просканирует весь проект на наличие файлов, оканчивающихся на .xsl, применит к ним таблицу стилей и назовет вывод в соответствии с логикой, указанной в преобразователе.

<fileset id="stylesheets-to-preprocess" dir="${basedir}">
    <filename name="src/xslt/backends/js/StatePatternStatechartGenerator.xsl"/>
    <filename name="src/xslt/backends/js/StateTableStatechartGenerator.xsl"/>
    <filename name="src/xslt/backends/js/SwitchyardStatechartGenerator.xsl"/>
</fileset>

<!-- ... -->

<target name="preprocess-stylesheets" depends="init">

    <xslt
        classpathref="xslt-processor-classpath"
        style="src/xslt/util/preprocess_import.xsl"
        destdir="build"
        scanincludeddirectories="false">

        <fileset refid="stylesheets-to-preprocess"/>
        <mapper>
            <chainedmapper>
                <flattenmapper/>
                <globmapper from="*.xsl" to="*_combined.xsl"/>
            </chainedmapper>
        </mapper>
    </xslt>

</target>

Я бы хотел ограничить его так, чтобы обрабатывались только те файлы, которые указаны в наборе файлов.

Удаление преобразователя так, чтобы набор файлов был единственным вложенным элементом, приведет к тому, что муравей попытается применить преобразование к каждому файлу, даже без расширений xsl, что неизбежно приведет к сбою при попытке преобразовать документ, отличный от xml.

Я использую муравей 1.7.1. Любое руководство будет оценено.


person jbeard4    schedule 21.08.2010    source источник


Ответы (1)


arrow_upward
2
arrow_downward

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

Я бы также рекомендовал использовать параметр «включить» в наборе файлов, что намного проще и позволяет избежать необходимости в сложном элементе сопоставления (вы должны указать расширение сгенерированных файлов, иначе по умолчанию будет .html)

<target name="preprocess-stylesheets" depends="init">

    <xslt
        classpathref="xslt-processor-classpath"
        style="src/xslt/util/preprocess_import.xsl"
        destdir="build"
        extension=".xsl"
        useImplicitFileset="false"
        >

        <fileset dir="src/xslt/backends">
            <include name="StatePatternStatechartGenerator.xsl"/>
            <include name="StateTableStatechartGenerator.xsl"/>
            <include name="SwitchyardStatechartGenerator.xsl"/>
        </fileset>
    </xslt>

</target>
person Mark O'Connor    schedule 21.08.2010