DITA中的关键字与数据元数据?

时间:2013-02-26 22:46:08

标签: xml dita

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

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

4 个答案:

答案 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主题或地图中的属性。以下是关键方面:

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

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

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

有关具体示例,请参阅data element topic in the DITA 1.2 specification

othermeta元素

othermeta元素旨在保存似乎不适用现有元数据元素的内容。它基本上拥有一个名称和值对。使用@name属性命名属性,使用@content属性保存值。

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

  • 使用关键字元素指定适用于特定主题的索引术语和关键字,尤其是在生成的输出中应使用关键字元素的内容时。
  • 使用数据元素在DITA主题或DITA地图中嵌入属性,尤其是作为自定义处理或获取自动处理属性的辅助工具。
  • 使用数据元素作为专业化的基础。
  • 使用 othermeta 元素保存不存在语义元素的名称和值对。

答案 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;来实现。

您能描述一下您的具体用例吗? (您想要标记哪些信息?)