Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

English README

MaiML Validator

MaiML Validator は、MaiML(Measurement Analysis Instrument Markup Language) ファイルを JIS K 0200 のスキーマで検証する Web アプリです。

HTML ファイルを Chrome / Edge で開くだけで動作し、追加のインストールは一切不要です。読み込んだ文書とスキーマがどこかに送信されることはありません。

MaiML Validator の検証結果(OK)


特徴

  • 本物の検証エンジン:lxml や xmllint コマンドと同じ libxml2 を WebAssembly にコンパイルして同梱。ブラウザ内で完結しながら、コマンドラインツールと同等の検証を行います
  • サーバー不要・インストール不要:HTML 1 ファイル。オフラインでも動作します
  • OK / WARN / ERROR の 3 段階判定:「検証できなかった箇所」を OK に埋没させず、かつ ERROR とも混同しません
  • XSD が表現できない MaiML の約束事もチェック:IDREF の解決、UUID の重複、<log> と <method> の対応など
  • エラー箇所へのジャンプ:行番号付きのエラーをクリックすると、ソース表示パネルの該当行へ移動します
  • スキーマのキャッシュ:一度読み込んだスキーマはブラウザに保存され、次回以降は読み込み不要です

使い方

インストール・実行

  1. MaiMLValidator.html をダウンロード
  2. ブラウザで直接開く(サーバー不要)
  3. または任意の Web サーバーで配信

スキーマ(XSD)の入手

スキーマは本ツールに同梱していません。 JIS K 0200 のスキーマ定義ファイルは、JAIMA(日本分析機器工業会)が運営する MaiML のサイトから入手します。

  1. https://www.maiml.org/ を開く
  2. 「ダウンロード」から申請フォームへ進む
  3. 氏名・メールアドレス・所属を入力し、プライバシーポリシーに同意して送信する
  4. ダウンロード画面へ遷移するので、スキーマ定義ファイル一式を取得する

取得した .xsd は一式まとめて本ツールに読み込ませます(次の「基本操作」を参照)。ただし、同じスキーマの別版や退避したコピーは含めないでください(「補足 › ルートスキーマの自動判定」を参照)。

なお、同サイトの英語ページからは、同じスキーマセットを MaiML-Schema-1_0.zip(16 KB)として申請フォームを経由せず直接ダウンロードできます。

📌 同サイトで配布されている LINQPad 版のスキーマチェックとは、別のツールです。 MaiML のサイトでは、LINQPad を使ったスキーマチェックの手順書とスクリプトも配布されています。MaiML Validator はそれとは独立に開発されたツールで、検証には libxml2(WebAssembly)を使い、ブラウザ内で完結します。手順書のスクリプトの代わりに使えますが、検証エンジンが異なるため、判定が完全に一致するとは限りません。

基本操作

  1. JIS K 0200 の .xsd スキーマファイルを読み込む ドラッグ&ドロップ、またはファイル選択で読み込みます。スキーマ一式を、すべてまとめて読み込ませてください。 どのファイルが必要かを利用者が判断する必要はありません。実際に文書から参照されているファイルだけが使われ、残りは無視されます。 読み込んだスキーマはブラウザ内(localStorage)にキャッシュされるので、次回以降は読み込み直す必要はありません。
  2. 検証したい .maiml または .xml 文書を読み込む
  3. 結果を確認する 色付きバッジが総合判定(OK / WARN / ERROR)を示し、サマリー行にはルートスキーマとして選ばれたファイル名が表示されます。
  4. エラー箇所へジャンプする 行番号付きのエラー・警告をクリックすると、下の Show source パネルで該当行へ移動します。
  5. 結果を保存する Copy report / Save report でプレーンテキストとして保存できます。

📌 ファイルはページのどこにドロップしても構いません。拡張子で自動的に振り分けられます(.xsd はスキーマ、.maiml / .xml は検証対象の文書)。


判定の 3 段階

MaiML Validator のエラー表示とソース参照

判定 意味
✅ OK いかなる問題も検出されなかった
⚠️ WARN スキーマ違反ではないが、完全に検証できなかった箇所がある、または誤りに見える記述がある
❌ ERROR 実際のスキーマ違反、または解決できない IDREF がある

WARN を OK からも ERROR からも意図的に分けています。 ERROR に含めるとスキーマ上は正当な文書を弾いてしまい、OK に含めると「このツールが検証できなかった部分」を黙って隠すことになるためです。

