Как указать 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)


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

Я бы также рекомендовал использовать параметр «включить» в наборе файлов, что намного проще и позволяет избежать необходимости в сложном элементе сопоставления (вы должны указать расширение сгенерированных файлов, иначе по умолчанию будет .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