元数据设计、实施和最佳实践方面的创新

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

创造者: 皮特·约翰斯顿
UKOLN,巴斯大学
贡献: 蒂姆•科尔
伊利诺伊大学香槟分校
贡献: 托马斯有
伊利诺伊大学香槟分校
贡献: 简猎人
昆士兰大学DSTC
贡献: 卡尔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]。它们被设计来支持在XML中表示Dublin Core™元数据的约定,这些约定在DCMI建议,在XML中实现DC的指南[DCXMLGUIDELINES]中进行了描述。这些模式建议而不是规定并且可能与其他模式共存以交换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.模式及其使用

模式创建共同的特设工作组:蒂姆·科尔(伊利诺伊大学香槟分校),托马斯有(伊利诺伊大学香槟分校),简猎人(DSTC,昆士兰大学),皮特·约翰斯顿(UKOLN、英国巴斯大学),卡尔Lagoze(康奈尔大学),安迪·鲍威尔(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属性可用。类型是根据mixed定义的complexContent然而的基数属性xs:任何元素指定complexType不允许子元素。

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

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

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

例如,模式可以简单地进口dc.xsd模式,并使用elementContainercomplexType作为元素的类型,这将使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模式使任何摘要元素和SimpleLiteralcomplexType可供使用。导入dc.xsd模式还支持指示DC元素细化和它们所细化的元素之间的关系substitutionGroups标记

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

< xs: element name = "观众" substitutionGroup = " dc:任何" / >

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

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

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

          
     

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

使用其中一个复合类型是由使用xsi: type属性。价值xsi: type属性是QName的名称对应的complexType

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

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

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

< xs: complexType name = " LCSH " > < xs: simpleContent > = < xs: restriction基地“dc: SimpleLiteral”> < xs: simpleType > < xs:限制基础= " xs: string " / > < / xs: simpleType > < xs:属性ref =“xml: lang”用= "禁止" / > < / xs: restriction > < / xs: simpleContent > < xs: complexType >

至少在理论上,定义a是可能的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元素和元素细分作为子元素可用。

< 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只包括命名的simpleType定义DCMI类型词汇表的枚举值列表。

simpleTypecomplexTypedcterms.xsd模式。

附录A:解析器行为

解析器/验证测试

  • XSV2002年12月1日
  • XercesXerces-J 2.2.1 2002/11/11 17:40
  • MSXML4微软XML核心服务4.0 SP1

结果

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

“直流:SimpleLiteral”的问题

的模式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)Dublin Core™元数据元素集,版本1.1:参考描述
//www.voudr.com/documents/dces/

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