DITA中有两种“通用”类型的元数据标签,数据元素和关键字元素。当然还有其他的,但显然应该很快就会被弃用,无论如何这个名字都暗示它是最后的手段。
因此,关键字似乎与Web应用程序中的标签非常相似,即通常用于“folksonomies”的内容。但是数据和关键字之间的确切区别是什么,何时应该使用哪个?
答案 0 :(得分:3)
<data>
元素主要用于专业化,因此直接使用它可能并不明智。 <keyword>
元素更好。
此:
<metadata> <keywords> <keyword>red</keyword> <keyword>green</keyword> <keyword>blue</keyword> </keywords> </metadata>
将在DITA-OT XHTML转换中呈现:
<head> <meta name="DC.subject" content="red, green, blue"/> <meta name="keywords" content="red, green, blue"/> </head>
如果你想添加标签,我会考虑使用主题方案图,这将允许你包含一个受控值列表。
如果您专注于@base
或@props
属性,则可以添加更多控件的元数据。在这里,我们有一个@props
属性专门用于@era
。
然后,您可以将@era
属性添加到主题中的元素或地图中的<topicref>
元素。
<subjectdef keys="era_attributedef">
<topicmeta>
<navtitle>Era of production by decade and producer</navtitle>
</topicmeta>
<subjectdef keys="producer">
<hasInstance>
<subjectdef keys="sixties">
<subjectdef keys="verity_lambert"/>
<subjectdef keys="john_wiles"/>
<subjectdef keys="innes_lloyd"/>
<subjectdef keys="peter_bryant"/>
<subjectdef keys="derrick_sherwin"/>
</subjectdef>
<subjectdef keys="seventies">
<subjectdef keys="barry_letts"/>
<subjectdef keys="philip_hinchcliff"/>
<subjectdef keys="graham_williams"/>
</subjectdef>
<subjectdef keys="eighties">
<subjectdef keys="john_nathan-turner"/>
</subjectdef>
</hasInstance>
</subjectdef>
<enumerationdef>
<attributedef name="era"/>
<subjectdef keyref="era_attributedef"/>
</enumerationdef>
答案 1 :(得分:3)
你在这里偏离轨道;关键字元素不是元数据元素。关键字元素是通用文本元素,通常用于产品名称。我认为你可能想在这里指定的元素是关键字元素。另外,你真的不想要注销othermeta元素;它没有被弃用且非常有用。
关键字元素
关键字元素可以在主题或地图级别使用。它包含主题词汇表中的术语列表,用关键字或indexterm元素标记。关键字和indexterm元素被视为元数据元素,它们应该在适当的媒体输出中反映出来。 indexterm元素通常生成索引;在XHTML输出中,关键字元素通常被添加到XHTML并用于搜索引擎优化。 (这是DITA-OT的标准功能,尽管DITA-OT附带的免费PDF渲染引擎不会生成索引。)
数据元素
按原样使用,数据元素表示DITA主题或地图中的属性。以下是关键方面:
默认情况下,处理器会忽略数据元素的内容。但是,可以构建自定义处理,使用特定数据元素的内容进行格式化等。
用作专业化的基础,数据元素特别有用。它可以实现更精确的语义,以及特定元素的受控属性列表的枚举。如果您检查书签图中学习和使用的元数据元素,您可以看到许多用作专业化基础的示例。培训专业。
有关具体示例,请参阅data element topic in the DITA 1.2 specification。
othermeta元素
othermeta元素旨在保存似乎不适用现有元数据元素的内容。它基本上拥有一个名称和值对。使用@name属性命名属性,使用@content属性保存值。
什么时候应该使用哪个特定元素?
答案 2 :(得分:1)
数据元素具有@href以及密钥的@name和@value属性。
因此,您可以定义构建所需的任何类型的属性。
<data name="currentTopNavSection" value="profil"/>
我有几个场景需要根据我的文档的受众提供一些路径信息。我可以使用数据元素。
<data audience="lifeg" name="active-audience" value="lifeg"/>
这个允许我在过滤文档时知道哪些是活跃的受众
另一个例子是附加一个特定于地图的javascript
我目前正致力于网络地图专业化,我专门将数据包含在javascript和css中。
*更新2 *
数据元素可以嵌套。艾略特金伯在一篇文章中解释了这一点。我不记得是哪一个。这个想法是它可以代表一组属性
<data name="parent">
<data name="chilproperty1" value="abc"/>
<data name="chilproperty2" value="abc"/>
</data>
这种结构对于专业化目的非常有用。
据我了解,数据元素并不具体。这是作者记录非常具体的需求的一种方式,无论是否专业。稍后在构建过程中使用xsl检索值很容易。
答案 3 :(得分:1)
确切的区别?有很多不同之处。阅读规范(对不起,我的意思是说不友好)。
这与已经提到的规范有一点不同,但我认为值得强调,因为它可能有助于您决定使用哪个(或者更确切地说,帮助您决定是否使用&lt; data&gt;):
处理器应忽略&lt; data&gt;的内容。默认情况下,元素是&lt; data&gt; element应仅用于属性,不要嵌入文本以进行格式化,作为主题正文流程的一部分。
(另请参阅规范开头的其他文字:“自定义处理可能......”。)
您可以使用&lt; keyword&gt; “将文本格式化为主题体流程的一部分”,但不应该使用&lt; data&gt;来实现。
您能描述一下您的具体用例吗? (您想要标记哪些信息?)