关于合格都柏林核心的W3C XML模式的说明

创造者: 皮特·约翰斯顿
Eduserv基金会,英国
贡献: 蒂姆•科尔
伊利诺伊大学厄巴纳-香槟分校
贡献: 托马斯有
伊利诺伊大学厄巴纳-香槟分校
贡献: 简猎人
昆士兰大学DSTC
贡献: 卡尔Lagoze
康奈尔大学
贡献: 安迪•鲍威尔
Eduserv基金会,英国
发行日期: 2008-02-11
标识符: //www.voudr.com/schemas/xmls/qdc/2008/02/11/notes/
替换: //www.voudr.com/schemas/xmls/qdc/2006/01/06/notes/
取而代之的是: 不适用
最新版本: //www.voudr.com/schemas/xmls/qdc/notes/
文件描述: 本文档提供了一组W3C XML schema的简要描述,这些schema实现了在用XML实现Dublin Core™的指南中描述的XML编码约定。

1.介绍

本文档中提供的模式符合W3C XML schema 1.0推荐标准[XMLSCHEMA]。它们被设计用来支持用XML表示Dublin Core™元数据的约定,这些约定在DCMI建议中描述,即在XML中实现DC的指南[dcmlguidelines]。这些图式是建议而不是规定并且可以与用于交换Dublin Core™元数据的其他模式共存。XML模式是互操作性的载体;采用单一模式的应用程序数量越多,就越容易共享Dublin Core™元数据。人们希望这些模式对广泛的应用程序有用,但也认识到,某些应用程序可能需要由不同模式提供的不同功能。

合格的Dublin Core™

这些模式支持的功能与“资格”[DCPRINCIPLES]的Dublin Core™模型一致。使用其他表达附加功能的模式的应用程序应该认识到,这样做可能会损害与使用这些模式的应用程序的互操作性。

DCMI名称空间的三个模式声明XML元素来表示Dublin Core™元素及其细化。这里提供的容器模式将有效实例文档中的元素限制为

  1. 15个都柏林核心™元素[DCMES],
  2. DCMI元数据术语推荐中列出的其他元素(例如,“受众”)[DCTERMS];
  3. DCMI元数据术语推荐[DCTERMS]中列出的元素细化

DC元素或细化(XML元素内容)的值可能与命名的编码模式之一相关联,也在DCMI元数据术语推荐[DCTERMS]中列出。

应用程序配置文件

这意味着所谓的应用程序配置文件根据这些容器模式,来自其他名称空间或元数据词汇表的混合元素是无效的。应用程序概要模式可以导入这里列出的一个或多个基本模式,并将它们与其他非dcmi名称空间的模式关联使用。然而,采用该方法的实现者应该考虑基于模式的应用程序互操作性的影响,该模式指定只有Dublin Core™元素和元素精化是有效的。

“结构化的价值观”

根据模式,表示Dublin Core™元素和元素细化的XML元素的值只能具有简单的“字符串”值(可以按照下面描述的方式进一步限制),由类型定义dc: SimpleLiteral在模式中。的使用xml: lang属性允许记录作为元素值的字符串的语言。复杂的或结构化的值—即,在表示Dublin Core™元素和元素精化的XML元素中嵌套其他XML元素的使用—是无效的。通过利用XML模式规范的特性,建议的模式被设计成可以将模式导入到扩展模式中,扩展模式允许附加的嵌套元素作为Dublin Core™元素的值。根据这里列出的容器模式,这样的扩展将无效,因此,除非通过转换方法(这里尚未定义或DCMI尚未定义),否则无法互操作。

2.模式及其使用

这些模式是由一个特别工作组共同创建的:Tim Cole(伊利诺伊大学厄巴纳-香槟分校)、Thomas Habing(伊利诺伊大学厄巴纳-香槟分校)、Jane Hunter(昆士兰大学DSTC)、Pete Johnston(英国巴斯大学UKOLN)、Carl Lagoze(康奈尔大学)、Andy Powell(英国巴斯大学UKOLN)

基本模式

