ヘッダーをスキップ
Oracle Enterprise Manager Application Configuration Console CLIリファレンス
リリース5.3.2
B56959-01
  目次
目次

戻る
戻る
 
 

3 mvPath

この章では、mvPathの使用方法について説明します。これには、完全なmvPath構文と多数の使用例を含みます。

3.1 mvPathの使用方法

いくつかのCLIコマンドは、mvPath式を使用してコンテナとプロパティを参照します。

mvPathはXPathに類似していますが、これはApplication Configuration Consoleのデータ階層をナビゲートするために特別に設計されたものです。Xpathに慣れていなくても、DOSやUNIXのコマンド・プロンプトでディレクトリとファイル名を入力したことがあれば、mvPathが直感的でわかりやすいと感じるしょう。

すべてのmvPath式はコンテキストを参照します。これは、通常はデータ階層内の現在の場所とみなされます。

3.2 mvPathリファレンス

mvPathは、コンテナやプロパティなどのApplication Configuration Console内のオブジェクトを参照するための式言語です。Application Configuration Consoleでは、変数と制約を指定するとき、コマンドライン・インタフェースを使用するとき、および独自のスクリプトを記述するときにmvPathを使用します。

構成データのmvPathビューは単純で、プロパティとメタデータ以外はすべてコンテナです。プロジェクト、環境、レイヤー、フォルダ、アセット、構成、ビュー、構成要素、これらはすべてコンテナです。コンテナとプロパティのどちらもメタデータを持つことができ、プロパティとメタデータは値を持つことができます。

3.2.1 mvPathコンストラクタ

コンテナの階層を上下に移動するにはmvPathを使用します。すべてのmvPath式は、コンテキストに関連して評価されます。これはデータ階層内のコンテナとしてのコンテキストです(コンテキストは常にコンテナです)。mvPath式のコンテキストは、通常は現在のコンテナです。ただし、式の先頭が/の場合は、コンテキストはデータのルートです。

mvPath式は、単語と記号からなる非常に短いリストから構成されます。