WARN になるのは次のいずれかです。

  • スキーマを読み込んでいない名前空間の要素が、xs:any processContents="lax" の開いたワイルドカードによって受理された(その中身は実際には検証されていない)
  • 下記「MaiML 固有のチェック」に該当した

検証する内容

スキーマ検証(libxml2)

要素・属性の名前、内容モデル、出現回数、順序、データ型、パターン、名前空間 — XSD による構造検証を一通り行います。

IDREF → ID の解決

libxml2 が行わない検証を、上に載せて独自に実装しています。 XSD の仕様は xs:IDREF が宣言済みの xs:ID を指していることを要求しており、Apache Xerces は cvc-id.1 として報告しますが、libxml2 はこれを検証しません。

MaiML ではペトリネットのアーク(arc/@source、arc/@target)やイベントログの参照がこの仕組みに依存しているため、参照先が存在しないという不具合が黙って通過してしまうのを防いでいます。

どの属性が ID / IDREF(S) 型かは読み込んだスキーマから読み取るので、スキーマの改訂に自動的に追随します。

MaiML 固有のチェック(WARN)

スキーマでは表現できない約束事を検査します。

チェック 内容
非 ASCII の識別子 ID / IDREF / QName 型の値に非 ASCII 文字が使われている。スキーマ上は正当ですが、MaiML のツール群で問題を起こすことが知られています
<uuid> の重複 同一文書内に同じ UUID が複数回現れる。<uuid> は個々のオブジェクトを一意に識別するためのものです
<log> と <method> の対応 JIS K 0200 6.5.2 は <method> 1 つに対して <log> 1 つを求めています。複数回の計測分析は <log> を増やすのではなく、その中の <trace> を並列に増やして表現します

検証しない内容

  • スキーマを読み込んでいない名前空間の中身(WARN として提示するところまで)
  • 上記以外の業務ルール(例:計測値が科学的に妥当かどうか)
  • XML 電子署名の検証 署名の構文はスキーマ検証の対象ですが、署名値やハッシュが内容と整合するかという検証は本ツールの機能ではありません。署名の検証は MaiMLStandaloneViewer が行います

スキーマ言語の版について

libxml2 が実装するのは XSD 1.0 です。これは JIS K 0200 のスキーマが書かれている W3C のスキーマ言語の版であり、MaiML 文書の版(ルート要素の version 属性)とは無関係です。読み込んだスキーマが記述する MaiML の版が、そのまま検証対象になります。

XSD 1.1 固有の構文(xs:assert、xs:alternative、xs:openContent、xs:override)を使ったスキーマは、該当する構文名と行番号を示して明示的にエラーになります。黙って無視することはありません。適用されていない規則に対して「妥当」と報告してしまう事態を避けるためです。

なお vc:minVersion="1.1" を宣言しているだけで上記の構文を使っていないスキーマは、通常どおり検証できます。


補足

ルートスキーマの自動判定

サマリー行の Root schema: は、検証対象の文書のルート要素と同名のグローバル要素を宣言しているスキーマファイルを探して決定しています。ファイル名を決め打ちしていないため、規格の改訂でファイル名が変わっても追随します。

同じルート要素を宣言するスキーマファイルが複数読み込まれていると一意に決定できません。同じファイルの別版(例:*_rev0.xsd / *_import.xsd、退避した原本のコピーなど)は取り除いてください。退避用の原本を同じフォルダに置く場合は、拡張子を .xsd.bak などに変えておくと安全です。

xs:import の補完

配布されているスキーマセットに xs:import 宣言が不足している場合、本ツールはメモリ上のコピーにだけそれを補ってから検証します。読み込んだファイルが書き換えられることはありません。

XSD では xmlns: による接頭辞の宣言だけでは他の名前空間の部品を参照できず、xs:import が別途必要です。この宣言が欠けていると厳格な処理系では名前空間の解決に失敗します。補完した内容は Copy report / Save report の出力に記録されます。


動作環境

項目 内容
ブラウザ Chrome / Edge を推奨
サーバー 不要(file:// で直接開けます)
ネットワーク 不要(オフラインで動作)
検証エンジン libxml2(WebAssembly)を同梱

オープンソースライセンス

本ツールは以下のオープンソースソフトウェアを同梱しています。各ライセンスの全文はアプリ内の Help パネルに掲載しています。

ソフトウェア ライセンス
libxml2 MIT
xmllint-wasm(libxml2 の WebAssembly ビルド) MIT

関連ツール

ツール 用途
MaiML Studio MaiML ファイルのデザイン・作成・エクスポート
MaiML Standalone Viewer MaiML ファイルの可視化・分析・署名検証

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages