Schematron は、 XMLツリー内のパターンの有無をアサーションするためのルールベースの検証言語です。これは、少数の要素とXPath言語を使用して XML で表現される構造スキーマ言語です。多くの実装では、Schematron XML はXSLTコードに処理され、XSLT を使用できるあらゆる場所に展開されます。
Schematron は、 XML SchemaやDTDなどの他の XML スキーマ言語ではできない方法で制約を表現できます。たとえば、要素のコンテンツがその兄弟のいずれかによって制御されることを要求できます。または、ルート要素がどの要素であるかに関係なく、特定の属性を持つ必要があることを要求または要求できます。Schematron は、複数の XML ファイル間の必要な関係を指定することもできます。制約とコンテンツ ルールは、「平易な英語」(または任意の言語) の検証エラー メッセージに関連付けることができ、数値 Schematron エラー コードを意味のあるユーザー エラー メッセージに変換できます。Schematron のユーザーは、すべてのエラー メッセージを自分で定義します。[1]
現在のISO推奨事項は、情報技術、ドキュメント スキーマ定義言語 (DSDL)、パート 3:ルールベースの検証、Schematron (ISO/IEC 19757-3:2020) です。
用途
制約は、XSLT コードとして展開できる XPath ベースの言語を使用して Schematron で指定されるため、次のようなアプリケーションに実用的です。
- 構造検証の補助
- 共起制約、非正規制約、文書間制約をテストすることで、SchematronはDTD、RELAX NG、XML Schemaなどの言語で表現できる検証を拡張することができます。[2]
- 軽量ビジネスルールエンジン
- Schematron は包括的なReteルール エンジンではありませんが、XML ドキュメントを使用して複雑な構造に関するルールを表現するために使用できます。
- XML エディターの構文強調表示ルール
- 一部の XML エディターは、Schematron ルールを使用して、XML ファイルのエラーを条件付きで強調表示します。すべての XML エディターが Schematron をサポートしているわけではありません。
バージョン
Schematron は、台湾の中央研究院コンピューティング センターに在籍していたRick Jelliffeによって発明されました。彼は Schematron を「他のスキーマ言語では到達できない部分に到達するための羽根ぼうき」と表現しました。
Schematron の最も一般的なバージョンは次のとおりです。
- スキーマトロン 1.0 (1999)
- Schematron 1.3 (2000): このバージョンでは、名前空間http://xml.ascc.net/schematron/ が使用されました。プラグイン アーキテクチャによる XSLT 実装によってサポートされていました。
- Schematron 1.5 (2001): このバージョンは広く実装されており、現在でも見つかります。
- Schematron 1.6 (2002): このバージョンは ISO Schematron のベースであり、ISO Schematron によって廃止されました。
- ISO Schematron (2006): このバージョンではいくつかの機能が標準化され、XML出力形式であるSchematron Validation Report Language (SVRL)が提供されています。[3]新しい名前空間http://purl.oclc.org/dsdl/schematronを使用します。
- ISO スキーマトロン (2010)
- ISO Schematron (2016): このバージョンでは、XSLT2 のサポートが追加されました。
- ISO Schematron (2020): このバージョンでは、XSLT3 のサポートが追加されました。
ISO 標準としての Schematron
Schematron は、情報技術、ドキュメント スキーマ定義言語 (DSDL)、パート 3:ルールベースの検証、Schematron (ISO/IEC 19757-3:2020) として ISO によって標準化されています。
この規格は現在、ISO 公開仕様リストに掲載されていません。紙のバージョンは ISO または国家標準化団体から購入できます。
ISO/IEC FDIS 19757-3 を使用するスキーマでは、次の名前空間を使用する必要があります。
http://purl.oclc.org/dsdl/schematron
サンプルルール
Schematron ルールは、標準の XML エディターまたはXFormsアプリケーションを使用して作成できます。以下はサンプル スキーマです。
<schema xmlns= "http://purl.oclc.org/dsdl/schematron" > <pattern> <title>日付ルール</title> <rule context= "Contract" > <assert test= "ContractDate > current-date()" >将来の契約は許可されないため、ContractDateは過去の日付にする
必要があります。</assert> </rule> </pattern> </schema>
このルールは、 ContractDate XML 要素の日付が現在の日付より前であることを確認します。このルールが失敗すると検証は失敗し、アサート要素の本文であるエラー メッセージがユーザーに返されます。
実装
SchematronスキーマはXMLパイプラインでの使用に適しており、ワークフロープロセス設計者はXML操作ツールを使用してルールを構築および維持できます。たとえば、W3CのXProcパイプライン言語は、「validate-with-schematron」ステップを通じてSchematronスキーマ処理をネイティブにサポートしています。[4]
Schematron スキーマはXSLTスタイルシートに変換できるため、XSLT 変換をサポートする XML パイプラインで使用できます。Apache Antタスクを使用して、Schematron ルールを XSLT ファイルに変換できます。
Innovimax/ INRIAの Java 実装であるQuiXSchematron のような、ストリーミングも行うネイティブ Schematron 実装も存在します。
参照
- XML スキーマ言語の比較- 他の XML スキーマ言語との比較。
- サービス モデリング言語- サービス モデリング言語は Schematron を使用します。
- ドキュメントスキーマ定義言語
参考文献
- ^ Siegel, Erik (2022). Schematron: XML を検証するための言語。デンバー、コロラド州: XML Press。ISBN 978-1-937434-81-6。
- ^ Fennell, Philip (2014 年 6 月)。「Schematron - 思ったよりも便利」。XML London 2014 : 103–112。doi : 10.14337 / XMLLondon14.Fennell01。ISBN 978-0-9926471-1-7。
- ^ パート 3: ルールベースの検証 — Schematron (ISO/IEC 19757-3:2006) (zip)、情報技術 — 文書スキーマ定義言語 (DSDL)、ISO/IEC、2006-06-01、2014-06-15取得
- ^ "7.2.5 p:validate-with-schematron". XProc: XML パイプライン言語。World Wide Web Consortium。2010年 5 月 11 日。2012年 11 月 12 日閲覧。
外部リンク
- 中央研究院コンピューティングセンターの Schematron ホームページ
- Schematron に関する本 (ドイツ語)
- Schematron オンラインチュートリアルとリファレンス
