Задача Ant XSLT для построения на множественных зависимостях - PullRequest
2 голосов
/ 14 мая 2011

У меня есть таблица стилей XSL, которая объединяет внешние документы, таким образом
<xsl:copy-of select="document('snippets.xml')/snippets/xxxx/form"/>

Мне бы хотелось, чтобы задача сборки XSLT Ant перестраивалась, если файл или какая-либо из его зависимостей изменились.

Текущая задача Ant выглядит следующим образом
<xslt basedir="xxxx/pages/${doc.locale}"<br> destdir="xxxx/dir/${doc.locale}"<br> includes="*.xml"<br> excludes="snippets.xml"<br> style="build/xxxx/${doc.locale}/myStyle.xsl"><br> <param name="lang" expression="${doc.locale}"/><br> <xmlcatalog refid="docDTDs"/>

В основном, я бы хотел перестроить, если документ snippets.xml был изменен.

Ответы [ 2 ]

2 голосов
/ 16 мая 2011

Ant имеет задачу uptodate, чтобы проверить, актуальна ли цель, файл по времени, из набора исходных файлов.Я не совсем понимаю, какова ваша зависимость, поскольку задача XSLT может создать несколько файлов (в результате чего будет несколько целей) или если она создаст один файл.Один из ваших комментариев подразумевает один файл.

Ниже приведен один из способов использования uptodate.Вы в основном используете задачу, чтобы установить свойство, которое затем может быть помещено в атрибут unless цели:

<property name="file.that.depends.on.snippets"
          location="some/path"/>
<property name="snippets.file"
          location="xxxx/pages/${doc.locale}/snippets.xml"/>

<target name="process-snippets"
        unless="snippets.uptodate"
        depends="snippets-uptodate-check">
  <xslt basedir="xxxx/pages/${doc.locale}"
        destdir="xxxx/dir/${doc.locale}"
        includes="*.xml"
        excludes="snippets.xml"
        style="build/xxxx/${doc.locale}/myStyle.xsl">
    <param name="lang" expression="${doc.locale}"/>
    <xmlcatalog refid="docDTDs"/>
  </xslt>
</target>

<target name="snippets-uptodate-check">
  <uptodate property="snippets.uptodate"
            targetfile="$file.that.depends.on.snippets">
    <srcfiles dir="xxxx/pages/${doc.locale}"
              includes="*.xml"
              excludes="snippets.xml"/>

  </uptodate>
</target>
0 голосов
/ 15 мая 2011

Задача XSLT должна сделать это за вас по умолчанию. Имеет необязательный атрибут «force»

Воссоздать целевые файлы, даже если они новее, чем их соответствующие исходные файлы или таблица стилей

, что по умолчанию ложно. Поэтому по умолчанию, если вы не переопределите атрибут «force», зависимости проверяются задачей XSLT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...