这三个模式声明XML元素来表示Dublin Core™元素和元素精化以及许多复合类型表示编码方案:

  • 模式:dc.xsd
    目标XML名称空间:http://purl.org/dc/elements/1.1/
  • 模式:dcterms.xsd
    目标XML名称空间:http://purl.org/dc/terms/
  • 模式:dcmitype.xsd
    目标XML名称空间:http://purl.org/dc/dcmitype/

容器模式

这些模式声明XML元素,作为在基本模式中声明的Dublin Core™元素和元素精化的指定子集的容器:

示例应用程序模式

这些模式提供了如何在应用程序中使用容器模式的示例:

模式:dc.xsd

目标XML名称空间:http://purl.org/dc/elements/1.1/

的模式dc.xsd定义了一个complexType被称为SimpleLiteral

         

SimpleLiteralcomplexType使xml: lang属性可用。类型是根据混合定义的complexContent然而的基数属性xs:任何元素决定了complexType不允许子元素。

这个名称空间中的15个Dublin Core™元素表示为XML元素。模式声明摘要元素任何用一种SimpleLiteral.因为它被声明为摘要,此元素不能在实例文档中使用。表示Dublin Core™元素的每个XML元素都声明为非抽象元素,该元素可替代任何元素如。

最后,模式定义了集团elementsGroup和一个complexTypeelementContainer.与直流:任何元素,这两种结构提供了一种机制,通过这种机制,外部模式可以引用在该模式中声明的元素集,而无需单独引用每个元素——尽管如果需要,外部模式仍然可以引用单个元素。

例如,模式可以简单地进口dc.xsd模式,并使用elementContainercomplexType作为元素的类型,这将使DC元素作为子元素可用。

 

这样的模式提供为simpledc.xsd

simpledc.xsd模式不使用targetNamespace.可以直接针对该模式验证实例。DCMI不推荐使用XML命名空间simpledc容器元素关联。当应用程序希望为容器元素指定名称空间时,可以在将该模式包含在应用程序模式中时分配该名称空间。

这种应用程序模式的一个示例如下appsimpledc.xsd

根据该应用程序模式进行验证的实例文档示例如下testsimpledc.xml

实例文档无法根据该应用程序模式进行验证的示例如下testsimpledc2.xml.(使用dc:修改不允许的。)

注意:您可以参考simpledc.xsd模式,如果您愿意的话。的appsimpledc.xsd但是,模式仅作为示例提供。它使用基于保留DNS名称的XML命名空间名称(example.org)。您必须创建此模式的自己版本。

模式:dcterms.xsd

目标XML名称空间:http://purl.org/dc/terms/

的模式dcterms.xsd进口的模式dc.xsd.此名称空间中的Dublin Core™元素和元素细化都表示为XML元素,并导入dc.xsd图式使任何摘要元素和SimpleLiteralcomplexType可供使用。导入dc.xsd模式还支持指示DC元素精化和它们精化的元素之间的关系substitutionGroups标记

表示此名称空间中的DC元素的XML元素被声明为可替换任何抽象的元素:

并且将表示DC元素细化的XML元素声明为可替代它所细化的元素。这包括与2008年1月添加到DCTERMS名称空间的15个新属性相对应的XML元素:

编码方案是约束DC元素和元素细化的“值空间”的机制。在这个模式中,它们被表示为命名复合类型源自SimpleLiteralcomplexType.例如,complexType对应的“W3CDTF”编码方案如下:

         

注意:一些模式验证XML解析器可能不支持此结构。参见附录A。

其中一种的使用复合类型的使用指定xsi: type属性在实例文档中。的值xsi: type属性是QName对应的名称complexType

< dc:日期xsi: type = "使用dc: W3CDTF”> 2002-07-09 > < /日期

使用此数据类型意味着验证解析器将检查元素内容是否符合内置日期/时间类型之一。

不是所有的复合类型与编码方案相关的强制执行这种“严格”验证。例如,complexType对于"LCSH"只规定元素内容为字符串:

         

至少在理论上,可以定义一个complexType它列举了国会图书馆主题标题的所有可能值,但是根据这样的列表进行验证是不切实际的。但是,根据值的枚举列表进行验证的原则在模式中进行了说明dcmitype.xsd获取DCMI类型词汇表(请参阅下一节)。

