XSLT

style という名前は、同じタスクの非推奨の名前です。

説明

XSLT を介してドキュメントのセットを処理します。

これは、XML ベースのドキュメントのビューを構築したり、コードを生成したりするのに役立ちます。

処理されるファイルのセットを絞り込むことができます。これは、includesincludesfileexcludesexcludesfile、および defaultexcludes 属性を使用して行うことができます。includes または includesfile 属性を使用して、パターンを使用して含めるファイルを指定します。exclude または excludesfile 属性は、除外するファイルを指定するために使用されます。これもパターンを使用して行われます。最後に、defaultexcludes 属性を使用して、デフォルトの除外を使用するかどうかを指定できます。ファイルの包含/除外の仕組みとパターンの書き方については、ディレクトリベースのタスクのセクションを参照してください。

このタスクは暗黙的な FileSet を形成し、<fileset> のすべての属性(dirbasedir になります)と、ネストされた <include><exclude>、および <patternset> 要素をサポートします。

注意: 他の同様のタスクとは異なり、このタスクは、暗黙的なファイルセットの包含/除外パターンに一致したディレクトリを特別な方法で扱います。それらに含まれるすべてのファイルにもスタイルシートを適用します。デフォルトの includes パターンは ** であるため、これはすべてのファイルにスタイルシートを適用することを意味します。excludes パターンを指定した場合でも、親ディレクトリが一致しているため、これらのパターンに一致するファイルで機能する場合があります。この動作が望ましくない場合は、scanincludedirectories 属性を false に設定します。

Ant 1.7以降、このタスクは、このタスクによって形成される暗黙的なファイルセットに加えて(または代わりに、useImplicitFileset 属性に応じて)、ネストされた リソースコレクション をサポートします。

このタスクは、<xsl:param> 宣言に値を渡すために使用されるネストされた <param> 要素の使用をサポートしています。

このタスクは、エンティティとURIの解決を実行するために使用されるネストされた xmlcatalog 要素の使用をサポートしています。

XSLT拡張関数に関する注意: JavaクラスライブラリのデフォルトのTrAX実装を使用し、SecurityManager がアクティブな場合(たとえば、IDE内から実行する場合)、XSLT拡張関数は使用できません。Java 7以降では「セキュア処理」がアクティブになっているためです。Antには、Java 7および8でXSLT拡張機能を使用できるようにする特別な「ハック」が含まれていますが、このハックはJava 9では失敗します。Javaクラスライブラリ自体によって提供されるリダイレクト拡張機能などの拡張機能を使用する場合は、Java 9以降で機能 http://www.oracle.com/xml/jaxp/properties/enableExtensionFunctions を有効にすることで、それらを許可できます。Java自体によって提供されていない拡張関数を使用する必要がある場合は、属性 jdk.xml.transform.extensionClassLoader をクラスローダー(Antパスのような構造への参照)に設定できます。

パラメータ

属性 説明 必須
basedir ソースXMLファイルを見つける場所。 いいえ。デフォルトはプロジェクトの basedir です。
destdir 結果を格納するディレクトリ。 はい。inout が指定されていない場合。
extension ターゲットに使用されるファイル拡張子。 いいえ。デフォルトは .html です。ネストされた <mapper> または inout の両方が指定されている場合は無視されます。
style 使用するスタイルシートの名前。プロジェクトの basedir からの相対パスまたは絶対パスとして指定します。
または、Antがリソースとして解釈できるネストされた要素を使用して、スタイルシートの場所を示すことができます。
非推奨のバリエーション:
スタイルシートが見つからず、タスクの basedir 属性を指定した場合、Antは style 属性がタスクの basedir に対して相対的であると想定します。
いいえ。スタイルシートの場所がネストされた <style> 要素を使用して指定されている場合。
classpath XSLTプロセッサを検索するときに使用するクラスパス。 いいえ
classpathref 使用するクラスパス。他の場所で定義されたパスへの参照として指定します。 いいえ
force ターゲットファイルが対応するソースファイルまたはスタイルシートよりも新しい場合でも、ターゲットファイルを再作成します。 いいえ。デフォルトは false です。
processor 使用するXSLTプロセッサの名前。許可される値は次のとおりです。
  • Trax準拠のプロセッサ(Xalan 2やSaxonなどのJAXPインターフェース実装)の場合はtrax
