该文档的最初出处OpenCms邮件列表
从OpenCms6.0以后,验证XML的内容的时候,你可以自定义验证规则取代系统自带的基于正则表达式的验证规则。你仅仅需要在XSD指定自己的XML内容处理器类,就可以做到这一点:
定义一个实现org.opencms.xml.content.I_CmsXmlContentHandler 接口的处理器。
如果你需要一个特殊的验证,扩展默认的内容处理器,重写必须的方法是一个非常好的主意。请看下面的实例
从OpenCms6.0以后,验证XML的内容的时候,你可以自定义验证规则取代系统自带的基于正则表达式的验证规则。你仅仅需要在XSD指定自己的XML内容处理器类,就可以做到这一点:
<xsd:annotation>
<xsd:appinfo>
<handler class="my.own.XmlContentHandlerImplementationClassNameGoesHere" />
... Other nodes as required ...
</xsd:appinfo>
</xsd:annotation>
定义一个实现org.opencms.xml.content.I_CmsXmlContentHandler 接口的处理器。
如果你需要一个特殊的验证,扩展默认的内容处理器,重写必须的方法是一个非常好的主意。请看下面的实例
public class XmlContentHandlerImplementationClassNameGoesHere extends org.opencms.xml.content.CmsDefaultXmlContentHandler {
public XmlContentHandlerImplementationClassNameGoesHere() {
super();
}
public CmsXmlContentErrorHandler resolveValidation(
CmsObject cms,
I_CmsXmlContentValue value,
CmsXmlContentErrorHandler errorHandler) {
if (errorHandler == null) {
// init a new error handler if required
errorHandler = new CmsXmlContentErrorHandler();
}
if (value.getName().equals("NameOfTheXmlNodeIAmInterestedIn")) {
if ("BadValue".equals(value.getStringValue(cms))) {
errorHandler.addError(value, "The interesting node has a bad value!");
}
} else {
errorHandler = super.resolveValidation(cms, value, errorHandler);
}
// return the result
return errorHandler;
}
}
本博将稳定更新,欢迎大家关注博客和
OpenCms 中文网