RELAX NG
今回は文法構造に関する要素。 <grammar> <start> <define> <ref> <notAllowed> <div> <parentRef> <grammar> 要素, <start> 要素, <define> 要素 簡単なスキーマ定義の場合、定義対象の文書のルート要素を定義する <element> 要素を、スキーマ定義のルート要素にするのが簡単です: <element name="root" xmlns="http://relaxng.org/ns/structure/1.0"> <empty/> </element> しかし、複雑なスキーマ定義になると、以下のように </element></define></start></grammar></parentref></div></notallowed></ref></define></start></grammar>
今回も論理構造に関する要素。 <choice> <group> <interleave> <mixed> <choice> 要素 <choice> 要素は、子要素で定義されるパターンのうち、どれか1つを「選択」するパターンです。 次のスキーマ定義は <element name="parent" xmlns="http://relaxng.org/ns/structure/1.0"> <choice> <element name="child1"><empty/></element> <element name="child2"><empty/></element> </choice> </element></choice></choice></mixed></interleave></group></choice>
前回、RELAX NG に定義されている要素を分類しましたが、それぞれのカテゴリに属する要素を簡単に見ていきます(参考「RELAX NG 入門」)。今回は XML ノードを定義する要素。 <element> <empty> <attribute> <text> <element> 要素, <empty> 要素 <element> 要素は要素を定義する要素です。 @name 属性によって要素名を</element></empty></element></text></attribute></empty></element>…
今回は論理構造に関する要素。 <optional> <oneOrMore> <zeroOrMore> <optional> 要素 <optional> 要素は「あってもなくてもよい」パターンを定義します。 正規表現では「?」に対応します。 例えば、次のようなスキーマ定義は <element name="parent" xmlns="http://relaxng.org/ns/structure/1.0"> <optional> <element name="child"><empty/></element> </optional> </element> 次のどちらにもマッチします: </optional></optional></zeroormore></oneormore></optional>
次回以降で、RELAX NG スキーマの使い方を軽く見ていきますが、その前に、RELAX NG に定義されている要素を拙者の独断と偏見で幾つかのカテゴリーに分類しておきます: カテゴリー 要素 XML ノード element, attribute, text, empty 論理構造1 optional, one…
今回は Jing を使って、RELAX NG による XML 文書の妥当性検証を行う方法を見ていきます。 Jing の JAR ファイル等はこちらからダウンロードできます。 また、Maven2 で依存性に付加したい場合は、次のような <dependency> 要素を設定してください: <dependency> <groupId>thaiopensource</groupId> <artifactId>jing</artifactId></dependency></dependency>…
Java SE 6 での RELAX NG スキーマによる妥当性検証 以前の記事で RELAX NG を用いた妥当性検証の実行方法を見ました。 それには、以下のようにして SchemaFactory オブジェクトを取得する必要がありました: SchemaFactory factory = SchemaFactory.newInst…
前回、Maven2 プロジェクト内で RELAX NG による妥当性検証を行うために必要なライブラリの設定の仕方をみました。ただし、それらを毎回 POM ファイルに書くのは面倒なので、それらの依存性を別の POM プロジェクトに書いて、それを再利用できる用にしましょ…
RELAX NG を用いて妥当性検証を行うには、幾つかのライブラリを CLASSPATH に含める必要がありました。 必要なのは msv (multi schema validator) とその関連ライブラリ msv isorelax relaxngDatatype xsdlib それに加えて、msv と javax.xml.validation パ…
前回は W3C XML Schema を使って XML 文書の妥当性検証を行う方法を見ました。 ただし、 javax.xml.validation パッケージに定義されてあるクラス群は、スキーマ言語によらない妥当性検証の方法を提供することができます。 今回はそれなりに用いられるスキー…