Xalan 1のサポートは、Ant 1.7以降削除されました。
いいえ。デフォルトは trax です。
includes 含める必要があるファイルのパターンのカンマまたはスペース区切りのリスト。 いいえ。デフォルトはすべて(**)です。
includesfile ファイルの名前。このファイルの各行は、包含パターンと見なされます。 いいえ
excludes 除外する必要があるファイルのパターンのカンマまたはスペース区切りのリスト。 いいえ。defaultexcludesno の場合は、デフォルトの除外またはなしにデフォルト設定されます。
excludesfile ファイルの名前。このファイルの各行は、除外パターンと見なされます。 いいえ
defaultexcludes デフォルトの除外を使用するかどうかを示します(yes|no)。 いいえ。デフォルトは yes です。
in スタイルを設定する単一のXMLドキュメントを指定します。out 属性と一緒に使用する必要があります。 いいえ
out in 属性からのスタイル設定された結果の出力名を指定します。 いいえ
scanincludeddirectories includes/excludes パターンに一致するディレクトリがある場合は、これらのディレクトリ内のすべてのファイルを変換してみます。いいえ。デフォルトは true です。
reloadstylesheet スタイルシートトランスフォーマーがすべての変換操作に対して新しく作成されるかどうかを制御します。これを true に設定すると、パフォーマンスが低下する可能性がありますが、特定のXalanバージョンのバグを回避できる場合があります。Ant 1.5.2以降 いいえ。デフォルトは false です。
useImplicitFileset このタスクによって形成される暗黙的なファイルセットを使用するかどうか。これを false に設定した場合は、ネストされたリソースコレクション、または in 属性を使用する必要があります。その場合、この属性はとにかく影響しません。Ant 1.7以降 いいえ。デフォルトは true です。
filenameparameter 現在処理されているファイルの名前にアクセスするためのXSLパラメーターを指定します。設定されていない場合、ファイル名は変換に渡されません。Ant 1.7以降 いいえ
filedirparameter 現在処理されているファイルのディレクトリにアクセスするためのXSLパラメーターを指定します。現在のディレクトリにあるファイルの場合、. の値が変換に渡されます。設定されていない場合、ディレクトリは変換に渡されません。Ant 1.7以降 いいえ
suppressWarnings プロセッサの警告を抑制するかどうか。このオプションはプロセッサによるサポートが必要です。AntにバンドルされているTrAXプロセッサでサポートされています。Ant 1.8.0以降 いいえ。デフォルトは false です。
failOnError エラーが発生した場合にビルドを失敗させるかどうか。この属性が true であっても、failOnTransformationErrorfalse に設定することで、変換エラーを抑制できることに注意してください。Ant 1.8.0以降 いいえ。デフォルトは true です。
failOnTransformationError ドキュメントの変換中にエラーが発生した場合にビルドを失敗させるかどうか。 failOnErrorfalse の場合、この属性は効果がないことに注意してください。Ant 1.8.0以降 いいえ。デフォルトは true です。
failOnNoResources ネストされたリソースコレクションが空の場合にビルドを失敗させるかどうか。 failOnErrorfalse の場合、この属性は効果がないことに注意してください。Ant 1.8.0以降 いいえ。デフォルトは true です。

ネストされた要素として指定されたパラメータ

任意の リソースコレクション

Ant 1.7以降

リソースコレクションを使用して、スタイルシートを適用するリソースを指定します。ネストされたマッパーとタスクの destdir 属性を使用して、出力ファイルを指定します。

classpath

プロセッサを読み込むクラスパスは、ネストされた <classpath>、つまりパスのような構造を介して指定することもできます。

xmlcatalog

xmlcatalog 要素は、エンティティとURIの解決を実行するために使用されます。

param

Param は、XSLスタイルシートにパラメーターを渡すために使用されます。

パラメータ
属性 説明 必須
name XSLパラメータの名前 はい
expression パラメータに配置される値、またはXPath式(type によって異なります)。 はい
type パラメータのデータ型。可能な値は次のとおりです。
  • STRING
  • BOOLEAN
  • INT
  • LONG
  • DOUBLE
  • XPATH_STRING
  • XPATH_BOOLEAN
  • XPATH_NUMBER
  • XPATH_NODE
  • XPATH_NODESET
Ant 1.9.3以降
いいえ。デフォルトは STRING です。
if このプロパティが設定されている場合にのみ、パラメータが渡されます。 いいえ
unless このプロパティが設定されている場合、パラメータは渡されません。 いいえ