コンテナ名: 特別な記号は付けずに、名前で直接コンテナを参照します。たとえば、Asset1は、現在のコンテキストに配置されているAsset1という名前のコンテナを参照します。
プロパティ名: プロパティ名の前には@を付けます。たとえば、@portはportという名前のプロパティを参照します。
メタデータ名: メタデータ名の前にはチルダ(~)を付けます。たとえば、~httpはhttpという名前のメタデータを参照します。コンテナとプロパティのどちらもメタデータを持つことができることに注意してください。
プロパティとメタデータ値: プロパティとメタデータの値を=(等号)を使用して設定またはテストします。たとえば、@port="80"は値が80のportという名前のプロパティを参照します。
.(ピリオド): 現在のコンテキストです。これは、先頭が//の場合以外はオプションです。
..: 親コンテナに移動します。これを使用して、あるプロジェクトの最上位レベルから別のプロジェクトに移動することはできません(たとえばP1から../P2へ)。
/: ルートまたはセパレータです。式の先頭で使用する場合、スラッシュはデータ・フォルダのルートを示します。式内の他の場所で使用する場合、パスのコンポーネントを区切ります。
/MV_CONFIG: System Configurationフォルダのルートです。System Configurationフォルダ内のオブジェクトの位置を示すには、パスを/MV_CONFIGから開始する必要があります。
//: すべての子に再帰します。
//-: 子に再帰しますが、正の結果の下には再帰しません。
^: 一致制限です。式を構成内で一致させることはできません。構成より上位のコンテナのみ検索されます。
[]: 含むまたは持ちます。たとえば、E2[L2]はL2という名前の子を含むE2という名前のコンテナを参照します。E2[def()="D1"]は、"D1"の定義を持つE2という名前のコンテナを参照します。
*: 完全なコンテナ名、プロパティ名またはメタデータ名のためのワイルドカードです。これを使用して部分名を完成させることはできません。
+: mvPathを連結します(name()、value()およびリテラル文字列を含む文字列にする必要があります)。プラス記号の前後にスペースを入れないでください。C1[@P1/value()="foo"+@P2/value]のように、述語の内側で連結を使用することはできません。
value(): プロパティまたはメタデータの値です。
id(): コンテナ、プロパティまたはメタデータのIDです。
name(): コンテナ、プロパティまたはメタデータの名前です。
list("regex"): 返されたname()またはvalue()演算子にあるパターンと一致するリスト文字列を返します。
例:
返されたname()またはvalue()が"SIBusMember_114678997643"の場合:
value()/list("^[a-zA-Z]*")は、"SIBusMember"を返します。
value()/list("[0-9]*$")は、"114678997643"を返します。
value()/list("M[a-z]*")は、"Member"を返します。
/slice(start:end): 文字列の一部を返します。startは返す文字列の開始位置の番号(0から開始)で、endは終了位置の番号です。endが負の数値の場合は、文字列の右端からカウントします。
例:
返されたvalue()が"ABCDEFG"の場合:
value()/slice("2:5")は、"CDE"を返します。
value()/slice("2:-2")は、"CDE"を返します。
value()/slice("2:")は、"CDEFG"を返します。
value()/slice(":5")は、"ABCDE"を返します。
value()/slice("-3:")は、"EFG"を返します。
def(): コンテナまたはプロパティの定義です。使用できる値は、mvcontainer.ContainerDefinitionsで定義されている定数で表される文字列です。実際の文字列を取得するには、CLIコンソール・ビューで次のように入力します。
import mvcontainer
mvcontainer.ContainerDefinitions.<CONSTANT>
ここで、<CONSTANT>はcontainerDefinitions定数で、たとえば次のようになります。
mvcontainer.ContainerDefinitions.PROJECT
使用可能な定数値:
ASSET = http://mvalent.com/2003/container#asset
ASSET_RESOURCE_VIEW = http://mvalent.com/2003/container#asset_resource_view
AUTHPACK_FOLDER = http://mvalent.com/2003/container#authpack_folder
CONFIGURATION = http://mvalent.com/2003/container#configuration
CONFIGURATION_VIEW = http://mvalent.com/2003/container#configuration_view
CUSTOM_VIEW = http://mvalent.com/2003/container#custom_view
CUSTOM_VIEW_FOLDER = http://mvalent.com/2003/container#custom_view_folder
ELEMENT_TREE = http://mvalent.com/2003/container#element_tree
ENVIRONMENT = http://mvalent.com/2003/container#environment
FILE_FOLDER = http://mvalent.com/2003/container#file_folder
FILE_TEMPLATE = http://mvalent.com/2003/container#file_template
FOLDER = http://mvalent.com/2003/container#folder
HOST_FOLDER = http://mvalent.com/2003/container#host_folder
LAYER = http://mvalent.com/2003/container#layer
MV_CONFIG_ASSET = http://mvalent.com/2003/container#mv_config_asset
PROJECT = http://mvalent.com/2003/container#project
RESOURCESPEC_FOLDER = http://mvalent.com/2003/container#resourcespec_folder
type(): コンテナ・タイプです。使用できる値は、mvcontainer.Typeで定義された定数で表される文字列です。実際の文字列を取得するには、CLIコンソール・ビューで次のように入力します。
regex(".*.xml")
ここで、<CONSTANT>mvcontainer.Typeで、たとえば次のようになります。:
mvcontainer.Type.ORGANIZATION.uri()
使用可能な定数値:
ASSET = http://mvalent.com/2003/container#asset
ASSET_VIEW = http://mvalent.com/2003/container#asset_view
AUTHPACK_FOLDER = http://mvalent.com/2003/container#authpack_folder
CONFIGURATION = http://mvalent.com/2003/container#configuration
CONFIGURATION_VIEW = http://mvalent.com/2003/container#configuration_view
ELEMENT_TREE = http://mvalent.com/2003/container#element_tree
FILE_TEMPLATE = http://mvalent.com/2003/container#file_template
HOST_FOLDER = http://mvalent.com/2003/container#host_folder
MV_CONFIG = http://mvalent.com/2003/container#mv_config
ORGANIZATION = http://mvalent.com/2003/container#organization
RESOURCESPEC_FOLDER = http://mvalent.com/2003/container#resourcespec_folder
regex(): 正規表現です。正規表現は次のようなパターン一致に使用できます。
import mvcontainer
mvcontainer.Type.<CONSTANT>.uri()
末尾が.xmlのすべての構成名と一致します。正規表現は非常に強力ですが、このリファレンスの範囲を超えています。詳細は、http://www.regular-expressions.info/などの、Web上の正規表現に関するサイトを参照してください。
\: エスケープ文字です。特殊文字の/ ( [ ] = +をmvPath式で使用する必要がある場合は、特殊文字の前にバックスラッシュを付ける必要があります。
コンストラクタは少数しかありませんが、次の例に示すように、mvPath式での結合ではこれは非常に強力です。mvPathを構築する場合、速度と効率性アップのためにできるだけ具体的にする必要があります。次の推奨事項を念頭に置いて行ってください。
要素またはプロパティが見つかりそうにない場合は、//ではなく//^を使用します。
特定の子コンテナの下から探す場合は、すべての子コンテナを検索するのではなく、パスにその子コンテナ名を入れます。つまり、.//c2ではなく./c1/c2を使用します。
目的のオブジェクトへのパスのわかっている部分がない場合は、単に式の先頭に//を付けます。

3.2.2 mvPathの例

次の例では、このクライアント・ナビゲータ・ビューの図に示すように、単純なデータ階層を使用します。

例のベースとして使用する階層のナビゲータ・ビュー

ここに表示されているもの以外に、config1.xmlとpropertyAはどちらもメタデータを持ちます。すべての例のコンテキストはFolder1で、これがProject1でハイライトされています。

3.2.2.1 コンテナ

次のように、コンテナを場所で参照します。

Asset1/*

Asset1のすべての子コンテナを返します。この例では、Resource Viewを返します。

.//*

現在のコンテナとその子コンテナすべてを返します。

..

Layer1、つまり現在のコンテナの親を返します。

../../*

Environment1(および兄弟関係がある場合はそれも)を返します。

次のように、コンテナを名前で参照します。

Asset1

現在のコンテナであるFolder1の下にあるAsset1を返します。

Asset1/Resource View/config1.xml

Asset1の下にあるconfig1.xmlを返します。

Asset1/Resource View/config1.xml/Primary View/Element1

config1.xmlのPrimary ViewにあるElement1を返します。これはAsset1のResource Viewの下にあります。ビューと要素のどちらも階層内のコンテナであることに注意してください。構成内の要素やプロパティにアクセスするには、ビューを指定する必要があります。

//config1.xml

システム全体からconfig1.xmlという名前のコンテナをすべて返します。

Asset1//^Primary View

Asset1の子であるが、構成または構成下ではないPrimary Viewという名前のコンテナをすべて返します。例では一致するものはないため、何も返されません。

/Project1

Project1という名前のルート・プロジェクトを返します。

//Primary View

システム全体からPrimary Viewという名前のコンテナをすべて返します。

.//Primary View

Primary Viewという名前の現在のコンテナの子すべてに加えて、コンテナの名前がPrimary Viewであればそのコンテナ自体も返します。

../Layer1

親コンテナを返します。

./"Asset"+"2"

Asset2を返します。

//-Layer1

Layer1を返しますが、Layer1の下位ではLayer1という名前の他のコンテナを探しません。

次のように、コンテナをコンテナの中身で参照します。

Asset1[Resource View/config1.xml]

Asset1がそのResource View内にconfig1.xmlという名前の子コンテナを持つ場合は、Asset1を返します。

Asset1/Resource View/config1.xml[CustomView]

config1.xmlがAsset1のResource Viewの子であり、かつCustomViewという名前の子コンテナを持つ場合は、config1.xmlを返します。

Asset1[Resource View/config1.xml/CustomView]

Asset1がそのResource View内にconfig1.xmlという名前の子コンテナを持ち、そのconfig1.xmlがCustomViewという名前の子コンテナを持つ場合は、Asset1を返します。

Asset1[Resource View/config1.xml/~metadata1]

Asset1がResource View内にconfig1.xmlという名前の子コンテナを持ち、そのconfig1.xmlがmetadata1という名前のメタデータを持つ場合は、Asset1を返します。

Asset1/Resource View/config1.xml[~metadata1]

metadata1という名前のメタデータを持つ場合は、config1.xmlを返します。

Asset1/Resource View/config1.xml[~metadata1="value1"]

値がvalue1のmetadata1という名前のメタデータを持つ場合は、config1.xmlを返します。

Asset1/Resource View/config1.xml[Primary View/@propertyA]

config1.xmlがAsset1の子で、Primary Viewという名前の子コンテナを持ち、それにpropertyAという名前のプロパティを含む場合は、config1.xmlを返します。

Asset1/Resource View/*[Primary View/@propertyA]

Asset1のResource Viewの子であり、Primary Viewという名前の子コンテナを持ち、それにpropertyAという名前のプロパティを含むコンテナをすべて返します。

Asset1/*[Primary View/@propertyA="valueA"]

Asset1のResource Viewの子であり、Primary Viewという名前の子コンテナを持ち、値がvalueAのpropertyAという名前のプロパティを含むコンテナをすべて返します。

./*/*/*[Primary View]

config1.xmlとconfig2.xmlの両方を返します。これらはどちらもワイルドカード・パスと一致し、どちらもPrimary Viewという名前のコンテナを含みます。

Asset1//[@propertyA="valueA"]

コンテナElement1を返します。これは値がvalueAのpropertyAを含みます。これはプロパティではなく、コンテナ(この場合は要素)を返すことに注意してください。

Asset1//[@propertyA="valueA"][@propertyB="valueB"]

コンテナElement1を返します。これは値がvalueAのpropertyAと値がvalueBのpropertyBを含みます。

次のように、コンテナをタイプで参照します。

Asset1/*[type()="organization"]

コンテナ・タイプorganizationを持つAsset1の子コンテナを返します。

次のように、コンテナを定義で参照します。

Asset1/*[def()="D1"]

Asset1の子で、定義D1を持つコンテナをすべて返します。

次のように、コンテナを名前で参照します。

Asset1/name()

現在のコンテナの下にあるAsset1の名前を返します。

Asset1/*/name()

Asset1の直下にあるすべてのコンテナの名前を返します。

次のように、コンテナのタイプを参照します。

Asset1/type()

Asset1のコンテナ・タイプを返します。

次のように、コンテナのIDを参照します。

Asset1/id()

Asset1のIDを返します。

3.2.2.2 プロパティ

次のように、プロパティを場所で参照します。

Asset1/Resource View/config1.xml/Primary View/Element1/@*

config1.xmlのPrimary ViewのElement1にあるすべてのプロパティを返します。

Asset1/Resource View/config1.xml/Primary View/*/@*

config1.xmlのPrimary Viewにあるすべてのプロパティを返します。

次のように、プロパティを名前で参照します。

Asset1/Resource View/config1.xml/Primary View/Element1/@propertyA

構成のElement1にあるpropertyAを返します。ビューは階層内のコンテナとみなされるため、要素やプロパティに到達するためにmvPathに含める必要があることに注意してください。つまり、プロパティはビューに含まれる要素(これはコンテナです)に含まれます。

Asset1//@propertyA

Asset1の下位にあるpropertyAという名前のすべてのプロパティを返します。例のデータでは、この名前のプロパティは他にないため、前の例と同じプロパティが返されます。

次のように、プロパティを値で参照します。

Asset1/Resource View/config1.xml/Primary View/Element1/@*[value()="valueA"]

値がvalueAのElement1にあるすべてのプロパティを返します。

次のように、プロパティを名前と値で参照します。

Asset1//@propertyA="valueA"

Asset1の子である、値がvalueAで名前がpropertyAのすべてのプロパティを返します。

次のように、プロパティをメタデータ名で参照します。

Asset1/Resource View/config1.xml/Primary View/Element1/@propertyA[~metadataA]

Element1にあるpropertyAがmetadataAという名前のメタデータを持つ場合は、propertyAを返します。

Asset1//*/@*[~metadataA]

Asset1の子で、metadataAという名前のメタデータを持つすべてのプロパティを返します。

次のように、プロパティをメタデータ名と値で参照します。

Asset1//*/@*[~metadataA="valueA"]

Asset1の子で、値がvalueAのmetadataAという名前のメタデータを持つすべてのプロパティを返します。

次のように、プロパティを定義で参照します。

Asset1/Resource View/config1.xml/Primary View/Element1/@*[def()="port"]

Element1内にある定義portを持つプロパティをすべて返します。

次のように、プロパティを同じ要素内の別のプロパティで参照します。

Asset1/Resource View/config1.xml/Primary View/Element1[@propertyB="valueB"]/@propertyA

Element1が値がvalueBのpropertyBを含む場合は、Element1内にあるpropertyAを返します。

次のように、プロパティの名前を参照します。

Asset1/Resource View/config1.xml/Primary View/Element1/@propertyA/name()

propertyAの名前を返します。

Asset1/Resource View/config1.xml/Primary View/Element1/@*/name()

Element1内にあるすべてのプロパティの名前を返します。

次のように、プロパティの値を返します。

Asset1/Resource View/config1.xml/Primary View/Element1/@propertyA/value()

Element1内にあるpropertyAの値を返します。

次のように、プロパティの定義を参照します。

Asset1/Resource View/config1.xml/Primary View/Element1/@propertyA/def()

propertyAという名前のプロパティのプロパティ定義を返します。(プロパティはプロパティ・ディクショナリ内の定義にリンクされています。)

次のように、プロパティのIDを参照します。

Asset1/Resource View/config1.xml/Primary View/Element1/@propertyA/id()

propertyAのIDを返します。

3.2.2.3 メタデータ

次のように、メタデータを場所で参照します。

Asset1/Resource View/config1.xml/~*

config1.xmlコンテナのすべてのコンテナ・メタデータを返します。

Asset1/Resource View/config1.xml/Primary View/Element1/propertyA/~*

propertyAという名前のプロパティのすべてのプロパティ・メタデータを返します。

次のように、メタデータを名前で参照します。

Asset1/Resource View/config1.xml/Primary View/Element1/@propertyA/~metadataA

構成のElement1にあるpropertyAのmetadataAを返します。

Asset1/Resource View/config1.xml/~metadata1

config1.xmlコンテナのmetadata1を返します。

次のように、メタデータを値で参照します。

Asset1/Resource View/config1.xml/~[value()="value1"]

config1.xmlコンテナ内にある、値がvalue1のすべてのメタデータを返します。

次のように、メタデータを名前と値で参照します。

Asset1//~metadata1="value1"

Asset1の子で、値がvalue1のmetadata1という名前のすべてのメタデータを返します。

次のように、メタデータ名を参照します。

Asset1/Resource View/config1.xml/Primary View/Element1/@propertyA/~metadataA/name()

propertyA上のmetadataAの名前を返します。

Asset1/Resource View/config1.xml/~*/name()

config1.xml内にあるすべてのメタデータの名前を返します。

次のように、メタデータ値を参照します。

Asset1/Resource View/config1.xml/Primary View/Element1/@propertyA/~metadataA/value()

Element1内にあるpropertyA上のmetadataAの値を返します。

Asset1/Resource View/config1.xml/~metadata1/value()

config1.xml内にあるmetadata1の値を返します。

次のように、メタデータIDを参照します。

Asset1/Resource View/config1.xml/Primary View/Element1/@propertyA/~metadataA/id()

metadataAのIDを返します。

3.2.2.4 コネクタ(ホスト、認証パック、リソース仕様)

構文:

[objectPath]operator("objectName")

説明:

objectPathは、objectNameへのオプションのパスです。パスはルートを参照します。つまり、/F1/F2/F3/…のように、/から開始します。

operatorは、次のいずれかです。

authpack
host
resourcespec

objectNameは、解決するオブジェクトのオプションの名前です。名前を指定しないと、指定したコンテキストに対して、ターゲット・タイプのすべてのオブジェクトが返されます。

次のように、コネクタを名前で参照します。

authpack("passport")

グローバルなネームスペースからpassportという名前の認証パックを返します。

次のように、コネクタを名前と場所で参照します。

/F1/F2/F3/resourcespec("xmlConfig")

フォルダ階層/F1/F2/F3/の下にあるxmlConfigという名前のリソース仕様を返します。

次のように、ターゲット・タイプのすべてのコネクタを参照します。

host()

グローバルなネームスペースにあるすべてのホストを返します。

/F1/F2/F3/host()

フォルダ階層/F1/F2/F3/の下にあるすべてのホストを返します。

3.2.2.5 文字列

文字列を返します。

"Your text string here."

文字列Your text string here.を返します。