2

次のクラスを使用してXSDXML検証を実行します。

import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;

問題は、バリデーターによって返されるXSDエラーメッセージが常に英語であるということです。JAXP APIを使用してロケール対応の検証を呼び出すことは可能ですか?

4

3 に答える 3

1

JAXPはAPIです。Apache Xercesローカリゼーション対応のメッセージを提供するのは、実際の実装(たとえば)次第です。

ただし、通常、システムレベルのライブラリと実装(JAXPやXercesなど)は、システムのデフォルトロケール(式から返されるもの)に基づいてローカライズされたメッセージを提供しますjava.util.Locale.getDefault()。これもOS固有です。

たとえば、Microsoft Windowsでは、Regional Settingsウィンドウを使用してシステムのデフォルトロケールを変更できます。

user.language必要に応じて、およびシステムプロパティを指定することで、JVMが使用する「デフォルトロケール」をオーバーライドできますuser.region(たとえば、-Duser.language=frJVM-Duser.region=CAがデフォルトロケールとして「カナダフランス語」を生成するようにします。最終的に、この設定はJAXPのコードになります。 .Xercesがカナダフランス語のリソースバンドルを提供している場合、カナダフランス語のメッセージが発行されます。

于 2010-10-23T03:40:10.560 に答える
1

java.xml \ com \ sun \ org \ apache \ xerces \ internal \ impl \ msg \ XMLSchemaMessages_ja.properties内にリソースファイルが存在する場合にのみ、日本語でエラーメッセージを出力する必要がありますが、言語を追加する方法が見つかりませんでした。

Validator validator = schema.newValidator();
validator.setErrorHandler(errorHandler);
validator.setProperty("http://apache.org/xml/properties/locale", Locale.forLanguageTag("ja"));

それが役に立てば幸い。

于 2020-05-05T17:20:22.513 に答える
0

どうやら私が望むことを達成する方法はありません。

于 2011-01-19T11:34:42.883 に答える