XPATH_* タイプは、expression がプリミティブ型の値だけでなくXPath式でもあることを示しています。この式は空のXMLドキュメントで評価され、結果は指定されたタイプの パラメータとしてXSLTトランスフォーマーに渡されます。これらの式では、宣言されたAntプロパティをXPath変数(例:$someProperty)として使用できます。そのため、標準のXPath関数と演算子を使用して何かを計算できます。

$someProperty の代わりに ${someProperty} を記述すると、XPath式を評価する前に、値はAntによって単純に置き換えられます(この置換はプリミティブ型でも機能します)。

outputproperty (trax プロセッサのみ)

XSLT仕様で指定されているように、結果ツリーを出力する方法を指定するために使用されます。

パラメータ
属性 説明 必須
name プロパティの名前 はい
value プロパティの値 はい

factory (trax プロセッサのみ)

Ant 1.9.8以降

ファクトリ設定を指定するために使用されます。

パラメータ
属性 説明 必須
name 使用するトランスフォーマーファクトリの完全修飾クラス名。たとえば、org.apache.xalan.processor.TransformerFactoryImpl または org.apache.xalan.xsltc.trax.TransformerFactoryImpl または net.sf.saxon.TransformerFactoryImpl などです。 いいえ。デフォルトはJAXPルックアップメカニズムです。
ネストされた要素として指定されたパラメータ
attribute

プロセッサファクトリの設定を指定するために使用されます。属性の名前と値は完全にプロセッサ固有であるため、それらを理解するには実装を認識している必要があります。プロセッサのドキュメントを読んでください。たとえば、Xalan 2.xでは

Saxon 7.xでは

パラメータ
属性 説明 必須
name 属性の名前 はい
value 属性の値。 これらのうち正確に1つ
valueref 属性の値は、指定されたIDを持つプロジェクト参照の値です。Ant 1.9.8以降
classloaderforpath 属性の値は、指定された id を持つプロジェクト参照であるパスによって指定されたクラスパスを使用するクラスローダーです。Ant 1.9.8以降
<path id="extension-path">
  ...
</path>

<xslt ...>
  <factory>
    <attribute name="jdk.xml.transform.extensionClassLoader"
               classloaderforpath="extension-path"/>
  </factory>
</xslt ...>

拡張機能を読み込むときに使用するクラスローダーを、IDが extension-pathpath を使用したクラスローダーに設定します。

feature

プロセッサファクトリーの設定を指定するために使用されます。機能名はほとんどのプロセッサ固有であるため、それらを理解するには実装を認識している必要があります。使用するプロセッサのドキュメントを読んでください。すべての実装でサポートが必須な唯一の機能はhttp://javax.xml.XMLConstants/feature/secure-processingです。

パラメータ
属性 説明 必須
name 機能名 はい
value 機能の値。ブール値(つまり、許可される値はtruefalseyesnoonoff)です。 いいえ; デフォルトはfalseです。

mapper

Ant 1.6.2以降

ネストされたmapper要素を使用して、ファイル名の変換を定義できます。<xslt>で使用されるデフォルトのマッパーは、ソースファイルからファイル拡張子を削除し、extension属性で指定された拡張子を追加します。

style

Ant 1.7以降

ネストされたstyle要素を使用して、Antのresourceタイプでスタイルシートを指定できます。この要素を使用すると、スタイルシートはネストされたリソースまたは単一要素のコレクションとして指定する必要があります。または、refidを使用して、リソースまたはコレクションを参照として指定します。

sysproperty

Ant 1.8.0以降.

ネストされた<sysproperty>要素を使用して、ファクトリまたは変換に必要なシステムプロパティを指定します。これらのプロパティは、クラスの実行中にJVMで使用可能になります。この要素の属性は、環境変数と同じです。

syspropertyset

Ant 1.8.0以降.

syspropertysetを使用して、システムプロパティとして使用されるプロパティのセットを指定できます。

<xslt basedir="doc" destdir="build/doc"
       extension=".html" style="style/apache.xsl"/>

xmlcatalogの使用

<xslt basedir="doc" destdir="build/doc"
      extension=".html" style="style/apache.xsl">
  <xmlcatalog refid="mycatalog"/>
</xslt>

<xslt basedir="doc" destdir="build/doc"
      extension=".html" style="style/apache.xsl">
   <xmlcatalog>
       <dtd
         publicId="-//ArielPartners//DTD XML Article V1.0//EN"
         location="com/arielpartners/knowledgebase/dtd/article.dtd"/>
   </xmlcatalog>
