3.3. XML ルール構文
3.3.1. <when>
構文
ルールの when
で許可される条件は、GraphOperation を拡張する必要があり、現在、Java クラス、XML ファイル、プロジェクト、およびファイルコンテンツの評価が含まれます。XML ルールは Java ベースのルールアドオンに基づいてモデル化されているため、その動作をより深く理解できるように、関連する Java クラスの JavaDocs へのリンクが提供されています。
完全な XML ルールスキーマは http://windup.jboss.org/schema/windup-jboss-ruleset.xsd にあります。
次のセクションでは、より一般的な XML when
ルール条件を説明します。
- <javaclass> 条件構文
- <xmlfile> 条件構文
- <project> 条件構文
- <filecontent> 条件構文
- <file> 条件構文
- <has-hint> 条件構文
- <has-classification> 条件構文
- <graph-query> 条件構文
- <dependency> 条件構文
デフォルトでは、when
ルール条件を複数指定した場合は、すべての条件を満たさないとルールは一致しません。
3.3.1.1. <javaclass> syntax
3.3.1.1.1. 概要
<javaclass>
要素を使用して、インポート、メソッド、変数宣言、アノテーション、クラス実装、および Java クラスに関連する他の項目を検索します。<javaclass>
条件のより詳細な理解は、JavaClass クラスの JavaDoc を参照してください。
以下は、WebLogic 固有の Apache XML パッケージをテストするルールの例です。
<rule id="weblogic-03000"> <when> <javaclass references="weblogic.apache.xml.{*}" /> </when> <perform> <hint title="WebLogic Specific Apache XML Package" effort="1" category-id="mandatory"> <message> Code using this package should be replaced with code using the org.apache.xml package from [Apache Xerces](http://xerces.apache.org/). </message> </hint> </perform> </rule>
3.3.1.1.2. <javaclass> 要素の作成
3.3.1.1.2.1. <javaclass> 要素属性
属性名 | タイプ | 説明 |
---|---|---|
references | CLASS_NAME | 一致するパッケージまたはクラス名。ワイルドカード文字を使用できます。この属性は必須です。 注記
パフォーマンス上の理由から、ワイルドカード文字を使用して参照を開始しないでください。たとえば、 references="weblogic.apache.xml.{*}" |
matchesSource | STRING | 一致する正確な正規表現。これは、ハードコーディングされた文字列を区別する場合に便利です。この属性は必須です。 matchesSource="log4j.logger" |
as | VARIABLE_NAME |
ルールに割り当てられた変数名。これにより、後で処理した参照として使用できるようになります。以下の as="MyEjbRule" |
from | VARIABLE_NAME |
from="MyEjbRule" |
in | PATH_FILTER | この正規表現 (regex) の命名パターンに一致する入力ファイルをフィルターします。ワイルドカード文字を使用できます。 in="{*}File1" |
3.3.1.1.2.2. <javaclass> 子要素
子要素 | 説明 |
---|---|
<location> | 参照が Java クラスで見つかった場所。場所は、アノテーション、フィールドおよび変数宣言、インポート、およびメソッドを参照できます。有効な値の完全なリストは、TypeReferenceLocation の JavaDoc を参照してください。 <location>IMPORT</location> |
<annotation-literal> | アノテーション内のリテラル値に一致します。
以下の例は <javaclass references="org.package.MyAnnotation"> <location>ANNOTATION</location> <annotation-literal name="myvalue" pattern="test"/> </javaclass>
この場合、 |
<annotation-type> | 特定のアノテーションタイプで一致します。アノテーション要素に対して照合されるサブ条件を指定できます。
以下の例は、 <javaclass references="java.util.Calendar"> <location>FIELD_DECLARATION</location> <annotation-type pattern="org.package.MyAnnotation"> <annotation-literal name="myvalue" pattern="test"/> </annotation-type> </javaclass> |
<annotation-list> | アノテーション内の配列の項目で一致します。配列インデックスが指定されていない場合は、配列内の任意のアイテムに適用されると条件が一致します。この要素と照合するサブ条件を指定できます。
以下の例は <javaclass references="org.package.MyAnnotation" > <location>ANNOTATION</location> <annotation-list name="mylist"> <annotation-literal pattern="two"/> </annotation-list> </javaclass>
この場合、 |
3.3.1.2. <xmlfile> 構文
3.3.1.2.1. 概要
<xmlfile>
要素を使用して XML ファイルで情報を検索します。<xmlfile>
条件の理解を深めるには、XmlFile クラスの JavaDoc を参照してください。
以下は、XML ファイルをテストするルールの例です。
<rule id="<UNIQUE_RULE_ID>"> <when> <xmlfile matches="/w:web-app/w:resource-ref/w:res-auth[text() = 'Container']"> <namespace prefix="w" uri="http://java.sun.com/xml/ns/javaee"/> </xmlfile> </when> <perform> <hint title="Title for Hint from XML"> <message>Container Auth</message> </hint> <xslt description="Example XSLT Conversion" extension="-converted-example.xml" template="/exampleconversion.xsl"/> </perform> </rule>
3.3.1.2.2. <xmlfile> 要素の作成
3.3.1.2.2.1. <xmlfile> 要素属性
属性名 | タイプ | 説明 |
---|---|---|
matches | XPATH | XML ファイル条件で一致します。 matches="/w:web-app/w:resource-ref/w:res-auth[text() = 'Container']" |
xpathResultMatch | XPATH_RESULT_STRING | 指定の正規表現に一致する結果を返します。 <xmlfile matches="//foo/text()" xpathResultMatch="Text from foo."/> |
as | VARIABLE_NAME |
ルールに割り当てられた変数名。これにより、後で処理した参照として使用できるようになります。以下の as="MyEjbRule" |
in | PATH_FILTER | この正規表現 (regex) の命名パターンに一致する入力ファイルをフィルターを設定するのに使用されます。ワイルドカード文字を使用できます。 in="{*}File1" |
from | VARIABLE_NAME |
from="MyEjbRule" |
public-id | PUBLIC_ID | DTD public-id 正規表現。 public-id="public" |
3.3.1.2.2.2. <xmlfile> がカスタム関数と 一致
します。
matches
属性は、ルール変数スタックに一致した値の設定など、有用な影響を及ぼす可能性のある組み込みのカスタム XPath 関数をいくつか使用できます。
機能 | 説明 |
---|---|
| XPath 式を文字列と照合します。MTR パラメーター化プレースホルダーが含まれている可能性があります。 matches="windup:matches(//foo/@class, '{javaclassname}')"
これは、すべての |
3.3.1.2.2.3. <xmlfile> 子要素
子要素 | 説明 |
---|---|
<namespace> |
XML ファイルで参照される名前空間。この要素には、 <namespace prefix="abc" uri="http://maven.apache.org/POM/4.0.0"/> |
3.3.1.3. <project> 構文
3.3.1.3.1. 概要
<project>
要素を使用して、プロジェクトの特性について Maven POM ファイルをクエリーします。<project>
条件をよりよく理解するには、Project クラスの JavaDoc を参照してください。
以下は、2.0.0.Final と 2.2.0.Final の間で JUnit 依存関係バージョンを確認するルールの例になります。
<rule id="UNIQUE_RULE_ID"> <when> <project> <artifact groupId="junit" artifactId="junit" fromVersion="2.0.0.Final" toVersion="2.2.0.Final"/> </project> </when> <perform> <lineitem message="The project uses junit with the version between 2.0.0.Final and 2.2.0.Final"/> </perform> </rule>
3.3.1.3.2. <project> 要素の作成
3.3.1.3.2.1. <project> 要素属性
<project>
要素は、プロジェクトの Maven POM ファイルと照合するために使用されます。この条件を使用して、プロジェクトの依存関係をクエリーできます。属性自体はありません。
3.3.1.3.2.2. <project> 子要素
子要素 | 説明 |
---|---|
<artifact> |
プロジェクトの依存関係に対してクエリーするために |
3.3.1.3.2.3. <artifact> 要素属性
属性名 | タイプ | 説明 |
---|---|---|
groupId | PROJECT_GROUP_ID |
依存関係の |
artifactId | PROJECT_ARTIFACT_ID |
依存関係の |
fromVersion | FROM_VERSION |
アーティファクトの下位バージョンバインドを指定します。たとえば |
toVersion | TO_VERSION |
アーティファクトの上位バージョンバインドを指定します。たとえば |
ルールが検索するアーティファクトを含む POM ファイル内の要素を修飾できます。これは、オプションの <location>
要素を使用して実現されます。以下の例は、POM ファイルの <plugins>
要素内でアーティファクトを検索するルールを示しています。

有効な場所のリストは次のとおりです。
- DEPENDENCY_MANAGEMENT
- DEPENDENCIES
- PLUGIN_MANAGEMENT
- PLUGINS
- PARENT
3.3.1.4. <filecontent> 構文
3.3.1.4.1. 概要
<filecontent>
要素を使用して、ファイル内の文字列またはテキストを検索します (例: Properties ファイルの行)。<filecontent>
条件の理解を深めるには、FileContent クラスの JavaDoc を参照してください。
3.3.1.4.2. <filecontent> の作成
3.3.1.4.2.1. <filecontent> 要素属性
属性名 | タイプ | 説明 |
---|---|---|
pattern | String | 指定されたパラメーター化された文字列に対してファイルの内容を一致させます。この属性は必須です。 |
filename | String | 提供されるパラメーター化された文字列に対してファイル名を一致させます。 |
as | VARIABLE_NAME |
ルールに割り当てられた変数名。これにより、後で処理した参照として使用できるようになります。以下の as="MyEjbRule" |
from | VARIABLE_NAME |
from="MyEjbRule" |
3.3.1.5. <file> 構文
3.3.1.5.1. 概要
<file>
要素を使用して、特定の名前のファイル (例: ibm-webservices-ext.xmi
) ファイルが存在するかどうかを検索します。<file>
条件のより詳細な理解は、File クラスの JavaDoc を参照してください。
3.3.1.5.2. <file> 要素の作成
3.3.1.5.2.1. <file> 要素属性
属性名 | タイプ | 説明 |
---|---|---|
filename | String | 提供されるパラメーター化された文字列に対してファイル名を一致させます。この属性は必須です。 |
as | VARIABLE_NAME |
ルールに割り当てられた変数名。これにより、後で処理した参照として使用できるようになります。以下の as="MyEjbRule" |
from | VARIABLE_NAME |
以下に例を示します。 from="MyEjbRule" |
3.3.1.6. <has-hint> 構文
3.3.1.6.1. 概要
<has-hint>
要素を使用して、ファイルまたは行にすでに関連付けられているヒントがあるかどうかをテストします。これは主に、ヒントがすでに存在する場合にクエリーが実行されないように、または他の条件が該当しない場合にデフォルトの実行ルールを実装するために使用されます。<has-hint>
条件のより詳しい情報は、HasHint クラスの JavaDoc を参照してください。
以下は、IBM JMS 宛先メッセージのヒントが存在するかどうかを確認し、含まれていない場合にそれを含めるルールの例です。
<rule id="websphere-jms-eap7-03000"> <when> <javaclass references="{package}.{prefix}{type}Message" /> </when> <perform> <iteration> <when> <not> <has-hint /> </not> </when> <perform> <hint title="IBM JMS destination message" effort="1" category-id="mandatory"> <message> JMS `{package}.{prefix}{type}Message` messages represent the actual data passed through JMS destinations. This reference should be replaced with the Java EE standard API `javax.jms.{type}Message`. </message> <link href="https://docs.oracle.com/javaee/7/tutorial/jms-concepts003.htm#sthref2271" title="Java EE 7 JMS Tutorial - Message API" /> <tag>jms</tag> <tag>websphere</tag> </hint> </perform> </iteration> </perform> <where param="type"> <matches pattern="(Text|Stream|Object|Map|Bytes)?" /> </where> <where param="prefix"> <matches pattern="(JMS|MQe|MQ)" /> </where> <where param="package"> <matches pattern="com.ibm(\..*)?\.jms" /> </where> </rule>
3.3.1.6.2. <has-hint> の作成
<has-hint>
要素は、ファイルまたは行のヒントが存在するかどうかを判断するために使用されます。子要素はありません。
3.3.1.6.2.1. <has-hint> 要素属性
属性名 | タイプ | 説明 |
---|---|---|
message | String | ヒントを提供されたメッセージ文字列と照合できるようにする任意の引数。 |
3.3.1.7. <has-classification> 構文
3.3.1.7.1. 概要
<has-classification>
要素を使用して、ファイルまたは行に分類があるかどうかをテストします。これは主に、分類がすでに存在する場合に起動を防止するため、また他の条件が適用されない場合のデフォルト実行のルールを実装するために使用されます。<has-classification>
条件のより詳細な理解は、HasClassification クラスの JavaDoc を参照してください。
3.3.1.7.2. <has-classification> の作成
has-classification
要素は、指定された分類が存在するかどうかを判断するために使用されます。子要素はありません。
3.3.1.7.2.1. <has-classification> 要素属性
属性名 | タイプ | 説明 |
---|---|---|
title | String | 分類と照合する任意のタイトル。 |
3.3.1.8. <graph-query> 構文
3.3.1.8.1. 概要
<graph-query>
要素を使用して、生成されたグラフで任意の要素を検索します。この要素は、主に特定のアーカイブを検索するために使用されます。<graph-query>
条件のより詳細な理解は、QueryHandler クラスの JavaDoc を参照してください。
以下は、ehcache
パッケージが見つかったかどうかを判断するためにテストするルールの例です。
<rule id="embedded-cache-libraries-01000"> <when> <graph-query discriminator="JarArchiveModel"> <property name="fileName" searchType="regex">.*ehcache.*\.jar$</property> </graph-query> </when> <perform> <classification title="Caching - Ehcache embedded library" category-id="cloud-mandatory" effort="5"> <description> The application embeds an Ehcache library. Cloud readiness issue as potential state information that is not persisted to a backing service. </description> </classification> <technology-tag level="INFORMATIONAL">Ehcache (embedded)</technology-tag> </perform> </rule>
3.3.1.8.2. <graph-query> の作成
3.3.1.8.2.1. <graph-query> 要素属性
属性名 | タイプ | 説明 |
---|---|---|
discriminator | MODEL_TYPE |
検索に使用するモデルのタイプ。これは任意の有効なモデルに指定できます。ただし、アーカイブの調査には |
as | VARIABLE_NAME |
ルールに割り当てられた変数名。これにより、後で処理した参照として使用できるようになります。以下の as="MyEjbRule" |
from | VARIABLE_NAME |
from="MyEjbRule" |
3.3.1.8.2.2. <graph-query> プロパティー
プロパティー名 | タイプ | 説明 |
---|---|---|
name | String |
選択したモデル内で照合する属性の名前。ファイルベースのモデルを使用する場合は、 |
type | property-type |
予想されるプロパティーの型 ( |
searchType | property-search-type |
条件の一致方法を定義します。 |
3.3.1.9. <dependency> 構文
3.3.1.9.1. 概要
<dependency>
要素を使用して、アプリケーションの POM ファイル内で定義された依存関係を検索し、ターゲットランタイムでサポートされるかどうかを判別します。
以下は、1.6.0 までのバージョンがある org.springframework.boot
グループに属するすべてのアーティファクトを確認するルールの例です。
<rule id="springboot-00001"> <!-- rule condition, when it could be fired --> <when> <dependency groupId="org.springframework.boot" artifactId="{*}" toVersion="1.6.0" /> </when> <!-- rule operation, what to do if it is fired --> <perform> <hint title="Unsupported version of Spring Boot" effort="3" category-id="mandatory"> <message>Spring Boot has to be updated to Spring Boot 2.0 before being able to be migrated to a version supported by Red Hat Runtimes</message> <link href="https://access.redhat.com/articles/3349341" title="RHOAR Spring Boot Supported Configurations" /> <link href="https://access.redhat.com/articles/3348731" title="RHOAR Component Details Overview" /> <link href="https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide" title="Spring Boot 2.0 Migration Guide" /> </hint> </perform> </rule>
3.3.2. <perform>
構文
ルールの perform
セクションで利用可能な操作には、アプリケーションリソースの分類、移行手順のインラインヒント、移行情報へのリンク、およびプロジェクトラインレポートレポートが含まれます。XML ルールは Java ベースのルールアドオンに基づいてモデル化されているため、その動作をより深く理解できるように、関連する Java クラスの JavaDocs へのリンクが提供されています。
完全な XML ルールスキーマ を表示できます。
次のセクションでは、より一般的な XML ルール実行アクションを説明します。
3.3.2.1. <classification> 構文
3.3.2.1.1. 概要
<classification>
要素は、ルールに一致するアプリケーションリソースを識別または分類するのに使用されます。これは、レポートに表示されるタイトル、作業レベル、およびリソースの分類の移行方法に関する追加情報へのリンクも提供します。<classification>
アクションの詳細は、Classification クラスの JavaDoc を参照してください。
以下は、リソースを WebLogic EAR アプリケーションデプロイメント記述子ファイルとして分類するルールの例です。
<rule id="XmlWebLogicRules_10vvyf"> <when> <xmlfile as="default" matches="/*[local-name()='weblogic-application']"></xmlfile> </when> <perform> <iteration> <classification title="Weblogic EAR Application Descriptor" effort="3"/> </iteration> </perform> </rule>
3.3.2.1.2. <classification> 要素属性
属性名 | タイプ | 説明 |
---|---|---|
title | STRING | このリソースに指定されたタイトル。この属性は必須です。 title="JBoss Seam Components" |
effort | BYTE | このリソースに割り当てられた作業量レベル。 effort="2" |
category-id | STRING |
category-id="mandatory" |
/ | VARIABLE_NAME | 指定の参照用に新しい分類を作成します。 of="MySeamRule" |
3.3.2.1.3. <classification> 子要素
子要素 | 説明 |
---|---|
<link> | 詳細情報のリンク URI およびテキストタイトルを提供します。 <classification title="Websphere Startup Service" effort="4"> <link href="http://docs.oracle.com/javaee/6/api/javax/ejb/Singleton.html" title="EJB3.1 Singleton Bean"/> <link href="http://docs.oracle.com/javaee/6/api/javax/ejb/Startup.html" title="EJB3.1 Startup Bean"/> </classification> |
<tag> | 分類に関する追加のカスタム情報を提供します。 <tag>Seam3</tag> |
<description> | このリソースの説明です。 <description>JBoss Seam components must be replaced</description> |
3.3.2.2. <link> 構文
3.3.2.2.1. 概要
<link>
要素は、分類またはヒントで使用され、情報コンテンツへのリンクが提供されます。<link>
アクションのより詳細な理解は、Link クラスの JavaDoc を参照してください。
以下は、追加情報へのリンクを作成するルールの例です。
<rule id="SeamToCDIRules_2fmb"> <when> <javaclass references="org.jboss.seam.{*}" as="default"/> </when> <perform> <iteration> <classification title="SEAM Component" effort="1"> <link href="http://www.seamframework.org/Seam3/Seam2ToSeam3MigrationNotes" title="Seam 2 to Seam 3 Migration Notes"/> <link href="http://docs.jboss.org/weld/reference/latest/en-US/html/example.html" title="JSF Web Application Example"/> <link href="http://docs.jboss.org/weld/reference/latest/en-US/html/contexts.html" title="JBoss Context Documentation"/> <link href="http://www.andygibson.net/blog/tutorial/cdi-conversations-part-2/" title="CDI Conversations Blog Post"/> </classification> </iteration> </perform> </rule>
3.3.2.2.2. <link> 要素属性
属性名 | タイプ | 説明 |
---|---|---|
href | URI | 参照リンクの URI。 href="https://access.redhat.com/articles/1249423" |
title | STRING | リンクのタイトル。 title="Migrate WebLogic Proprietary Servlet Annotations" |
3.3.2.3. <hint> 構文
3.3.2.3.1. 概要
<hint>
要素は、コードのセクションの移行方法に関するヒントまたはインライン情報を提供するために使用されます。<hint>
アクションについてよく理解するには、Hint クラスの JavaDoc を参照してください。
以下は、ヒントを作成するルールの例です。
<rule id="WebLogicWebServiceRules_8jyqn"> <when> <javaclass references="weblogic.wsee.connection.transport.http.HttpTransportInfo.setUsername({*})" as="default"> <location>METHOD</location> </javaclass> </when> <perform> <iteration> <hint title="Proprietary web-service" category-id="mandatory" effort="3"> <message>Replace proprietary web-service authentication with JAX-WS standards.</message> <link href="http://java-x.blogspot.com/2009/03/invoking-web-services-through-proxy.html" title="JAX-WS Proxy Password Example"/> </hint> </iteration> </perform> </rule>
3.3.2.3.2. <hint> 要素属性
属性名 | タイプ | 説明 |
---|---|---|
title | STRING | 指定された文字列を使用してこのヒントを入力します。この属性は必須です。 title="JBoss Seam Component Hint" |
category-id | STRING |
category-id="mandatory" |
in | VARIABLE_NAME | 指定された変数によって解決される FileLocationModel に新しいヒントを作成します。 in="Foo" |
effort | BYTE | このリソースに割り当てられた作業量レベル。 effort="2" |
3.3.2.3.3. <hint> 子要素
子要素 | 説明 |
---|---|
<message> | 移行ヒントを記述するメッセージ。 <message>EJB 2.0 is deprecated</message> |
<link> | 情報コンテンツへのリンクを特定または分類します。 <link href="http://docs.oracle.com/javaee/6/api/" title="Java Platform, Enterprise Edition 6 API Specification" /> |
<tag> |
この <tag>Needs review</tag> |
<quickfix> | ルール条件が満たされたときに MTR プラグインがクイック修正を実行するために使用する情報が含まれています。 <quickfix name="slink-qf" type="REPLACE"> <replacement>h:link</replacement> <search>s:link</search> </quickfix> |
3.3.2.4. <xslt> 構文
3.3.2.4.1. 概要
<xslt>
要素は XML ファイルの変換方法を指定します。<xslt>
アクションのより詳しい情報は、XSLTTransformation クラスの JavaDoc を参照してください。
以下は、XSLT アクションを定義するルールの例です。
<rule id="XmlWebLogicRules_6bcvk"> <when> <xmlfile as="default" matches="/weblogic-ejb-jar"/> </when> <perform> <iteration> <classification title="Weblogic EJB XML" effort="3"/> <xslt title="JBoss EJB Descriptor (Windup-Generated)" template="transformations/xslt/weblogic-ejb-to-jboss.xsl" extension="-jboss.xml"/> </iteration> </perform> </rule>
3.3.2.4.2. <xslt> 要素属性
属性名 | タイプ | 説明 |
---|---|---|
title | STRING | レポート内のこの XSLTTransformation のタイトルを設定します。この属性は必須です。 title="XSLT Transformed Output" |
/ | STRING | 指定の参照の変換を新たに作成します。 of="testVariable_instance" |
extension | STRING | この XSLTTransformation のエクステンションを設定します。この属性は必須です。 extension="-result.html" |
template | STRING | XSL テンプレートを設定します。この属性は必須です。 template="simpleXSLT.xsl" |
effort | BYTE | 変換に必要な作業量レベルです。 |
3.3.2.4.3. <xslt> 子要素
子要素 | 説明 |
---|---|
<xslt-parameter> | XSLTTransformation パラメーターをプロパティー値のペアとして指定します。 <xslt-parameter property="title" value="EJB Transformation"/> |
3.3.2.5. <lineitem> 構文
3.3.2.5.1. 概要
<lineitem>
要素は、非推奨のライブラリーを置き換える必要がある場合や発生する可能性のあるクラス読み込みの問題を解決する必要がある場合などに、アプリケーションの一般的な移行要件を提供するために使用されます。この情報は、プロジェクトまたはアプリケーションの概要ページに表示されます。<lineitem>
アクションについてよく理解するには、LineItem クラスの JavaDoc を参照してください。
以下は、行項目メッセージを作成するルールの例です。
<rule id="weblogic_servlet_annotation_1000"> <when> <javaclass references="weblogic.servlet.annotation.WLServlet" as="default"> <location>ANNOTATION</location> </javaclass> </when> <perform> <hint effort="1"> <message>Replace the proprietary WebLogic @WLServlet annotation with the Java EE 6 standard @WebServlet annotation.</message> <link href="https://access.redhat.com/articles/1249423" title="Migrate WebLogic Proprietary Servlet Annotations" /> <lineitem message="Proprietary WebLogic @WLServlet annotation found in file."/> </hint> </perform> </rule>
3.3.2.5.2. <lineitem> 要素属性
属性名 | タイプ | 説明 |
---|---|---|
message | STRING | 行項目メッセージ。 message="Proprietary code found." |
3.3.2.6. <iteration> 構文
3.3.2.6.1. 概要
<iteration>
要素は、ルール内で定義される暗黙的な変数または明示的な変数を繰り返し処理するように指定します。<iteration>
アクションについてよく理解するには、Iteration の JavaDoc を参照してください。
以下は、反復を実行するルールの例です。
<rule id="jboss-eap5-xml-19000"> <when> <xmlfile as="jboss-app" matches="/jboss-app"/> <xmlfile as="jboss-app-no-DTD" matches="/jboss-app" public-id=""/> </when> <perform> <iteration over="jboss-app"> <classification title="JBoss application Descriptor" effort="5"/> </iteration> <iteration over="jboss-app-no-DTD"> <classification title="JBoss application descriptor with missing DTD" effort="5"/> </iteration> <iteration over="jboss-app-no-DTD"> <xslt title="JBoss application descriptor - JBoss 5 (Windup-generated)" template="transformations/xslt/jboss-app-to-jboss5.xsl" extension="-jboss5.xml"/> </iteration> </perform> </rule>
3.3.2.6.2. <iteration> 要素属性
属性名 | タイプ | 説明 |
---|---|---|
over | VARIABLE_NAME | この VARIABLE_NAME で特定された条件を繰り返します。 over="jboss-app" |
3.3.2.6.3. <iteration> 子要素
子要素 | 説明 |
---|---|
<iteration> |
子要素には、 |
3.3.3. <where>
構文
XML ルールの他の要素で使用する、一致するパターンを指定するパラメーターを定義できます。これにより、複雑なマッチング式のパターンを単純化できます。
<where>
要素を使用してパラメーターを定義します。param
属性を使用してパラメーター名を指定し、<matches>
要素を使用してパターンを指定します。このパラメーターは、構文 {<PARAM_NAME>}
を使用して、ルール定義の他の場所で参照できます。
完全な XML ルールスキーマ を表示できます。
以下のルール例は、(activeio|activemq)
パターンを指定する subpackage
という名前のパラメーターを定義します。
<rule id="generic-catchall-00600"> <when> <javaclass references="org.apache.{subpackage}.{*}"> </javaclass> </when> <perform> ... </perform> <where param="subpackage"> <matches pattern="(activeio|activemq)" /> </where> </rule>
subpackage
で定義されたパターンは <javaclass>
references
属性で置き換えられます。これにより、ルールは org.apache.activeio.*
パッケージおよび org.apache.activemq.*
パッケージで一致します。