2

我使用以下类执行 XSD XML 验证:

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();这又是特定于操作系统的。

Regional Settings例如,在 Microsoft Windows 上,您可以使用该窗口更改系统的默认区域设置。

如果需要,您可以通过指定user.languageuser.region系统属性覆盖 JVM 使用的“默认语言环境”(例如,-Duser.language=fr并使-Duser.region=CAJVM 产生“加拿大法语”作为默认语言环境。最终,此设置将到达 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 回答