接着上一篇OpenCms自定义结构化类型的创建,我们来进一步完善自定义的“TestNews”类型,主要是完成对自定义字段的数据验证、数据映射和默认值设置,完善后的XSD代码如下:
< xsd:schema xmlns:xsd ="http://www.w3.org/2001/XMLSchema" elementFormDefault ="qualified" >
< xsd:include schemaLocation ="opencms://opencms-xmlcontent.xsd" />
< xsd:element name ="TestNewss" type ="OpenCmsTestNewss" />
< xsd:complexType name ="OpenCmsTestNewss" >
< xsd:sequence >
< xsd:element name ="TestNews" type ="OpenCmsTestNews" minOccurs ="0" maxOccurs ="unbounded" />
</ xsd:sequence >
</ xsd:complexType >
< xsd:complexType name ="OpenCmsTestNews" >
< xsd:sequence >
< xsd:element name ="Title" type ="OpenCmsString" />
< xsd:element name ="Date" type ="OpenCmsDateTime" />
< xsd:element name ="Text" type ="OpenCmsHtml" />
</ xsd:sequence >
< xsd:attribute name ="language" type ="OpenCmsLocale" use ="required" />
</ xsd:complexType >
< xsd:annotation >
< xsd:appinfo >
< resourcebundle name ="org.opencms.testnews.workplace" />
< preview uri ="${previewtempfile}" />
<!-- 验证开始,验证标题(Title)不能为空 -->
< validationrules >
< rule element ="Title" regex ="^.*[S]+.*$" message ="${key.editor.errormessage.TestNews.mustnotempty}" />
<!-- 验证结束 -->
</ validationrules >
<!-- 映射开始,映射字段Title信息至属性“Title” -->
< mappings >
< mapping element ="Title" mapto ="property:Title" />
</ mappings >
<!-- 映射结束 -->
<!-- 默认值设置开始,设置字段Date默认值为当前时间 -->
< defaults >
< default element ="Date" value ="${currenttime}" />
</ defaults >
<!-- 默认值设置结束 -->
</ xsd:appinfo >
</ xsd:annotation >
</ xsd:schema >
数据验证由正则表达式完成,如上述代码中的regex="^.*[S]+.*$" ,提示信息由“message="${key.editor.errormessage.TestNews.mustnotempty}”设置,需要在worlkplace.properties中增加 “editor.errormessage.TestNews.mustnotempty=标题不允许为空!”,这样在编辑TestNews类型新闻时,如果为空,编辑器即会提示错误信息,如下图:
映射字段Title信息至属性“Title,也就是在工作区中右侧资源列表中的标题字段显示的就是TextNews中标题信息的内容。
设置字段Date默认值中,value="${currenttime}为系统定义的宏,取得是系统的当前时间。
(谢谢关注OpenCms——中文资源第一博客http://blog.csdn.net/qianxuncms/,欢迎与作者直接交流,共同进步。MSN:qianxuncms@hotmail.com,QQ:9165456)