前一篇文章我们建立了一个内容类型模块,提供了内容类型模块下载。今天我们来理解一下XSD纲要文件的意思。
先来看看纲要文件及其解释
<!-- ========================================================
BlogEntry 类型定义
========================================================== -->
<!-- 1. 根元素 -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<!-- 2. 定义内嵌类型架构文件的位置,系统自带的和自定义两个部分 -->
<!-- 2.1 系统定义数据类型 -->
<xsd:include schemaLocation="opencms://opencms-xmlcontent.xsd" />
<!-- 2.2 用户自定义数据类型 -->
<xsd:include schemaLocation="opencms://system/modules/org.jsoss.v9.components/schemas/nested/image.xsd"/>
<xsd:include schemaLocation="opencms://system/modules/org.jsoss.v9.components/schemas/nested/video.xsd"/>
<xsd:include schemaLocation="opencms://system/modules/org.jsoss.v9.components/schemas/nested/attachment.xsd"/>
<xsd:include schemaLocation="opencms://system/modules/org.jsoss.v9.components/schemas/nested/link.xsd"/>
<xsd:include schemaLocation="opencms://system/modules/org.jsoss.v9.components/schemas/nested/paragraph.xsd"/>
<xsd:include schemaLocation="opencms://system/modules/org.jsoss.v9.components/schemas/nested/availability.xsd" />
<!-- 3. 根元素的名称和类型,类型必须以OpenCms开头 -->
<xsd:element name="JsossArticles" type="OpenCmsJsossArticles" />
<!-- 4. 定义上面提到的类型 -->
<xsd:complexType name="OpenCmsJsossArticles">
<xsd:sequence>
<xsd:element name="JsossArticle" type="OpenCmsJsossArticle" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<!-- 5. 数据字段定义 -->
<xsd:complexType name="OpenCmsJsossArticle">
<xsd:sequence>
<xsd:element name="Title" type="OpenCmsString" />
<xsd:element name="Subtitle" type="OpenCmsString" minOccurs="0"/>
<xsd:element name="Author" type="OpenCmsString" />
<xsd:element name="Editor" type="OpenCmsString" />
<xsd:element name="Summary" type="OpenCmsString" />
<xsd:element name="Paragraph" type="OpenCmsJsossParagraph" maxOccurs="unbounded"/>
<xsd:element name="Image" type="OpenCmsJsossImage" minOccurs="0"/>
<xsd:element name="Thumbnail" type="OpenCmsJsossImage" minOccurs="0"/>
<xsd:element name="Video" type="OpenCmsJsossVideo" minOccurs="0"/>
<xsd:element name="Attachment" type="OpenCmsJsossAttachment" minOccurs="0" maxOccurs="5"/>
<xsd:element name="Link" type="OpenCmsJsossLink" minOccurs="0"/>
<xsd:element name="Availability" type="OpenCmsJsossAvailability" minOccurs="0" />
<xsd:element name="Category" type="OpenCmsCategory" maxOccurs="5"/>
</xsd:sequence>
<!-- 6. locale 属性是必须的 →
<xsd:attribute name="language" type="OpenCmsLocale" use="optional" />
</xsd:complexType>
<!-- 下面的代码段可选 -->
<xsd:annotation>
<xsd:appinfo>
<!-- 多语言支持 -->
<resourcebundles>
<!-- 纲要文件中直接支持多语言 -->
<xmlbundle name="org.jsoss.v9.components.schemas.article">
<!-- 支持中文简体 -->
<bundle locale="zh_CN">
<!-- key-value 中文对应,限于篇幅,部分省略,请自行下载模块 -->
<resource key="label.JsossArticle.Title">标题</resource>
….....
<resource key="jsoss.article.default.Title">在此修改文章标题</resource>
</bundle>
</xmlbundle>
</resourcebundles>
<!-- 将数据字段映射到内容的属性 -->
<mappings>
<mapping element="Title" mapto="property:Title" />
</mappings>
<!-- 数据字段的UI图素 -->
<layouts>
<layout element="Category" widget="CategoryWidget" configuration="onlyleafs=true" />
</layouts>
<!-- 字段验证规则,支持正则表达式,本纲要文件从简单出发,未使用这个特性 -->
<validationrules />
<!-- 字段的默认值 -->
<defaults>
<default element="Title" value="%(key.jsoss.article.default.Title)" />
</defaults>
<!-- 内容关系检查 -->
<relations />
</xsd:appinfo>
</xsd:annotation>
</xsd:schema>
来关注一下重点的内容,OpenCms自带了那些数据类型
- OpenCmsBoolean
- OpenCmsCategory
- OpenCmsColor
- OpenCmsDateTime
- OpenCmsHtml
- OpenCmsLocale
- OpenCmsPlainTextString
- OpenCmsString
- OpenCmsVarLink
- OpenCmsVfsFile
- OpenCmsVfsImage
这些数据类型望文生义,还有不明白的一动手就知道了
在看看支持那些widget, 参见数据字段的UI图素
- Boolean widget 这个widget不需要配置,使用类型OpenCmsBoolean就可以了
- CategoryWidget
- Color picker widget 这个widget不需要配置,使用类型OpenCmsColor就可以了
- ComboWidget
- Date picker widget 这个widget不需要配置,使用类型OpenCmsDateTime就可以了
- DisplayWidget
- DownloadGalleryWidget
- GroupMultiSelectorWidget
- GroupWidget
- HtmlGalleryWidget
- HtmlWidget
- ImageGalleryWidget
- LinkGalleryWidget
- LocalizationWidget
- MultiSelectWidget
- RadioSelectWidget
- SelectorWidget
- String widget 这个widget不需要配置,使用类型OpenCmsString就可以了
- TableGalleryWidget
- TextareaWidget
- TypeComboWidget
- VfsFileWidget
- VfsImageWidget
- StringWidgetPlaintext
- TextareaWidgetPlaintext
- UserWidget
- 还有三个非默认可用的图素
- PasswordWidget
- PrincipalWidget
- OrgUnitWidget
这个文件就类似数据库中表结构定义。如果对XML SCHEMA熟悉的童鞋肯定一看就能懂, 不熟悉SCHEMA的童鞋,用表结构定义的概念先理解这个文件。我们会在后面使用这个文件的创建内容的时候,在做进一步的说明。
请大家多 支持
Opencms 中文网和论坛