【问题标题】:Keyword vs data metadata in DITA?DITA 中的关键字与数据元数据?
【发布时间】:2013-02-26 22:46:07
【问题描述】:

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

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

【问题讨论】:

    标签: xml dita


    【解决方案1】:

    <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 属性,则可以添加具有更多控制权的元数据。在这里,我们有一个专门用于@era@props 属性。

    然后您可以将@era 属性添加到主题中的元素,或地图中的&lt;topicref&gt; 元素。

    <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>
    

    【讨论】:

    • 好吧,我同意你的观点,我也倾向于将关键字元素用于通用元数据,但这就是混乱。我知道数据元素是专门用于专业化的,但显然不仅如此。在 Eliot Kimber 的 DITA for Practitioners 一书中,数据是“用于保存任意元数据”的主要元素。所以我觉得区别不是很清楚。关于subjectScheme,主要是属性,不太回答这个问题。
    • 我记得读过有关在渲染过程中使用 本身的 DITA CMS。如果找到来源,我会在答案中添加更多内容。
    【解决方案2】:

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

    关键字元素

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

    数据元素

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

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

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

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

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

    其他元元素

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

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

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

    【讨论】:

    • 谢谢,但我并不完全同意一切。我知道关键字也用作重用元素,有点像变量,但问题是它也用作元数据元素,正如规范所证明的那样:“ 或 元素关键字>元数据元素被视为主题元数据的一部分”。而且它是序言中元数据元素的一部分……但也许这是围绕这个元素的混淆的一部分,它用于不同的目的? +1 关于学习专业化数据使用的提示。
    • 关于 othermeta 被弃用的事情我无法确认,但我在 Eliot Kimber (tech.groups.yahoo.com/group/dita-users/message/29812) 的帖子中读到了它,实际上他说它已经过时了,但我真的不知道.也许他可以对此有所了解......我觉得无论如何它都不是很有用,正如我所说,这个名字暗示它是最后的手段。在这种情况下,我宁愿使用数据元素,即使是非专业的,因为它具有名称和值属性,与其他元的名称和内容几乎相同。
    【解决方案3】:

    数据元素具有@href 以及作为键的@name 和@value 属性。

    因此,您可以定义构建可能需要的任何类型的属性。

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

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

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

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

    另一个例子是附加一个特定于地图的javascript

    我目前正在研究网络地图专业化,我专门研究数据以包括 javascript 和 css。

    * 更新 2 *

    数据元素可以嵌套。 Eliot Kimber 在一篇文章中解释了这一点。我不记得是哪一个了。这个想法是它可以表示属性的集合

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

    这种结构对于专业化目的非常有用。

    据我了解,数据元素并不具体。这是作者记录非常具体的需求的一种方式,无论是否专业。稍后在构建过程中使用 xsl 检索值很容易。

    【讨论】:

    • 你是对的,忘记了这个区别,这当然是他们各自不同意图的一个指标。仍然希望这在规范中得到更好的记录。
    • 忘了说@keyref,它可能很有用
    【解决方案4】:

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

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

    处理器默认应该忽略 元素的内容,因此 元素应该只用于属性,不要嵌入文本以作为主题主体流的一部分进行格式化强>。

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

    您可以使用 “嵌入文本以作为主题正文流的一部分进行格式化”,但您不应该使用 这样做。

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

    【讨论】:

    • 我已经非常仔细地阅读了规范,我想这就是问题的来源,我认为元数据元素的使用非常模糊。我知道他们的数据模型的明显差异,尤其是在非元数据上下文中关键字的使用。但是,关键字也可以用作元数据元素,我打算将它们的区别作为元数据标签,即在序言元数据元素中的关键字标签中使用的关键字。与在正文中使用时相比,这是一种不同的用法,规范表示将其视为与都柏林核心的主题标签相当。
    猜你喜欢
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多