OpenCms9 系列之三 理解xsd纲要文件

 前一篇文章我们建立了一个内容类型模块,提供了内容类型模块下载。今天我们来理解一下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图素

  1.  Boolean widget    这个widget不需要配置,使用类型OpenCmsBoolean就可以了
  2.  CategoryWidget 
  3. Color picker widget   这个widget不需要配置,使用类型OpenCmsColor就可以了
  4. ComboWidget 
  5. Date picker widget    这个widget不需要配置,使用类型OpenCmsDateTime就可以了
  6. DisplayWidget
  7. DownloadGalleryWidget
  8. GroupMultiSelectorWidget 
  9. GroupWidget 
  10. HtmlGalleryWidget 
  11. HtmlWidget 
  12. ImageGalleryWidget 
  13. LinkGalleryWidget 
  14. LocalizationWidget 
  15. MultiSelectWidget 
  16. RadioSelectWidget
  17. SelectorWidget 
  18. String widget    这个widget不需要配置,使用类型OpenCmsString就可以了
  19. TableGalleryWidget 
  20. TextareaWidget 
  21. TypeComboWidget 
  22. VfsFileWidget 
  23. VfsImageWidget     
  24. StringWidgetPlaintext  
  25. TextareaWidgetPlaintext  
  26. UserWidget
  27. 还有三个非默认可用的图素
    1. PasswordWidget 
    2. PrincipalWidget 
    3. OrgUnitWidget 
这个文件就类似数据库中表结构定义。如果对XML SCHEMA熟悉的童鞋肯定一看就能懂, 不熟悉SCHEMA的童鞋,用表结构定义的概念先理解这个文件。我们会在后面使用这个文件的创建内容的时候,在做进一步的说明。

请大家多 支持 Opencms 中文网和论坛

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值