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

Xml DITA中的关键字与数据元数据?,xml,dita,Xml,Dita,DITA中有两种“通用”类型的元数据标记,即数据元素和关键字元素。当然也有othermeta,但很明显,它应该很快就会被弃用,而且它的名字表明它是最后的选择 因此,关键字似乎与web应用程序中的标记非常相似,即“大众分类”中常用的标记。但是数据和关键字之间的确切区别是什么?什么时候应该使用哪个?元素主要用于专门化,所以直接使用它可能不明智。元素更好 这: 数据元素具有@href和@name和@value属性,这些属性都是键的属性 因此,您可以定义生成所需的任何类型的属性 <data na

DITA中有两种“通用”类型的元数据标记,即数据元素和关键字元素。当然也有othermeta,但很明显,它应该很快就会被弃用,而且它的名字表明它是最后的选择

因此,关键字似乎与web应用程序中的标记非常相似,即“大众分类”中常用的标记。但是数据和关键字之间的确切区别是什么?什么时候应该使用哪个?

元素主要用于专门化,所以直接使用它可能不明智。
元素更好

这:


数据元素具有@href和@name和@value属性,这些属性都是键的属性

因此,您可以定义生成所需的任何类型的属性

<data name="currentTopNavSection" value="profil"/>

我有几个场景需要根据文档的受众提供一些路径信息。我可以使用数据元素来实现这一点

<data audience="lifeg" name="active-audience" value="lifeg"/>

这让我在过滤文档时可以知道哪些是活跃的受众

另一个例子是附加一个特定于映射的javascript

我目前正在致力于webmap专业化,我专门化了数据,包括javascript和css

*更新2*

数据元素可以嵌套。艾略特·金伯在一篇帖子中解释了这一点。我不记得是哪一个了。其思想是,它可以表示一组属性

   <data name="parent">
        <data name="chilproperty1" value="abc"/>
        <data name="chilproperty2" value="abc"/>
   </data>

这种结构对于专门化非常有用


据我所知,数据元素并不具体。这是作者记录特定需求的一种方式,无论是否专业化。在构建过程的后期,使用xsl检索值是很容易的。

您在这里有点偏离轨道;关键字元素不是元数据元素。关键字元素是一个通用文本元素,通常用于产品名称。我认为您可能想在这里指定的元素是keywords元素。另外,你真的不想抹去其他元元素;它没有被弃用,而且非常有用

关键字元素

关键字元素可以在主题或地图级别使用。它包含一个主题词汇表中的术语列表,标记有关键字或indexterm元素。keyword和indexterm元素被视为元数据元素,它们应该根据介质的情况反映在输出中。indexterm元素通常生成索引;在XHTML输出中,关键字元素通常添加到XHTML中并用于搜索引擎优化。(这是DITA-OT的标准功能,尽管DITA-OT附带的免费PDF呈现引擎不生成索引。)

数据元素

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

  • 属性的主题是包含数据元素的元素。如果该属性作为一个整体应用于某个主题,则它应该位于指向该主题的topicref中的topic prolog元素或topicmeta元素中
  • 数据元素上的@name属性是处理器的主要标识符
  • 属性的值可以用几种不同的方式表示:
    • 文本值,通常使用@value属性表示
    • 使用@href属性引用其他资源(主题、图像、Web资源等)
    • 由嵌套数据元素组成的复杂结构
  • 可以使用可选的title元素为属性提供标签
默认情况下,处理器忽略数据元素的内容。但是,可以构建自定义处理,使用特定数据元素的内容进行格式化等

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

有关一些具体示例,请参见

其他元元素

othermeta元素设计用于保存似乎没有现有元数据元素应用的内容。它本质上包含一个名称和值对。使用@name属性命名属性,使用@content属性保存值

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

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

  • 确切的区别是什么?有很多不同之处。读一下说明书(对不起,我不是说听起来不友好)

    这里有一个与前面提到的规范不同的地方,但我认为值得强调,因为它可能会帮助您决定使用哪一个(或者更确切地说,帮助您决定是否使用):

    默认情况下,处理者应忽略元素的内容,因此该元素应仅用于属性,而不是作为主题正文流程的一部分嵌入用于格式化的文本

    (另请参见规范开头的其他文字:“自定义处理可能…”)

    你可以
    <enumerationdef>
        <attributedef name="era"/>
        <subjectdef keyref="era_attributedef"/>
    </enumerationdef>
    
    <data name="currentTopNavSection" value="profil"/>
    
    <data audience="lifeg" name="active-audience" value="lifeg"/>
    
       <data name="parent">
            <data name="chilproperty1" value="abc"/>
            <data name="chilproperty2" value="abc"/>
       </data>