2013-02-26 46 views
8

DITA中有兩種「通用」類型的元數據標籤,數據元素和關鍵字元素。當然,還有其他的一些,但顯然這應該很快就會被棄用,而且這個名字無論如何都暗示着它是最後的手段。DITA中的關鍵字與數據元數據?

因此,該關鍵字似乎與Web應用程序中的標籤非常相似,即常用於「民俗分類」的標籤。但是數據和關鍵字之間的確切區別是什麼,什麼時候應該使用哪個?

回答

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屬性,則可以添加具有更多控制權的元數據。在這裏,我們有一個專門用於@era@props屬性。

然後,您可以將@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> 
+0

嗯,我同意你的觀點,即我也傾向於使用通用元數據的關鍵字元素,但那是混亂。我知道數據元素專門用於專業化,但顯然不只是這一點。在Eliot Kimber的「從業者DITA」一書中,它指出數據是「保持任意元數據」的主要元素。所以我不覺得這個區別非常明顯。關於subjectScheme,主要關注屬性,並沒有完全回答這個問題。 – Anders 2013-02-28 21:15:27

+0

我記得在渲染過程中使用本身閱讀了關於DITA CMS的內容。如果我找到源,我會添加更多答案。 – 2013-02-28 23:33:03

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檢索值很容易。

+0

你是對的,忘記了這種差異,這當然是他們各自不同意圖的指標。仍然希望這在規範中有更好的記錄。 – Anders 2013-03-06 22:22:03

+0

忘了談論@keyref,這可能是非常有用的 – Bertrand 2013-03-06 22:46:07

3

你在這裏有點偏離;關鍵字元素不是元數據元素。關鍵字元素是通用文本元素,通常用於產品名稱。我認爲你可能想要在這裏指定的元素是關鍵字元素。另外,你真的不想寫掉其他元素;它不被棄用和相當有用。

關鍵字元件

關鍵字元件可以在主題或地圖級別被使用。它包含主題詞彙表中的詞彙列表,標記有關鍵字或indexterm元素。關鍵字和indexterm元素被視爲元數據元素,它們應該適當地反映在輸出中。指標要素通常會產生指數;在XHTML輸出中,關鍵字元素通常被添加到XHTML中並用於搜索引擎優化。 (這是DITA-OT的標準功能,雖然自由PDF渲染引擎附帶的DITA-OT不生成索引。)用於

數據元素

原樣,數據元素表示DITA主題或地圖內的屬性。以下是關鍵方面:

  • 屬性的主題是包含數據元素的元素。如果該屬性作爲一個整體應用於某個主題,則該屬性應該放在主題prolog元素中或指向該主題的topicref中的topicmeta元素中。
  • 數據元素上的@name屬性是處理器的主要標識符。
  • 屬性的值可以用幾種不同的方式表達:
    • 文本價值,經常使用value屬性表示
    • 參考其他資源(主題,圖像,網絡資源等),使用所述@href屬性
    • 複雜的結構,由嵌套數據元素
  • 可以使用一個可選的標題元素爲屬性提供一個標籤的。

默認情況下,處理器忽略數據元素的內容。但是,可以構建使用特定數據元素的內容進行格式化等的自定義處理。

作爲專業化的基礎,數據元素特別有用。它可以實現更精確的語義以及特定元素的受控列表的屬性列表。如果您檢查書籤中使用的元數據元素並學習培訓專業化,則可以看到許多用作專業化基礎的示例。

有關具體示例,請參閱data element topic in the DITA 1.2 specification

othermeta元素

的othermeta元件設計成保持它沒有現有的元數據元素似乎適用內容。它基本上擁有一個名稱和值對。您使用@name屬性來命名屬性,使用@content屬性來保存該值。

什麼時候應該使用哪個特定元素?

  • 使用關鍵字元素指定適用於特定的話題,特別是當關鍵字元素的含量應在生成的輸出中使用的索引項和關鍵字。
  • 使用數據元件DITA主題或DITA地圖中嵌入性質,特別是作爲用於定製處理的助劑或收穫用於自動化的加工性能。
  • 使用數據元素作爲專業化的基礎。
  • 使用othermeta元件可以保持名稱和值對這些語義元素不存在。
+0

謝謝,但我不完全同意一切。我知道該關鍵字也被用作重用元素,有點像變量,但問題是它也被用作元數據元素,正如規範所證明的:「元數據元素中的所有元素都被視爲主題元數據的一部分「。還有一點,它是序言中元數據元素的一部分......但也許這是圍繞這個元素的混亂的一部分,它被用於不同的目的? +1提示有關學習專長的數據使用。 – Anders 2013-03-11 00:50:45

+0

關於othermeta應該被棄用的東西我無法確認,但是我在Eliot Kimber的一篇文章中看到它(http://tech.groups.yahoo.com/group/dita-users/message/29812),實際上他說它已經過時了,但我真的不知道。也許他可以對此有所瞭解......儘管如此,我認爲它不是非常有用,但正如我所說,這個名字表明這是最後的手段。在這種情況下,我寧願使用數據元素,甚至是未指定的數據元素,因爲它具有名稱和值屬性,幾乎與其他元素的名稱和內容相同。 – Anders 2013-03-11 00:57:08

1

確切的區別?有很多不同之處。閱讀規範(對不起,我不是故意不發聲)。

這是與已經提到的規範的一個區別,但我認爲值得強調,因爲它可以幫助您決定使用哪個(或者說,幫助您決定是否使用<數據>):

處理器應忽略<數據>由缺省元素,所以<數據的內容>元素應該僅被用於屬性和不嵌入文本格式化爲話題體的流的一部分。

(另見規範開始在其他地方的文字:「定製處理可能......」)

您可以使用關鍵字<>「嵌入文本格式化爲話題的流程的一部分身體「,但你不應該這樣做與<數據>。

你能描述一下你的具體用例嗎? (你想標記什麼信息?)

+1

我已經仔細閱讀了規範,我想這就是問題的來源,我認爲它對元數據元素的使用非常模糊。我知道他們的數據模型的明顯差異,特別是關鍵字在非元數據上下文中的使用。但是,關鍵字也可以用作元數據元素,我打算將它們的差異作爲元數據標籤,即在prolog元數據元素中的關鍵字標籤中使用的關鍵字。這與使用正文文本的用法不同,規範說它將其視爲與Dublin Core的主題標籤相媲美。 – Anders 2013-03-11 12:49:42