第143章 Schematron


Schematron コンポーネント

Camel 2.14 から利用可能
Schematron は XML インスタンスドキュメントを検証する XML ベースの言語です。これは、XML ドキュメントのデータに関するアサーションを作成するために使用され、運用ルールとビジネスルールの表現にも使用されます。Schematron は ISO Standard です。schematron コンポーネントは、ISO schematron の主要な 実装 を使用します。これは XSLT ベースの実装です。schematron ルールは 4 つの XSLT パイプライン で実行されます。これは、XML ドキュメントに対してアサーションを実行するためのベースとして使用される最終的な XSLT を生成します。コンポーネントは、エンドポイントの開始時に Schematron ルールが読み込まれるように記述されます(一度のみ)。これは、ルールを表す Java テンプレートオブジェクトをインスタンス化するオーバーヘッドを最小限に抑えることです。

URI 形式

schematron://path?[options]
Copy to Clipboard Toggle word wrap

URI オプション

Expand
名前
デフォルト値
説明
path
必須
schematron ルールファイルへのパス。ファイルシステムのクラスパスまたは場所のいずれかになります。
強制終了
false
ルートを中止し、スキーマ検証例外を出力するフラグ。

Headers

Expand
名前
説明
タイプ
In/Out
CamelSchematronValidationStatus
schematron 検証ステータス:SUCCESS / FAILED
文字列
IN
CamelSchematronValidationReport
XML 形式のスキーマレポートボディー。以下の例を参照してください。
文字列
IN

URI およびパス構文

以下の例は、Java DSL で schematron プロセッサーを呼び出す方法を示しています。schematron ルールファイルはクラスパスから取得されます。
from("direct:start").to("schematron://sch/schematron.sch").to("mock:result")
Copy to Clipboard Toggle word wrap
以下の例は、XML DSL で schematron プロセッサーを呼び出す方法を示しています。スキーマルールファイルは、ファイルシステムから取得されます。
<route>
   <from uri="direct:start" />
   <to uri="schematron:///usr/local/sch/schematron.sch" />
   <log message="Schematron validation status: ${in.header.CamelSchematronValidationStatus}" />
   <choice>
      <when>
         <simple>${in.header.CamelSchematronValidationStatus} == 'SUCCESS'</simple>
         <to uri="mock:success" />
      </when>
      <otherwise>
         <log message="Failed schematron validation" />
         <setBody>
            <header>CamelSchematronValidationReport</header>
         </setBody>
         <to uri="mock:failure" />
      </otherwise>
   </choice>
</route>
Copy to Clipboard Toggle word wrap
schematron ルールの保存先
Schematron ルールはビジネス要件で変更できるため、これらのルールをファイルシステムのどこかに保存することが推奨されます。schematron コンポーネントのエンドポイントが起動すると、ルールは Java Templates Object として XSLT にコンパイルされます。これは、Java テンプレートオブジェクトのインスタンス化のオーバーヘッドを最小限にするために 1 回のみ実行されます。これは、大規模なルールセットのコストのかかる操作であり、プロセスが XSLT 変換 の 4 つのパイプラインを通過することです。したがって、更新をファイルシステムに保存する場合は、ルートまたはコンポーネントを再起動する必要があります。ただし、これらのルールをクラスパスに保存するには害はありませんが、変更を取得するにはコンポーネントをビルドし、デプロイする必要があります。

Schematron ルールおよびレポートサンプル

schematron ルールの例を以下に示します。
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://purl.oclc.org/dsdl/schematron">
   <title>Check Sections 12/07</title>
   <pattern id="section-check">
      <rule context="section">
         <assert test="title">This section has no title</assert>
         <assert test="para">This section has no paragraphs</assert>
      </rule>
   </pattern>
</schema>
Copy to Clipboard Toggle word wrap
以下は、schematron レポートの例です。
<?xml version="1.0" encoding="UTF-8"?>
<svrl:schematron-output xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
 xmlns:iso="http://purl.oclc.org/dsdl/schematron"
 xmlns:saxon="http://saxon.sf.net/"
 xmlns:schold="http://www.ascc.net/xml/schematron"
 xmlns:xhtml="http://www.w3.org/1999/xhtml"
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema" schemaVersion="" title="">
   
   <svrl:active-pattern document="" />
   <svrl:fired-rule context="chapter" />
   <svrl:failed-assert test="title" location="/doc[1]/chapter[1]">
      <svrl:text>A chapter should have a title</svrl:text>
   </svrl:failed-assert>
   <svrl:fired-rule context="chapter" />
   <svrl:failed-assert test="title" location="/doc[1]/chapter[2]">
      <svrl:text>A chapter should have a title</svrl:text>
   </svrl:failed-assert>
   <svrl:fired-rule context="chapter" />
</svrl:schematron-output>
Copy to Clipboard Toggle word wrap
関連リンクおよびリソース
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat