style という名前は、同じタスクの非推奨の名前です。
XSLT を介してドキュメントのセットを処理します。
これは、XML ベースのドキュメントのビューを構築したり、コードを生成したりするのに役立ちます。
処理されるファイルのセットを絞り込むことができます。これは、includes、includesfile、excludes、excludesfile、および defaultexcludes 属性を使用して行うことができます。includes または includesfile 属性を使用して、パターンを使用して含めるファイルを指定します。exclude または excludesfile 属性は、除外するファイルを指定するために使用されます。これもパターンを使用して行われます。最後に、defaultexcludes 属性を使用して、デフォルトの除外を使用するかどうかを指定できます。ファイルの包含/除外の仕組みとパターンの書き方については、ディレクトリベースのタスクのセクションを参照してください。
このタスクは暗黙的な FileSet を形成し、<fileset> のすべての属性(dir は basedir になります)と、ネストされた <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 | 結果を格納するディレクトリ。 | はい。in と out が指定されていない場合。 |
| extension | ターゲットに使用されるファイル拡張子。 | いいえ。デフォルトは .htmlです。ネストされた <mapper> または in と out の両方が指定されている場合は無視されます。 |
| style | 使用するスタイルシートの名前。プロジェクトの basedir からの相対パスまたは絶対パスとして指定します。 または、Antがリソースとして解釈できるネストされた要素を使用して、スタイルシートの場所を示すことができます。 非推奨のバリエーション: スタイルシートが見つからず、タスクの basedir 属性を指定した場合、Antは style 属性がタスクの basedir に対して相対的であると想定します。 |
いいえ。スタイルシートの場所がネストされた <style> 要素を使用して指定されている場合。 |
| classpath | XSLTプロセッサを検索するときに使用するクラスパス。 | いいえ |
| classpathref | 使用するクラスパス。他の場所で定義されたパスへの参照として指定します。 | いいえ |
| force | ターゲットファイルが対応するソースファイルまたはスタイルシートよりも新しい場合でも、ターゲットファイルを再作成します。 | いいえ。デフォルトは falseです。 |
| processor | 使用するXSLTプロセッサの名前。許可される値は次のとおりです。
|
いいえ。デフォルトは traxです。 |
| includes | 含める必要があるファイルのパターンのカンマまたはスペース区切りのリスト。 | いいえ。デフォルトはすべて(**)です。 |
| includesfile | ファイルの名前。このファイルの各行は、包含パターンと見なされます。 | いいえ |
| excludes | 除外する必要があるファイルのパターンのカンマまたはスペース区切りのリスト。 | いいえ。defaultexcludes が noの場合は、デフォルトの除外またはなしにデフォルト設定されます。 |
| 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であっても、failOnTransformationError を falseに設定することで、変換エラーを抑制できることに注意してください。Ant 1.8.0以降。 |
いいえ。デフォルトは trueです。 |
| failOnTransformationError | ドキュメントの変換中にエラーが発生した場合にビルドを失敗させるかどうか。 failOnError が falseの場合、この属性は効果がないことに注意してください。Ant 1.8.0以降。 |
いいえ。デフォルトは trueです。 |
| failOnNoResources | ネストされたリソースコレクションが空の場合にビルドを失敗させるかどうか。 failOnError が falseの場合、この属性は効果がないことに注意してください。Ant 1.8.0以降。 |
いいえ。デフォルトは trueです。 |
Ant 1.7以降
リソースコレクションを使用して、スタイルシートを適用するリソースを指定します。ネストされたマッパーとタスクの destdir
属性を使用して、出力ファイルを指定します。
プロセッサを読み込むクラスパスは、ネストされた <classpath>、つまりパスのような構造を介して指定することもできます。
xmlcatalog 要素は、エンティティとURIの解決を実行するために使用されます。
Param は、XSLスタイルシートにパラメーターを渡すために使用されます。
| 属性 | 説明 | 必須 |
|---|---|---|
| name | XSLパラメータの名前 | はい |
| expression | パラメータに配置される値、またはXPath式(type によって異なります)。 | はい |
| type | パラメータのデータ型。可能な値は次のとおりです。
|
いいえ。デフォルトは STRINGです。 |
| if | このプロパティが設定されている場合にのみ、パラメータが渡されます。 | いいえ |
| unless | このプロパティが設定されている場合、パラメータは渡されません。 | いいえ |
XPATH_*
タイプは、expression がプリミティブ型の値だけでなくXPath式でもあることを示しています。この式は空のXMLドキュメントで評価され、結果は指定されたタイプの パラメータとしてXSLTトランスフォーマーに渡されます。これらの式では、宣言されたAntプロパティをXPath変数(例:$someProperty)として使用できます。そのため、標準のXPath関数と演算子を使用して何かを計算できます。
$someProperty の代わりに ${someProperty} を記述すると、XPath式を評価する前に、値はAntによって単純に置き換えられます(この置換はプリミティブ型でも機能します)。
XSLT仕様で指定されているように、結果ツリーを出力する方法を指定するために使用されます。
| 属性 | 説明 | 必須 |
|---|---|---|
| name | プロパティの名前 | はい |
| value | プロパティの値 | はい |
Ant 1.9.8以降
ファクトリ設定を指定するために使用されます。
| 属性 | 説明 | 必須 |
|---|---|---|
| name | 使用するトランスフォーマーファクトリの完全修飾クラス名。たとえば、org.apache.xalan.processor.TransformerFactoryImpl または org.apache.xalan.xsltc.trax.TransformerFactoryImpl または net.sf.saxon.TransformerFactoryImpl などです。 |
いいえ。デフォルトはJAXPルックアップメカニズムです。 |
プロセッサファクトリの設定を指定するために使用されます。属性の名前と値は完全にプロセッサ固有であるため、それらを理解するには実装を認識している必要があります。プロセッサのドキュメントを読んでください。たとえば、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-path の path を使用したクラスローダーに設定します。
プロセッサファクトリーの設定を指定するために使用されます。機能名はほとんどのプロセッサ固有であるため、それらを理解するには実装を認識している必要があります。使用するプロセッサのドキュメントを読んでください。すべての実装でサポートが必須な唯一の機能はhttp://javax.xml.XMLConstants/feature/secure-processingです。
パラメータ
属性 説明 必須 name 機能名 はい value 機能の値。ブール値(つまり、許可される値は true、false、yes、no、on、off)です。いいえ; デフォルトは falseです。
Ant 1.6.2以降
ネストされたmapper要素を使用して、ファイル名の変換を定義できます。<xslt>で使用されるデフォルトのマッパーは、ソースファイルからファイル拡張子を削除し、extension属性で指定された拡張子を追加します。
Ant 1.7以降
ネストされたstyle要素を使用して、Antのresourceタイプでスタイルシートを指定できます。この要素を使用すると、スタイルシートはネストされたリソースまたは単一要素のコレクションとして指定する必要があります。または、refidを使用して、リソースまたはコレクションを参照として指定します。
Ant 1.8.0以降.
ネストされた<sysproperty>要素を使用して、ファクトリまたは変換に必要なシステムプロパティを指定します。これらのプロパティは、クラスの実行中にJVMで使用可能になります。この要素の属性は、環境変数と同じです。
Ant 1.8.0以降.
syspropertysetを使用して、システムプロパティとして使用されるプロパティのセットを指定できます。
<xslt basedir="doc" destdir="build/doc"
extension=".html" style="style/apache.xsl"/>
<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>
単純な文字列パラメータ
<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>
<xslt ...>
<sysproperty key="org.apache.xerces.xni.parser.XMLParserConfiguration"
value="org.apache.xerces.parsers.XIncludeParserConfiguration"/>
<xslt>