DITA 中有两种“通用”类型的元数据标记,即数据元素和关键字元素。当然还有 othermeta,但显然它应该很快就会被弃用,而且这个名字暗示它无论如何都是最后的手段。
因此,该关键字似乎与 Web 应用程序中的标签非常相似,即通常用于“folksonomies”的标签。但是数据和关键字之间的确切区别是什么,什么时候应该使用哪个?
该<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
or@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>
你在这里有点偏离轨道;关键字元素不是元数据元素。关键字元素是通用文本元素,通常用于产品名称。我认为您可能想要在此处指定的元素是关键字元素。此外,您真的不想注销 othermeta 元素;它没有被弃用并且非常有用。
关键字元素
关键字元素可以在主题或地图级别使用。它包含来自主题词汇表的术语列表,用关键字或索引词元素标记。关键字和索引词元素被视为元数据元素,它们应在适合媒体的输出中反映出来。indexterm 元素通常生成索引;在 XHTML 输出中,关键字元素通常被添加到 XHTML 中并用于搜索引擎优化。(这是 DITA-OT 的标准功能,尽管 DITA-OT 附带的免费 PDF 渲染引擎不会生成索引。)
数据元素
按原样使用时,数据元素表示 DITA 主题或映射中的属性。以下是关键方面:
默认情况下,处理器忽略数据元素的内容。但是,可以构建自定义处理,使用特定数据元素的内容进行格式化等。
作为专业化的基础,数据元素特别有用。它支持更精确的语义,以及特定元素的受控属性列表的枚举。如果您检查 bookmap 和学习与培训专业化中使用的元数据元素,您可以看到许多将其用作专业化基础的示例。
有关一些具体示例,请参阅DITA 1.2 规范中的数据元素主题。
其他元元素
othermeta 元素旨在保存似乎没有现有元数据元素适用的内容。它本质上包含一个名称和值对。您使用@name 属性来命名属性并使用@content 属性来保存值。
什么时候应该使用哪个特定元素?
确切的区别?有很多不同之处。阅读规范(对不起,我并不是说听起来不友好)。
这是与已经提到的规范的一个区别,但我认为值得强调,因为它可能会帮助您决定使用哪个(或者更确切地说,帮助您决定是否使用 <data>):
默认情况下,处理器应忽略 <data> 元素的内容,因此 <data> 元素应仅用于属性,而不应将用于格式化的文本嵌入主题主体的流程中。
(另请参阅规范开头的其他文本:“自定义处理可能......”。)
您可以使用 <keyword> “将用于格式化的文本嵌入主题主体流的一部分”,但您不应该使用 <data> 这样做。
你能描述一下你的具体用例吗?(您要标记什么信息?)
数据元素具有@href 以及作为键的@name 和@value 属性。
因此,您可以定义构建可能需要的任何类型的属性。
<data name="currentTopNavSection" value="profil"/>
我有几个场景需要根据文档的受众提供一些路径信息。我可以为此使用数据元素。
<data audience="lifeg" name="active-audience" value="lifeg"/>
这个让我在过滤文档时知道哪些是活跃的受众
另一个例子是附加一个特定于地图的 javascript
我目前正在研究 webmap 专业化,我专门化数据以包括 javascript 和 css 。
*更新2 *
数据元素可以嵌套。Eliot Kimber 在一篇文章中解释了这一点。我不记得是哪一个了。这个想法是它可以表示属性的集合
<data name="parent">
<data name="chilproperty1" value="abc"/>
<data name="chilproperty2" value="abc"/>
</data>
这种结构对于专业化目的非常有用。
据我了解,数据元素并不具体。这是作者记录非常具体的需求的一种方式,无论是否专业。稍后在构建过程中使用 xsl 检索值很容易。