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

DCMI DCSV

DCMI DCSV:用于在文本字符串中编写标记值列表的语法(已取代,请参阅当前版本

创造者: 西蒙柯克斯
创造者: Renato Iannella.
发行日期: 2000-07-28
标识符: //www.voudr.com/specifications/dublin-core/dcmi-dcsv/2000-07-28/
取代: //www.voudr.com/specifications/dublin-core/dcmi-dcsv/2000-07-11/
被替换为: //www.voudr.com/specifications/dublin-core/dcmi-dcsv/2006-04-10/
最新版本: //www.voudr.com/specifications/dublin-core/dcmi-dcsv/
文档的状态: 这是一个dcmi建议
描述文档: 我们介绍了一种在文本字符串中记录标记值列表的方法,称为Dublin Core™结构化值,具有标签DCSV。符号旨在用于标记语言(如HTML和XML)的属性值中的结构化信息。这可能在基于合格的Dublin Core™模型的元数据系统中记录复杂元素值。
向实施者通知: 本文档中包含的语法示例是临时的,目前正在审查,作为DCMI的一部分,即推荐HTML,XML和RDF的协调语法建议。这些文档中的这些建议和次要编辑变化可以预期在不久的将来发生。注意,使用"="作为分隔符是对该规范早期版本的一个改变,早期版本在相同位置使用":"。这种变化被认为是理想的,因为“:”字符经常发生在可能用作名称和值的字符串内。使用“=”作为分隔符减少了在数据中转义字符的需要。

目录

  • 介绍
  • 结构化值- DCSV方案
  • 解析DCSV
  • 例子
  • 解析DCSV编码值的示例代码
  • 致谢
  • 参考

介绍

非常希望能够编码或序列性纯文本字符串中的结构化值。一些通用方法有常用。继承自然语言,逗号(,)和半冒号(;)的惯例经常用作列表分隔符。类似地,逗号分隔值(CSV)和标签分隔值(TSV)是来自电子表格和数据库软件的常见导出格式线饲料分隔行或元组。点(.)和破折号(-)有时被用来暗示层次结构,特别是在同义词典应用程序。可扩展标记语言[XML]提供了一个通用的解决方案,使用包含在尖括号(<,>)中的标记来指示结构。

许多命名编码方案在文本字符串中使用标点字符来指示特定组件。例如,冒号(:)终止协议标签,并斜杠(/),问号(?),&adersands(&)和哈希(#)用于将标识符中的其他字段分离为URI的[URI]。冒号(:)根据vcard [vcard]的公共实现,单独从字段内的值和semi-colons(;)单独的字段单独的字段。连字符用于根据ISO8601 [W3C-DTF]的W3C配置文件在日期中分隔字段。对于某些方案 - VCARD和W3C-DTF,例如 - 标点符号表示对值非常正式的结构,预计将自动解析。

元素属性在标记语言中,如HTML [HTML4]和XML [XML],提供了一个记录数据的位置。对于一些“空”元素,例如< IMG >< META >HTML中的元素 - 属性是唯一要保存数据的位置。在其他情况下,可能存在存储元素属性中而不是元素内容中的数据。例如,XML的碎片可以包含在其中,并且会被大多数客户端软件(如浏览器)安全地忽略。如果元素没有内容。此语法技巧可用于安全地在HTML [RDF-In-HTML]的当前版本中安全地嵌入XML-RDF编码数据。

通过允许将XML文档[XHTML]允许将XML文档允许将XML文档[XHTML]包含一般XML文档,预计HTML的未来版本将克服这些限制。尽管如此,使用HTML有很强的兴趣< META >元素以与普通文本字符串通常暗示的结构录制具有更多结构的数据,特别是根据合格的Dublin Core™型号[Q-DC-HTML]记录元数据。

然而,使用元素属性存储数据有一些技术限制:

  1. 属性可能不超过一次
  2. 值被限制为一组类型,在某些上下文中限制允许的字符串[HTML4]。使用XML的尖括号分隔符(<,>)和其他各种标点字符只在某些情况下有效(例如,当内容类型是CDATA时),只有使用转义机制(例如字符实体)。通常,包含这些字符的字符串易于由某些用户代理(例如浏览器)误解。

请注意,没有内在的方法来指示HTML元素属性值中的结构。

我们在本建议书中的意图是为内容类型CDATA的HTML属性值定义紧凑的人类可读数据结构化方法,避免了某些标点字符,其容易导致某些编码环境中的困难。通常仅在没有其他合适的方案时才能使用符号。它是基于在其他地方使用的方法,并且比前面的标准更广泛。它可以用作旨在编码特定数据类型[配置文件]的配置文件的基础。

结构化值- DCSV方案

允许录制通用结构化值,我们介绍了Dublin Core™结构化值(DCSV)计划。

我们区分两种类型的子字符串-标签价值,其中标签是值的类型的名称,值是数据本身。此外,我们允许一个完整的值分解成一组成分,每一个都有自己的标签和值。以这种方式组成的值称为值结构化的价值

标点符号用于录制结构化值,如下所示:

  • 等号(=)将结构化值组件的纯文本标签与值本身分开
  • 半冒号(;)单独(可选地标记)列表中的值组件
  • 如果需要,点(。)表示标签中的定影结构。

标签和组件值本身每个都包括文本字符串。目的是标签将是与值组件的名称对应的单词或代码。可以不存在标签,在这种情况下,由半冒号(;)或串的末端分隔的整个子字符串包括组件值。

以下模式展示了如何使用DCSV在字符串中记录结构化值:

“U2; U2; U3”“ca = v1”“ca = v1; cb.part1 = v2; cb.part2 = v3”“ca = v1; u2; u3”

其中u1、u2、u3为未标记组件,cA、cB为结构化值组件的标签,part1、part2为cB的子组件,v1、v2、v3为组件的值。

使用DCSV编码值中的特定标点字符意味着如果要在包含组件的内容(标签或值)的字符串中,必须使用这些字符。因此,对于DCSV,当值在值中需要等于符号(=)或半冒号(;)时,字符将使用反斜杠逃离,显示为=;。字符串中的点,全部停止或期间(。)不应该没有歧义:当它是标签的一部分时,点表示一些位置;当一个值的一部分时,它具有上下文的传统含义。这种逃逸特殊字符的方法很大程度上保留了可读性和能够在必要时轻松使用文本编辑器轻松输入DCSV编码元数据值。写入处理DCSV编码值的软件必须进行必要的替换。

注意,在HTML中,如果整个字符串由单引号(')分隔,则双引号(")字符可以直接在CDATA属性值中使用,但在XML中,双引号必须编码为元素属性中的字符实体。

由于没有显式的分组机制,DCSV只能用于记录列表。DCSV仅用于相对简单的结构化值,可能作为一种临时方法,等待对语法(如允许记录更复杂层次结构的XML)的更普遍支持。但是,它比等价的XML更紧凑,在一些常见上下文中(如HTML中)更容易阅读和构造元素。

解析DCSV

可以使用简单的方法来解析根据DCSV方案记录的元数据值。对于使用DCSV方案记录的单个值:

  1. 将文本字符串分割为子字符串列表,使用任何未转义的分号(;);
    如果没有存在半冒号,则存在单个子字符串
  2. 将每个子字符串分成任何未公开的等于标志(=)的(=);
    如果没有=,则标签为空
  3. 在每个值中,用实际所需的字符替换转义字符。

在本建议书的末尾包含执行此解析操作的短Perl程序。

例子

“name.given = renato;名称.Family = Iannella;雇主= DSTC;联系人= 7级,昆士兰大学Gehrmann Labs,QLD。4072,澳大利亚”“Rows = 200; Cols = 450”

DCSV方案为HTML中的元数据元素的复数值提供了有用的支持,同时剩余与所有通常使用的工具(浏览器,编辑器,元数据收割机)完全兼容。当以这种方式使用时,“DCMIDCSV”或其一个衍生物的名称可以指出为HTML的方案属性的值< META >元素如以下合格的Dublin Core™元数据示例所示:

`

`##解析DCSV编码值的示例代码

以下Perl程序读取在STDIN上输入的DCSV编码字符串,并打印结构化结果的格式化版本。此代码仅用于演示目的,不包含任何错误检查。

#!/ usr / local / bin / perl使用严格的打印“输入要解析的字符串:\ n”;我的$ string =加入('',);打印“要解析的nstring是[$ string] \ n”;#First Escape%字符$ String =〜s /%/“%”。解压缩('c',“%”)。“%”/例如;#下一步更改\转义字符到%d%,其中d是字符的ascii代码$ string =〜s /\\(。)/ <%“。解压缩('c',$ 1)。”%“/例如;打印“\ nescaped字符串是[$ string] \ n”;#现在将字符串拆分为Components My @components = split(/; /,$ string);打印“\ ncomponents:\ n”;foreach $ component(@components){my($标签,$ value)= split(/ = /,$组件,2);#如果没有=将$标签的内容复制到$ value和空$标签if(!$ valuge){$ value = $标签; $name = ''; } # strip whitespace from name string $label =~ s/^\s*(\S+)\s*$/$1/; # convert % escaped characters back in label string $label =~ s/%(\d+)%/pack('C',$1)/eg; # convert % escaped characters back in value string $value =~s/%(\d+)%/pack('C',$1)/eg; print "Label [$label] has value [$value]\n"; }

致谢

John Kunze鼓励我们正式地写下这个提案。Kim Covil写了Perl代码。Eric Miller唠叨着与XML的重叠。Steve Tolkin深信我们切换到=。

参考

(DCMI)
都柏林酷睿™元数据主动,oclc,都柏林俄亥俄州。
//www.voudr.com/

(HTML4)
大卫·拉格特,阿诺德·勒·霍斯,伊恩·雅各布斯,1999年,HTML 4.01规范
http://www.w3.org/TR/html4/

[档案]
DCMI框 - 规范的位置的空间限制,以及在文本字符串中将其编码的方法
//www.voudr.com/specifications/dublin-core/dcmi-box/
DCMI点——空间中的点位置,以及将其编码到文本字符串中的方法
//www.voudr.com/specifications/dublin-core/dcmi-point/
DCMI期间 - 规范时间间隔的限制,以及在文本字符串中将其编码的方法
//www.voudr.com/specifications/dublin-core/dcmi-poriod/

[q-dc-html]S. Cox,2000,在HTML中记录合格的Dublin Core™元数据
//www.voudr.com/specifications/dublin-core/dcq-html/

(RDF-in-HTML)它使用最紧凑的XML-RDF [rdf -语法]形式,其中所有数据都以属性值的形式出现。在这种形式中,一些重要的功能是不可用的,比如多个(重复)值。例如,参见S.J.D. Cox和K.D. Covil中的图5,“使用元数据的基于Web的地质信息系统”,proc。第三IEEE元数据会议
http://computer.org/conferen/proceed/meta/1999/papers/7/cox_covil.html

[Uri]
统一资源标识符(URI):通用语法RFC2396
http://www.ietf.org/rfc/rfc2396.txt.
T. Berners-Lee, L. Masinter,和M. McCahill, 1994统一资源定位器,RFC1738
http://www.ietf.org/rfc/rfc1738.txt.
T.Berners-Lee,1994 WWW中的通用资源标识符:统一语法,用于在全球Web中使用的网络上使用的网络上的名称和地址的语法,RFC1630
http://www.ietf.org/rfc/rfc1630.txt.

[vcard]
F.道森,T.豪斯,vCard MIME目录配置文件RFC2426
http://www.ietf.org/rfc/rfc2426.txt.

(W3C-DTF)
M. Wolf,C. Wicksteed,1997年,日期和时间格式
http://www.w3.org/tr/note-datetime.

(XHTML)
Steven Pemberton和其他许多人,1999 XHTML 1.0:可扩展超文本标记语言
http://www.w3.org/TR/xhtml1/
参见Dave Raggett的《超文本标记语言活动声明》
http://www.w3.org/MarkUp/Activity.html

(XML)
可扩展标记语言
http://www.w3.org/xml/