ルールセットの定義

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  ユーザーマニュアル > DTD と XML スキーマ > スキーマルール >

ルールセットの定義

スキーマルールセットは(以下のスクリーンショットにあるように)スキーマルールエディターにて開き、編集することができます。スキーマルールセットファイル内にてスキーマルールを作成、編集、削除することができます。スキーマルールエディターでルールセットを開くには以下の操作を行ってください:

 

1.情報ウィンドウにてルールセットをリストから選択します。
2.そのルールセットのコンテキストメニューボタン ContextMenuButton をクリックします。
3.表示されるコンテキストメニューから、ルールセットを編集を選択します。

SchemaRuleEditorOview

スキーマルールエディターには2つのペインがあります:

 

(エディターの上部にある)ルールセットペインでは、ルールの追加や削除を行うことができます。対応する(「追加」 または 「挿入」)ボタンをクリックすることで、ルールを表す空の行が追加または挿入されます。ルールの削除を行うには、目的の行を選択した後ペインの右上にある 「削除」 ボタンをクリックします。このペイン内の各ルールには名前と、メッセージテキスト、そして(ルールの違反を発見した際にバリデーターがエラーまたは警告を返すかを決定する)重大度を入力するフィールドが存在します。
(エディターの下部にある)ルールペインには、上部のルールセットペインで選択されているルールの詳細が表示され、ルールの詳細を変更することができます。ルールの定義に関する詳細については、以下のルールの定義を参照ください。

 

ルールセットにあるルールの編集が完了したら、「保存」 をクリックしてルールセットファイルのルールを保存します。

 

ルールの定義

ルールの定義や編集を行うには、上部のルールセットペインからルールを選択します。選択されたルールの定義がルールペインに表示され、編集を行うことができるようになります。以下のスクリーンショットに示されるルールは以下のように定義されています:複合型が単純型の拡張であれば、Attribute Group の子を持たなければなりません。

SchemaRuleEditorDefinition

 

検証条件セットとフィルター条件セット:

 

各ルールには検証条件ならびにフィルター条件のセットがそれぞれ1つずつあります(上のスクリーンショットの第1列を参照)。
検証条件が評価されるにはフィルター条件のセットが真 (true) とならなければなりません。
条件の各セット(検証ならびにフィルター)は 1 つ以上の条件グループにより構成され、各条件グループには 1 つ以上の条件が含まれます。上のスクリーンショットの例では、1 つの条件が含まれる条件グループが検証セットにあり、各自 1 つの条件を持った3 つの条件グループがフィルターセットにはあります。以下のスクリーンショットでは、フィルターセットに3 つの条件グループが存在します:最初のグループには 2 つの条件、2 つ目のグループには 3 つ、そして最後のグループには 1 つの条件が含まれます。

SchemaRuleEdCondGrps1

(条件の左にある)not チェックボックスをクリックすることで各条件の否定を行うことができます。
条件グループにある論理演算子 and を使えば、グループ内の条件すべてが真となることで条件グループ全体が真として評価され、or では条件グループ内の条件が1つでも真と評価されれば条件グループ全体が真として評価されます。
(条件グループの倫理演算子の左にある)not チェックボックスをチェックすることで各条件グループの否定を行うことができます。
外側にある and 論理演算子を使えば(検証またはフィルター以下の)条件グループ全てが真となることで(検証またはフィルター)セット全体が真になり、or 論理演算子を使えば条件グループのうち1つが真であればセット全体が真となります。
外側にある(条件グループのための)コンボボックスの内容を変更することで論理演算子を変更することができます。内側の(条件グループ内の)論理演算子の値は外側の論理演算子とは逆のものに変更されます。
選択された条件を起点として条件グループまたは条件を追加、挿入することができます。条件を選択している状態で、(ペインの左上にある)「追加」 または 「挿入」 ボタンをクリックして、メニューから目的のアイテム(条件ループまたは条件)を選択します(以下のスクリーンショットを参照)。

SchemaRuleEditorAppendInsert

 

条件の種類

条件は以下のうちのどれかに分類されます(以下のスクリーンショットも参照):

 

コンポーネント(ドロップダウンリストの中で コンポーネント から始まるもの:以下のスクリーンショットを参照)
プロパティ(Property 値
コンポーネントとプロパティの混合(名前に PropertyComponent が入っているもの)

SchemaRuleEditorSubConditionsKind

(上のスクリーンショットにあるように)条件列のドロップダウンリストから条件の種類が選択されます。3つある条件の種類については以下の記述を参照ください。

 

コンポーネント条件

コンポーネントの条件(Component で始まる条件)では、(以下のスクリーンショットにあるように)コンポーネント列にてコンポーネントを指定する必要があります。コンポーネントフィールドにあるドロップダウンリストからコンポーネントを選択します。コンポーネント条件ではその他のフィールド(プロパティやコンパレーター)の値を指定する必要が無いので、他のフィールドはグレーで表示されます。

SchemaRuleEditorSubCondComp

上のスクリーンショットの例では、コンポーネントの種類が Element となっているものに対してフィルター条件が指定されています。例えば、これに加えて検証条件にコンポーネントは Notation という子を持たなければならないと指定されていれば、「Element コンポーネントは Notation という種類の子を持たなければならない」という条件が完成します。検証条件の not オプションがチェックされていれば、「Element コンポーネントは Notation という種類の子を持ってはならない」という条件になります。

 

プロパティ条件

プロパティの条件は(以下のスクリーンショットにあるように)プロパティ値で決定されます。このような条件ではプロパティの値そのものが指定されるため、プロパティならびにコンパレーター両方の列(そして必要な場合は値列)で入力を行う必要があります。コンポーネント列への入力を行う必要は無いのでグレーで表示されます。プロパティ列のドロップダウンリストに表示されるアイテムには(defaultmaxOccurs といった) XML 属性の他にも(derivedBy といった)コンポーネントの論理プロパティが含まれます。

SchemaRuleEditorSubCondProp

上のスクリーンショットでは model プロパティの値が all に等しいというルールが(not チェックボックスにより)否定されています。Model group コンポーネントに対するフィルター条件と組み合わせることで、スキーマは xsd:all 要素を含んでいけないという意味になります。

 

注意:以下の点に注意してください:

 

IsQNameEqualTo コンパレーターを使用するときは、対応する値を {URI}localName の形式で記述する必要があります。例えば、以下のような値になります: {http://www.w3.org/2001/XMLSchema}NOTATION
default プロパティは空の値と共に記述 (<element name default=""/>) 、または除外することができます (<element name/>)。

 

コンポーネントとプロパティを混合する条件

コンポーネントとプロパティの混合した条件は以下になります:

 

ComponentHasChildOfKindWithPropertyValue :子要素のコンポーネントの種類と、プロパティの値を指定します。
PropertyResolvesToComponentOfKind :コンポーネントの種類を解決するプロパティが指定されます。コンパレーターの列は空になります。

 

条件の否定

条件の左にある(内側の)not チェックボックスをチェックすることで、その条件は否定されます。条件グループの論理演算子の左(外側にある)not チェックボックスをチェックすることで、条件グループを否定することができます。

 


(C) 2018 Altova GmbH