</xslt>

XSLパラメータの使用

単純な文字列パラメータ

<xslt basedir="doc" destdir="build/doc"
      extension=".html" style="style/apache.xsl">
  <param name="date" expression="07-01-2000"/>
</xslt>

トップレベル要素<xsl:param name="date"/>でグローバルパラメータdateを宣言すると、変数$dateの値は07-01-2000になります。

さまざまなデータ型とXPath式

<property name="antProperty1" value="ANT_PROPERTY_1"/>
<property name="antProperty2" value="ANT_PROPERTY_2"/>
<property name="antProperty3" value="3"/>
<property name="antProperty4" value="substring-before"/>

<!--
  ${this} is substituted by Ant itself
  and $this is evaluated by XPath as a variable
-->

<xslt in="in.xml" out="out.xml" style="template.xsl">

  <!-- Simple String parameter: -->
  <param name="p0" expression="some nice string" type="STRING"/>

  <!-- A value substituted by Ant -->
  <param name="p1" expression="some string with ${antProperty1} constructed by Ant" type="STRING"/>

  <!-- XPath resulting in: and this is done in XPath: ANT_PROPERTY_2 -->
  <param name="p2" expression="concat('and this is done in XPath: ', $antProperty2)" type="XPATH_STRING"/>

  <!-- Some XPath math, result: 42 -->
  <param name="p3" expression="64 * 64 div 128 + 10" type="XPATH_NUMBER"/>

  <!-- Some numeric parameter: -->
  <param name="p4" expression="123.45" type="DOUBLE"/>

  <!-- XPath expression, result: true boolean -->
  <param name="p5" expression="$antProperty1 = 'ANT_PROPERTY_1'" type="XPATH_BOOLEAN"/>

  <!-- First one is an XPath variable, second one is a text substituted by Ant, result: true boolean -->
  <param name="p6" expression="$antProperty2 = '${antProperty2}'" type="XPATH_BOOLEAN"/>

  <!-- Some XPath math with a variable, result: 64 -->
  <param name="p7" expression="$antProperty3 * 4 * 5 + 4" type="XPATH_NUMBER"/>

  <!--
    XPath expression with substituted function name and a variable:
    substring-before($antProperty2, '_')
    result: ANT
  -->
  <param name="p8" expression="${antProperty4}($antProperty2, '_')" type="XPATH_STRING"/>

  <!-- Without type attribute: -->
  <param name="p9" expression="default type is String"/>
</xslt>

出力プロパティの使用

<xslt in="doc.xml" out="build/doc/output.xml"
      style="style/apache.xsl">
  <outputproperty name="method" value="xml"/>
  <outputproperty name="standalone" value="yes"/>
  <outputproperty name="encoding" value="iso8859_1"/>
  <outputproperty name="indent" value="yes"/>
</xslt>

ファクトリー設定の使用

<xslt in="doc.xml" out="build/doc/output.xml"
      style="style/apache.xsl">
  <factory name="org.apache.xalan.processor.TransformerFactoryImpl">
    <attribute name="http://xml.apache.org/xalan/features/optimize" value="true"/>
  </factory>
</xslt>

マッパーの使用

<xslt basedir="in" destdir="out"
      style="style/apache.xsl">
  <mapper type="glob" from="*.xml.en" to="*.html.en"/>
</xslt>

ネストされたリソースを使用してスタイルシートを定義する

<xslt in="data.xml" out="${out.dir}/out.xml">
    <style>
        <url url="${printParams.xsl.url}"/>
    </style>
    <param name="set" expression="value"/>
</xslt>

現在処理されているファイル名を出力する

<project>
  <xslt style="printFilename.xsl" destdir="out" basedir="in" extension=".txt"
        filenameparameter="filename"
        filedirparameter="filedir"/>
</project>

<xsl:stylesheet
     version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:param name="filename"></xsl:param>
  <xsl:param name="filedir">.</xsl:param>

  <xsl:template match="/">
    Current file is <xsl:value-of select="$filename"/> in directory <xsl:value-of select="$filedir"/>.
  </xsl:template>

</xsl:stylesheet>

変換中にXInclude対応バージョンのXercesを使用する

<xslt ...>
    <sysproperty key="org.apache.xerces.xni.parser.XMLParserConfiguration"
                 value="org.apache.xerces.parsers.XIncludeParserConfiguration"/>
<xslt>