元数据设计,实施和最佳实践的创新

关于Qualified Dublin Core的W3C XML schema的注意事项

创造者: 皮特约翰斯顿
UKOLN,巴斯大学
贡献: 蒂姆•科尔
伊利诺伊大学香槟分校
贡献: 托马斯有
伊利诺伊大学香槟分校
贡献: 简猎人
昆士兰大学DSTC
贡献: Carl Lagoze.
康奈尔大学
贡献: 安迪•鲍威尔
UKOLN,巴斯大学
发行日期: 2003-04-02
标识符: //www.voudr.com/schemas/xmls/qdc/2003/04/02/notes/
替换: 不适用
被替换为: 不适用
最新版本: //www.voudr.com/schemas/xmls/qdc/notes/
描述文档: 本文档提供了一组W3C XML schema的简要描述,这些schema实现了《在XML中实现Dublin Core™指南》中描述的XML编码约定。

1.介绍

本文档中显示的模式符合W3C XML Schema 1.0建议[XMLSchema]。它们旨在支持在DCMI建议书中描述的XML中代表Dublin Core™元数据的惯例,用于在XML [DCXMLGuidelines]中实现DC的指南。这些模式是建议而不是规定并且可能与其他模式共存以交换Dublin Core™元数据。XML模式是互操作性的载体;同意单一模式的应用程序越多,就越容易共享Dublin Core™元数据。人们希望这些模式对广泛的应用程序有用,但也认识到,不同模式提供的不同功能可能是某些应用程序所需要的。

合格的都柏林核心™

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

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

  1. 15个Dublin Core™元件[DCMES],
  2. DCMI元数据项推荐中列出的附加元素(例如,“观众”)[DCTERMS],
  3. DCMI元数据术语建议[DCTERMS]中列出的元素细化

DC元素或细化的值 - XML元素内容 - 可以与命名编码方案之一相关联,也列在DCMI元数据项推荐[dcterms]中。

应用程序配置文件

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

“结构化的价值观”

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

2.模式及其使用

该模式是由Ad Hoc工作组联合创建的:Tim Cole(伊利诺伊大学伊本纳 - 香槟大学),Jane Hunter(昆士兰大学伊巴纳 - 香榭丽州伊利诺伊州伊利诺伊大学),Pete Johnston(Ukoln,浴室大学),卡尔林泽(Cornell University),安迪鲍威尔(北·浴室大学)

基础模式

这三个模式声明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定义了一个复杂型被称为SimpleLiteral

          
     

SimpleLiteral复杂型让我们成为XML:LANG.属性可用。该类型在混合方面定义复杂的然而,基数属性在xs:任何元素指定复杂型不允许子元素。

此命名空间中的十五个Dublin Core™元素表示为XML元素。该架构声明了一个摘要元素任何带有一种SimpleLiteral.因为它被宣布为摘要,此元素无法在实例文档中使用。代表Dublin Core™元素的每个XML元素被声明为替代的非抽象元素任何元素如。

< xs: element name = "标题" substitutionGroup = "任何" / >

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

例如,模式可以简单地进口dc.xsd架构和使用ElementContainer.复杂型作为元素的类型,这将使DC元素作为子元素可用。

< xs:导入命名空间= " http://purl.org/dc/elements/1.1/ " schemaLocation = "。xsd"/>  . xsd

这样的模式提供如下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模式使任何摘要元素和SimpleLiteral复杂型可供使用。进口dc.xsd模式还支持指示DC元素细化和它们所细化的元素之间的关系substitutionGroups标记

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

一个表示DC元素精炼的XML元素被声明为它精炼的元素的可替代元素:

< xs: element name = "替代" substitutionGroup = " dc:标题" / >

编码方案是用于约束DC元素和元素细化的“值空间”的机制。在这个模式中,它们被代表为命名复杂型来自于SimpleLiteral复杂型.例如,复杂型对应“W3CDTF”的编码方案如下:

          
     

注意:一些模式验证XML解析器可能不支持这种构造。请参阅附录一。

使用其中一个复杂型是由使用xsi: type属性在实例文档中。价值xsi: type属性是A.QName的名称对应的复杂型

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

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

不是所有的复杂型与编码方案相关的是这种“严格的”验证。例如,复杂型for "LCSH"只规定元素内容为字符串:

         

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

为ISO639-2语言代码提供这种方法的示例架构可用http://dli.grainger.uiuc.edu/publications/metadatacasestudy/dc_schemas/iso639-2.xsd

与此类似于dc.xsd模式,dcterms.xsd模式定义了一个集团Elementsandrefinementsgroup.作为引用所有元素和元素细化的一种方法。一个复杂型ElementRefinementContainer.也定义。

模式可以简单地进口dcterms.xsd架构和使用ElementRefinementContainer.复杂型作为元素的类型,这将使​​DC元素和元素改进作为子元素可用。

< xs:导入命名空间= " http://purl.org/dc/terms/ " schemaLocation = "使用dc。xsd"/>  . xsd"  . xsd . xsd

提供了这种模式的示例qualifieddc.xsd

就像simpledc.xsd模式,qualifieddc.xsd模式不使用targetnamespace..实现可以直接验证此架构,或者它可以通过在应用程序模式中包括此架构来指定容器元素的命名空间。

提供了这样的应用程序模式的示例appqualifieddc.xsd

下面提供了一个实例文档示例,该实例文档根据该应用程序模式进行验证testqualifieddc.xml

提供了未通过验证该应用程序模式的实例文档的示例testqualifieddc2.xml.('1963/08/17'不是有效的W3CDTF日期。)

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

模式:dcmitype.xsd

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

dcmitype.xsd只包括命名的简单键定义DCMI类型词汇表的枚举值列表。

简单键复杂型dcterms.xsd模式。

附录A:解析器行为

解析器/验证测试

  • XSV2.2-1为2002/12/01 21:59:33
  • XercesXerces-J 2.2.1 2002/11/11 17:40
  • MSXML4Microsoft XML核心服务4.0 SP1

结果

testsimpledc.xml.
解析器 结果 消息
XSV 架构和实例被接受为有效
Xerces 架构和实例被接受为有效
MSXML4 架构和实例被接受为有效
testqualifieddc.xml
XSV 架构和实例被接受为有效
Xerces 架构dcterms.xsd被拒绝为无效 (错误)使用dc。xsd: nnn:神经网络:src-ct。复杂类型定义表示错误的类型'xxxx'。当使用simpleContent时,基类型必须是内容类型为简单的complexType,或者仅在指定扩展时为简单类型。
(其中'xxxx'是与一个编码方案相对应的复杂类型的名称。)
MSXML4 架构和实例被接受为有效

“直流:SimpleLiteral”的问题

架构dc.xsd定义了一个基础复杂型被称为SimpleLiteral

          
     

编码方案表示为复杂型来自于SimpleLiteral复杂型.例如,复杂型对应“W3CDTF”的编码方案如下:

          
     

这个推导的一个复杂型简单通过限制底座复杂型复杂的有效的在下面XML模式第1部分:结构第3.4.6节,特别是“模式组件约束:派生有效(约束,复杂)”一节的5.1.2项,因为基复杂的是混合和空的。

这一点得到了亨利·汤普森的证实。
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 Schema.
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/

[DCMES]Dublin Core™元数据元素集,版本1.1:参考说明
//www.voudr.com/documents/dces/

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