[UMS 20060816 版リリース] Mitsuhiro TOYODA


機能拡張

UMS ファイルの記述ミスを検出する機能の強化

コード生成時に、UMS ファイルのバリデートを行うようにしました。 invalid の時のみエラーメッセージを表示し、valid の場合は何も表示しません。

バリデートには、MSV( http://java.sun.com/xml/ ) と Jing( http://www.thaiopensource.com/relaxng/jing.html ) というフリーのバリデータを使用しています。

  (例) <txt:data/> を <txt:dat/> と記述ミスした場合のメッセージ

   -------------------------------------------------------------
    [MSV]
    # Error - scm_ce.ums line:24 column:32
        要素"txt:dat"はここには書けません。書けるのは: <bit>,<byte>,<callFunction>,<choice>,<data>,<empty>,<group>,<interleave>,<list>,<oneOrMore>,<optional>,<ref>,<value-of>,<value>,<zeroOrMore>などです
    -------------------------------------------------------------
    -------------------------------------------------------------
    [Jing]
    # Error - scm_ce.ums line:24 column:32
        element "dat" from namespace "http://ums.isas.jaxa.jp/0.4/dat"; not allowed in this context
    -------------------------------------------------------------

define/ref 展開、単純化後の妥当性検証

define/ref 展開、単純化後の RELAX NG スキーマを用意し、 コード生成時にバリデートするようにしました。 この処理も、MSV と Jing というバリデータを使用しています。

この時出力されるエラーメッセージは、define/ref展開、単純化前の UMS ファイルの行番号、列番号を表示します。

制約チェックの追加

UMS 仕様書 「7.15 start 要素」の制約を満たさない場合に、エラーとする処理を追加しました。

以下の経路はエラーとなります。

  start//interleave

しかし以下の経路は、単純化の過程で bit・byte 要素が define 要素の子要素になるため、 許されます。

  start//byte//interleave


その他の改修

XSLT 変換処理の中断時に出力される Java のスタックトレース除去

XSLT 変換処理中にエラーを検出し、処理を中断した際に、標準出力に Java のスタックトレース が出力されていました。 これにより、ログの可読性が落ちていたため、スタックトレースを出力しないようにしました。

  (例)encode 属性を親子関係中で2回定義していた場合

  file:///foo/bar/build/xslt/m4/common.xsl; 行番号205; 列番号34;
  # Error - file:///foo/bar/testAll/testcase/0308/test/byte_align/01/clng/scm_ce.ums line:15 column:77
    <txt:data> @encode is defined 2 times.
  XSLT error.

sample/ 中の MSV と Jing による validate ステップの除去

validate 処理を codeGenerator 内に取り込んだため、sample/ 配下の Makefile、 build.xml 中に記述されていた、validate のステップを除去しました。

以上