创造者: | 西蒙•考克斯 |
---|---|
创造者: | 雷纳托Iannella |
贡献: | 安迪鲍威尔 |
贡献: | 安德鲁•威尔逊 |
贡献: | 皮特约翰斯顿 |
贡献: | 托马斯贝克 |
发行日期: | 2006-02-13 |
标识符: | //www.voudr.com/specifications/dublin-core/dcmi-dcsv/2006-02-13/ |
取代: | //www.voudr.com/specifications/dublin-core/dcmi-dcsv/2005-07-25/ |
取而代之的是: | //www.voudr.com/specifications/dublin-core/dcmi-dcsv/2006-04-10/ |
最新版本: | //www.voudr.com/specifications/dublin-core/dcmi-dcsv/ |
文档状态: | 这是一个DCMI提出了建议. |
描述文档: | 本文档描述了一种用于在文本字符串中记录简单结构化数据的方法,或结构化的字符串值.这种方法被称为历史原因如DCSV(最初意味着“都柏林核心™结构化值”)。 |
修订说明: | 2006-02-13。DCMI抽象模型[批准后坝)在2005年3月,DCMI推荐使用DCMI DCSV语法规范的董事会进行了回顾和相关规范的编码方案DCMI盒子,DCMI, DCMI时期,修改他们的目标语言与抽象模型的一致性。在该文档中可以找到所做更改的摘要“遗留DCSV规范的修订”.从1995年开始,DCMI抽象模型支持以“相关描述”的形式表示复杂的结构,比如那些用基于dcsv语法的编码方案编码的结构。DCMI使用委员会鼓励实现者考虑以可解析的dcsv编码字符串值封装结构化信息,而不是使用其他语法编码在相关描述中传递该信息对互操作性的长期后果。 |
通常希望在文本字符串中编码或_serialise_simple结构化数据。有些泛型方法是常用的。借用自然语言的惯例,逗号(,)和分号(;)经常被用作列表分隔符。类似地,逗号分隔值(CSV)和制表符分隔值(TSV)是电子表格和数据库软件的常见导出格式,使用_line feeds_分隔行或元组。点(.)和破折号(-)有时被用来暗示层次结构,特别是在同义词典应用程序。可扩展标记语言[XML]提供了一个更通用的解决方案,使用包含在尖括号(<,>)中的标记来表示结构。
该文献描述了一种用于编码内的简单结构的数据的特定方法字符串值.在DCMI抽象模型[DAM],a字符串值被定义为“一个表示属性的值的简单字符串”。字串值编码的根据本文档中描述的方法在此被称为结构化的字符串值.
(请注意,由于历史原因,该方法本身仍然是这里所指的DCSV语法,或DCSV。“DCSV”原本主张“都柏林睿™结构性价值”,从1997年大约一个传统的概念,它不再拥有在一个地方今天的DCMI抽象模型[DAM])。
该DCSV语法允许_structured值string_to被解析成一组组件.为了表示这组组件中的两种类型的子字符串结构化的字符串值-componentLabels和componentValues.一个componentLabel是的_component_within的结构化数据的名称,和一个_componentValue_is数据本身。
标点符号用于编码结构化的字符串值如下:
的componentLabels和componentValues自己分别由文本字符串。的目的是,将the_componentLabel_是对应于_component_的名称的字或码。所述_componentLabels_可以不存在,在这种情况下由分号分隔的整个字符串(;)或字符串的端部包括_componentValue_。
以下模式显示如何使用DCSV在字符串中记录有关资源的结构化信息:
“u1;u2乐队;u3”“cA = v1 " cA =;cB.part1 = v2;cB。第二部分= v3”“cA = v1;u2乐队;u3”
在哪里
在DCSV-encoded_value strings_装置使用特定的标点字符必须注意,如果这些字符是行使直接在其内包括_components_的内容(或者_componentLabels_ or_componentValues_)字符串中使用。对于DCSV,因此,当一个等号(=)或分号(;)的_componentValue_内是必需的,所述字符被使用反斜线,表现为=;。应该有关于点,全停,或字符串中期内无歧义():当它是a_componentLabel_的一部分,一个点表示一定层次;当_componentValue_的一部分,它具有用于上下文中的常规含义。转义特殊字符的这种方法在很大程度上保留了可读性,如果输入所需的元数据_value strings_容易使用文本编辑器DCSV编码的能力。写入过程DCSV编码_value strings_软件必须进行必要的替换。
需要注意的是DCSV仅旨在用于有关资源相对简单的结构化信息。
可以使用一个简单的方法来解析元数据字串值根据DCSV语法进行编码。对于单DCSV编码字符串值:
下面的Perl程序读取标准输入并打印结构化结果的格式化版本进入DCSV编码字符串。此代码仅供演示目的,不包含错误检查。
#!/usr/local/bin/perl using strict print "Enter string to be parsed:\n";我的$string = join(",);print "\nString to be parsed is [$string]\n";#第一%字符转义字符串美元= ~ s / % /“%”.unpack (C ',"%")."%"/ 如;$string =~ s/\\(.)/"%".unpack('C',$1)."%"/eg;print "\ nescape string is [$string]\n";@components = split(/;/, $string);打印“\ nComponents: \ n”;Foreach $component (@component) {my ($label, $value) = split(/=/, $component, 2); # if there is no = copy contents of $label into $value and empty $label if (!$value) { $value = $label; $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 "Component Label [$label] has Component Value [$value]\n"; }
本文档使用的术语如下:
约翰·库泽鼓励原作者正式写了他们的建议,导致2000年7月的第一DCSV规格金Covil写的Perl代码。埃里克·米勒与唠叨关于XML重叠。史蒂夫托尔金相信原作者切换到=。
[坝]
A. Powell,M. Nilsson,A. Naeve,P. Johnston,2005年,DCMI抽象模型
//www.voudr.com/specifications/dublin-core/abstract-model/。
(XML)
可扩展标记语言
http://www.w3.org/XML/。