接着上一篇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}" />
<validationrules>
<rule element="Title" regex="^.*[S]+.*$" message="${key.editor.errormessage.TestNews.mustnotempty}"/>
validationrules>
<mappings>
<mapping element="Title" mapto="property:Title" />
mappings>
<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)