8

DITA 中有两种“通用”类型的元数据标记,即数据元素和关键字元素。当然还有 othermeta,但显然它应该很快就会被弃用,而且这个名字暗示它无论如何都是最后的手段。

因此,该关键字似乎与 Web 应用程序中的标签非常相似,即通常用于“folksonomies”的标签。但是数据和关键字之间的确切区别是什么,什么时候应该使用哪个?

4

4 回答 4

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>

如果您想添加标签,我会考虑使用主题方案映射,这将允许您包含受控值列表。

如果您专门化@baseor@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>
于 2013-02-28T13:03:48.187 回答
3

你在这里有点偏离轨道;关键字元素不是元数据元素。关键字元素是通用文本元素,通常用于产品名称。我认为您可能想要在此处指定的元素是关键字元素。此外,您真的不想注销 othermeta 元素;它没有被弃用并且非常有用。

关键字元素

关键字元素可以在主题或地图级别使用。它包含来自主题词汇表的术语列表,用关键字或索引词元素标记。关键字和索引词元素被视为元数据元素,它们应在适合媒体的输出中反映出来。indexterm 元素通常生成索引;在 XHTML 输出中,关键字元素通常被添加到 XHTML 中并用于搜索引擎优化。(这是 DITA-OT 的标准功能,尽管 DITA-OT 附带的免费 PDF 渲染引擎不会生成索引。)

数据元素

按原样使用时,数据元素表示 DITA 主题或映射中的属性。以下是关键方面:

  • 属性的主题是包含数据元素的元素。如果该属性作为一个整体应用于一个主题,它应该进入主题序言元素或指向该主题的 topicref 中的 topicmeta 元素中。
  • 数据元素上的@name 属性是处理器的主要标识符。
  • 财产的价值可以用几种不同的方式表达:
    • 文本值,通常使用@value 属性表示
    • 使用@href 属性引用另一个资源(主题、图像、Web 资源等)
    • 由嵌套数据元素组成的复杂结构
  • 您可以使用可选的标题元素为属性提供标签。

默认情况下,处理器忽略数据元素的内容。但是,可以构建自定义处理,使用特定数据元素的内容进行格式化等。

作为专业化的基础,数据元素特别有用。它支持更精确的语义,以及特定元素的受控属性列表的枚举。如果您检查 bookmap 和学习与培训专业化中使用的元数据元素,您可以看到许多将其用作专业化基础的示例。

有关一些具体示例,请参阅DITA 1.2 规范中的数据元素主题。

其他元元素

othermeta 元素旨在保存似乎没有现有元数据元素适用的内容。它本质上包含一个名称和值对。您使用@name 属性来命名属性并使用@content 属性来保存值。

什么时候应该使用哪个特定元素?

  • 使用关键字元素指定适用于特定主题的索引词和关键字,尤其是在生成的输出中应使用关键字元素的内容时。
  • 使用数据元素在 DITA 主题或 DITA 映射中嵌入属性,尤其是作为自定义处理的辅助或收集属性以进行自动处理。
  • 使用数据元素作为专业化的基础。
  • 使用othermeta元素来保存不存在语义元素的名称和值对。
于 2013-03-10T22:22:35.567 回答
1

确切的区别?有很多不同之处。阅读规范(对不起,我并不是说听起来不友好)。

这是与已经提到的规范的一个区别,但我认为值得强调,因为它可能会帮助您决定使用哪个(或者更确切地说,帮助您决定是否使用 <data>):

默认情况下,处理器应忽略 <data> 元素的内容,因此 <data> 元素应仅用于属性,而不应将用于格式化的文本嵌入主题主体的流程中

(另请参阅规范开头的其他文本:“自定义处理可能......”。)

您可以使用 <keyword> “将用于格式化的文本嵌入主题主体流的一部分”,但您不应该使用 <data> 这样做。

你能描述一下你的具体用例吗?(您要标记什么信息?)

于 2013-03-11T08:25:53.057 回答
1

数据元素具有@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 检索值很容易。

于 2013-03-06T17:32:18.280 回答