一个采用这种方法处理ISO639-2语言代码的示例模式可在http://dli.grainger.uiuc.edu/publications/metadatacasestudy/dc_schemas/iso639-2.xsd

类似于dc.xsd模式,dcterms.xsd模式定义了集团elementsAndRefinementsGroup作为参考所有元素和元素精化的方法。一个complexTypeelementOrRefinementContainer也是有定义的。

模式可以简单地进口dcterms.xsd模式,并使用elementOrRefinementContainercomplexType作为元素的类型,这将使DC元素和元素精化作为子元素可用。

 

这种模式的一个示例如下qualifieddc.xsd

就像simpledc.xsd模式,qualifieddc.xsd模式不使用targetNamespace.实现可以直接针对此模式进行验证,也可以通过在应用程序模式中包含此模式来为容器元素指定名称空间。

这种应用程序模式的一个示例如下appqualifieddc.xsd

根据该应用程序模式进行验证的实例文档示例如下testqualifieddc.xml

实例文档无法根据该应用程序模式进行验证的示例如下testqualifieddc2.xml.(使用dc: mdified不允许)

注意:在the的情况下simpledc.xsd模式,您可以引用qualifieddc.xsd模式,如果您愿意的话。的appqualifieddc.xsd但是,模式仅作为示例提供。它使用基于保留DNS名称的XML命名空间名称(example.org)。您必须创建此模式的自己版本。

模式:dcmitype.xsd

目标XML名称空间:http://purl.org/dc/dcmitype/

dcmitype.xsd只包含命名的simpleType它为DCMI类型词汇表定义了值的枚举列表。

simpleTypecomplexTypedcterms.xsd模式。

附录A:解析器行为

测试了解析器/验证器

  • XSV2002年12月1日21:59:33
  • Xercesxerces - j2.2.1 2002/11/11 17:40
  • MSXML4Microsoft XML Core Services 4.0 SP1

结果

testsimpledc.xml
解析器 结果 消息
XSV 接受有效的模式和实例
Xerces 接受有效的模式和实例
MSXML4 接受有效的模式和实例
testqualifieddc.xml
XSV 接受有效的模式和实例
Xerces 模式使用dc。XSD被拒绝为无效 (错误)使用dc。xsd: nnn:神经网络:src-ct。类型“xxxx”的复杂类型定义表示错误。当使用simpleContent时,基类型必须是内容类型为simple的complexType,或者,只有在指定了extension的情况下,基类型必须是简单类型。
(其中“xxxx”是与其中一种编码方案对应的complexType的名称。)
MSXML4 接受有效的模式和实例

“dc: simplelital”问题

的模式dc.xsd定义基complexType被称为SimpleLiteral

         

编码方案表示为复合类型源自SimpleLiteralcomplexType.例如,complexType对应的“W3CDTF”编码方案如下:

         

a的导数complexTypesimpleContent通过碱的限制complexTypecomplexContent有效的XML模式第1部分:结构的3.4.6节,特别是“模式组件约束:派生有效(限制,复杂)”一节的5.1.2项,因为基complexContent是混合的和空的。

亨利·汤普森证实了这一点。
http://www.w3.org/2001/05/xmlschema-rec-comments#pfiSimpleContent
http://lists.w3.org/Archives/Public/xmlschema-dev/2002Oct/0005.html
http://lists.w3.org/Archives/Public/xmlschema-dev/2002Oct/0008.html

结论:Xerces拒绝这种推导似乎是不正确的。

参考文献

(XMLSCHEMA)XML模式
http://www.w3.org/XML/Schema

(DCXMLGUIDELINES)在XML中实现Dublin Core™的指南
//www.voudr.com/documents/dc-xml-guidelines/

(DCPRINCIPLES)DCMI语法原则
//www.voudr.com/usage/documents/principles/

(dcm)都柏林核心™元数据元素集,版本1.1:参考描述
//www.voudr.com/documents/dces/

(使用dc)DCMI元数据术语
//www.voudr.com/documents/dcmi-terms/