2009-07-22 18 views
1

提供されているRELAXNGスキーマに対してXMLファイルを検証したいと考えています。ネットを検索すると、適切なスキーマ言語を提供することによって、SchemaFactoryを使用してSchemaインスタンスを作成するヒントが得られました。だから私の必要条件ごとに私は使用した:XML検証

SchemaFactory.newInstance(XMLConstants.RELAXNG_NS_URI);

が、次の例外が実行時にスローされました:スレッド「メイン」java.lang.IllegalArgumentExceptionがで

例外:で指定されたスキーマ言語を実装していませんするSchemaFactory:http://relaxng.org/ns/structure/1.0はjavaxので
をロードすることができました。 xml.validation.SchemaFactory.newInstance(SchemaFactory.java:207)

私はJava6を使用しており、 'W3C_XML_SCHEMA_NS_URI'のみが動作することを確認しました。すべてのスキーマURIを休止すると、同様の例外がスローされます。

私はXML検証APIの使用についてかなり新しいです。私はそれを正しくやっていない場合に備えて、誰かが私に適切な使用法を教えてもらえますか?

おかげ&よろしく、
芥屋

答えて

2

RNGが悪いのJavaのAPIでサポートされて、それは本当にトラクションをやったことがなかったです。私はそれを処理するJava API実装がないことを知っています。スキーマをXMLスキーマ(Trangなどを使用して)に変換してから検証することをお勧めします。

+0

こんにちは、 お返事ありがとうございます。私はTrangにxngをxsdに変換するように提案しました。しかし、私はそれを実行するエラーを取得します。次のコマンドはエラーがあります: $ java -jar trang.jar -I rng -O xsd config_schema.rng config_schema.xsd xml-validation/trang-20081028/config_schema.rng:1:1:fatal:内容は次のとおりですプロローグでは許可されません。 $ 上記のエラーに関する提案をいただけますか? –

+0

ファイルの開始とスキーマ定義の開始の間に空白やコメントがないことを確認してください。 – skaffman

+0

ありがとうございます。空白とは別に.rncの代わりに.rng拡張子も使用していました。適切な拡張機能を使用すると、RNGスキーマがXSDに変換されました。 –

0

XMLスキーマほど広くはサポートされていません。最初にXSDを使うことを常に考えなければなりません。

+0

しかし、RNGは書くのがずっと簡単です。 RNGで記述し、後でXSDに変換するのは有効な概念です。 – skaffman

+0

私はそれを試してみるべきです!私はいくつかの巨大なXSDを書いています... – T0xicCode

+0

実際に、そのRNC(RelaxNG Compact)は簡単なものです – skaffman

0

msvはJavaにあります。私はそれがあなたが使用できる明確なAPIを持っていると思うが、私はコマンドラインとスクリプトでそれを使用したことがある。

0

カワグチコウスケ氏は、どうやら私は、Java 6を使用してXMLベースのRelaxNGスキーマに対する文書の検証で成功を収めてきたherehere