スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
公開: --年--月--日, カテゴリ: スポンサー広告

Rcomageガイド(12) Compileエラーの例と解消方法

以前公開したRcomageのエラーメッセージという記事を読み返して、エラーメッセージを列挙するだけではどうも具体性に欠け資料として役立てにくいと感じたので、この記事ではよく起こりがちなエラーを抜粋し、何故エラー判定されるのかという理由とそれを解消するために何を修正する必要があるのかを例に挙げて紹介する。

Rcomageの出力するエラーの種類には大きく分けると二つある。一つはXML文書として不正(Invalid)である場合、もう一つはRcomageの仕様に対して不正である場合だ。次章より、それぞれに幾つかの例題を挙げて説明する。

XMLの仕様に適合していない

ここで示す例は、Rcomage独自のエラーではなくXMLとして誤りがある(妥当ではない)場合に出力されるもので、パーサーエラー(parser error)と呼ばれる。

例1. 開始タグと終了タグの不一致

<ImageTree></imageTree>

上記の記述をしたsource.xmlからRCOファイルをCompileすると以下のエラーを出力する。

file:///K:/voidspace/resource/source.xml:17: parser error : Opening and ending tag mismatch: ImageTree line 10 and imageTree
		</imageTree>
		  ^
Error: Can't parse given XML file K:/voidspace/resource/source.xml.
Error: Could not read in XML file 'K:/voidspace/resource/source.xml'.

XML文書では要素及び属性の表記が大文字と小文字で厳格に区別される(case-sensitive)。例えば <ImageTree> と <imageTree> とは異なるタグとして解釈されるため、開始タグと終了タグの不一致とみなされ上記ようなエラーとなってしまう。このエラーを解消するためには以下のとおりに修正すればよい。

<ImageTree></ImageTree>

例2. タグが終結していない

下記の記述でも開始タグと終了タグの不一致のエラーが出力される。

<Image name="tex_null" src="tex_null.png" format="gim" compression="zlib" unknownByte="0">

XML文書ではいかなる要素も終了タグの省略は許されない。これは空要素(内容を持たない要素)でも同様で、例えば<Image></Image>や<Image/>のように、終了タグを持つか、または開始タグが/>で終結していなければならない。上記の記述を修正すると以下のとおりとなる。

<Image name="tex_null" src="tex_null.png" format="gim" compression="zlib" unknownByte="0"/>

例3. 属性値が引用符で括られていない

<MainTree name=system_plugin_bg></MainTree>

上記の記述をしたsource.xmlからRCOファイルをCompileすると以下のエラーを出力する。


file:///K:/voidspace/resource/source.xml:4: parser error : AttValue: " or ' expected
	<MainTree name=system_plugin_bg>
	               ^
file:///K:/voidspace/resource/source.xml:4: parser error : attributes construct error
	<MainTree name=system_plugin_bg>

XML文書では属性値は必ず単引用符(')または二重引用符(")で括られていなければならない。上記のエラーを解消するためには以下のように修正すればよい。

<MainTree name="system_plugin_bg"></MainTree>

Rcomageの仕様に適合していない

ここで示す例は、Rcomage独自のエラーで、たとえXML文書として妥当であったとしてもこちらで誤りがあればRCOファイルをCompileすることができない。

例1. 記述した値が認められていない

<Image name="tex_null" src="tex_null.png" format="nothing" compression="zlib" unknownByte="0" />

上記の記述をしたsource.xmlからRCOファイルをCompileすると以下のエラーを出力する。

Warning: [line 6] Unrecognised value 'nothing'

属性によって記述できる値は決められている。format属性の値にnothingは認められていない。上記のエラーを解消するためには以下のように修正すればよい。

<Image name="tex_null" src="tex_null.png" format="gim" compression="zlib" unknownByte="0" />

また、format属性の値として認められるものについては、miscmap.iniで定義されている。

例2. 要素、属性名が設定ファイルの内容と適合していない

Rcomage独自のエラーの中でもよくあるもののひとつ。このエラーはRcomageのバージョンや個々の設定により条件が異なる場合があり、ここで示す例のとおりではないこともあり得る。

<Fireevent event="anim:null"/>

上記の記述をしたsource.xmlからRCOファイルをCompileすると以下のエラーを出力する。

Error: [line 9] Unknown entry type 'Fireevent'
Warning: [line 9] Missing attribute 'object', defaulting to 0 / nothing.

Rcomageは登録されていない要素や属性を見付けるとエラーを出力しCompileをしない。この記述で誤りのある箇所はふたつ。ひとつは要素名の誤りで、Fireevent要素は通常のRcomageでは利用可能な要素として登録されていない。これはFireEvent要素の誤り。もうひとつは属性名の誤りで、event属性ではなくobject属性の誤り(ただし、バージョンにより異なる)。これらを修正すると以下のとおりとなる。

<FireEvent object="anim:null"/>

なお、設定ファイルの記述についてはRcomageガイド(11) rcomageXMLの要素及び属性の定義を参照のこと。

例3. 参照値が存在しない

<Page name="sample" unknownInt0="0x111" onInit="nothing" onCancel="nothing" onContextMenu="nothing" onActivate="anim:not_found"></Page>

上記の記述をしたsource.xmlからRCOファイルをCompileすると以下のエラーを出力する。

Warning: [entry-reference] Cannot find entry with label 'not_found'!

オブジェクト系要素の持つ一部の属性には、他の要素の属性値を参照するものがある(name参照属性)。参照元の値が対応する要素中のいずれにも一致しない場合、このエラーを出力する。ここで示すエラーを解消するためには以下のように参照先に対応する値を用意すればよい。

<AnimTree>
    <Animation name="not_found" />
</AnimTree>

また、このname参照属性の値の組み合わせは属性ごとに異なる。以下に、参照元と有効な参照先の種類として許容される属性の一部を以下に挙げる。

  • image属性が参照できるのはImage要素のみである。
  • text属性が参照できるのは外部Text要素のみである。
  • model属性が参照できるのはModel要素のみである。
  • onLoad属性が参照できるのはAnimation要素とVSMXFile要素と外部モジュール(*.prx)の組み込みイベントのみである。
公開: 2011年06月02日, カテゴリ: Rcomageガイド