2013-02-26 41 views
1

DITA中的subjectScheme是創建元數據分類的合適格式,但它應該如何使用?具體而言,我的問題涉及以下內容:如何使用DITA subjectSchemes?

  1. 它可以用來表示元數據元素,還是隻能表示元數據屬性?我只看到它應用於屬性,這使得它有限,因爲據我所知,元素通常用於檢索元數據,即不用於過濾的元數據。
  2. 如果您可以將它用於元素,該值是否仍然在subjectdef的「keys」屬性中?
  3. 如果你想添加一個定義/描述到元數據值,你會在那裏做什麼?
  4. 可以/你應該發佈subjectSchemes嗎?我已經看到它建議它不打算髮布,因爲它的資源唯一的默認屬性。但是這不是限制嗎?如果您使用它來創建分類標準,那麼您肯定也會想要一種簡單的方式來爲用戶的利益發布它?

回答

4

我將盡我所能解決您的原始問題。總的來說,subjectScheme專業化旨在創建主題分類和受控值。它定義了可用於檢索的主題分類以及定義和控制屬性值。目前,DITA-OT僅在屬性的受控值區域提供功能。

問題:「它可以用來表示元數據元素還是唯一的元數據屬性」?

答:我不會說它的目的是「代表元素或屬性」。它旨在表示科目和受控值。它的設計基於鍵,因此大量使用屬性。

問題:如果你想添加一個屬性值的定義,你在哪裏做?

答:您有這樣幾種選擇:

  • 您可以創建一個描述對象或屬性值相關的話題。您可以使用subjectdef元素上的@href屬性引用此主題。這對於提供共識定義或有關何時使用條件處理值的信息特別有用。
  • 您可以在subjectdef元素中嵌套topicmeta元素;在topicmeta元素中,您可以訪問shortdesc和navtitle元素。
  • 您將內容添加到subjectdef元素上的@navtitle屬性。我不會推薦這個,因爲@navtitle屬性已被棄用,通常不能被翻譯。

問題:您可以使用subjectScheme專業化和元數據元素嗎?

答案:是的。把我的頭頂部,這裏是一個直接的可能性,並設計一個基於HTML的輸出格式:

  • 對於一個特定的主題,一個topicmeta元素添加到subjectdef元素。在topicmeta元素中,您可以完全訪問所有元數據元素。根據需要添加儘可能多的元數據元素。
  • 將DITA主題與相關主題相關聯。這可以通過使用特定的屬性和值,或使用分類域中的subjectref元素來完成。
  • 調整輸出處理,以便與主題相關聯的每個DITA主題都將元數據寫入HTML,就像元數據元素位於DITA主題本身中一樣。通過這種設計,您可以實施一致性,並且由於基於密鑰的體系結構,易於維護和抽象層。

問題:你能發表專題方案嗎?

答:是的,如果主題使用@href屬性subjectdef元素引用。雖然默認情況下,subjectScheme元素的@ processing-role屬性設置爲「僅資源」,並且@toc屬性設置爲「no」,但您可以修改這些值,並且它們將在整個地圖中級聯,使其成爲可能生成輸出。當然,這只是目前使用DITA-OT所能做的。通過定製處理實現,可能性是無限的。

我認爲subjectScheme地圖和分類域提供了許多令人興奮的可能性,包括分面和過濾瀏覽(用於輸出)和分面搜索(用於DITA源代碼)。

我希望那些構建使用subjectScheme和分類的實現的人們將分享故事,演示他們的實現等等。我認爲這會使DITA體系結構的這部分更清晰,更容易被人們接受。

+0

我想你有點誤解了我。特別是,我沒有問你是否可以使用subjectScheme和元數據元素,就像你解釋它一樣。我的意思是如果你可以用它來表示元數據元素(而不是屬性)。你說這不是特別的。我的意思是,你可以使用它,例如在Oxygen中,獲取預定義的屬性值列表。我希望元數據元素也一樣。但是,也許這隻取決於供應商的實施......不過,您仍然有一些非常有趣的觀點,並且我喜歡您對發佈的看法(續) – Anders 2013-03-11 01:15:25

+0

(接上一段評論)因此,對於我來說,如果您可以使用例如。 DITA OT(OOTB?),並且您可以通過主題引用來包含定義,這與我所期望的接近。但事情是,我看到更好的東西(在我的腦海中)的潛力,但並不完全。我希望能夠方便地直接在subjectScheme中添加定義,然後,如果供應商支持將它用於預定義元素值以及方案的方便編輯格式,則它可以作爲便捷的分類工具工作,用於創建分類並且能夠發佈其文檔... – Anders 2013-03-11 01:19:11

+0

@Anders,您可以使用subjectScheme來定義屬性的受控值。因爲屬性採用CDATA。元素的潛在內容是寬鬆的,因此不是枚舉列表中可以容納的內容。 – 2013-03-11 02:34:19

2

就DITA-OT而言,我認爲您只能將它用於使用DITAVAL文件的元素的條件處理(過濾和標記)。

我覺得主題方案地圖比這個更有潛力。他們可以用於多面瀏覽,所以我們可以放棄靜態主題地圖。靜態內容似乎屬於前網時代。這個可以解決DITA稍微沉悶的光環。

無論如何,這裏就是你可以目前做:

主題方案圖:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE subjectScheme PUBLIC "-//OASIS//DTD DITA Subject Scheme Map//EN" "map.dtd"> 
<subjectScheme> 
    <hasInstance> 
     <subjectdef keys="all_routes"> 
      <subjectdef keys="every_route"> 
       <subjectdef keys="anglia"/> 
       <subjectdef keys="east_midlands"/> 
       <subjectdef keys="kent"/> 
       <subjectdef keys="lne_london_north_eastern"/> 
       <subjectdef keys="lnw_london_north_western"/> 
       <subjectdef keys="scotland"/> 
       <subjectdef keys="wales"/> 
       <subjectdef keys="sussex"/> 
       <subjectdef keys="wessex"/> 
       <subjectdef keys="western"/> 
      </subjectdef> 
     </subjectdef> 
    </hasInstance> 

    <enumerationdef> 
     <attributedef name="route"/> 
     <!-- Above is my new specialized attribute "routes"! --> 
    <subjectdef keyref="all_routes"/> 
    </enumerationdef> 

這裏是主題文本與元數據:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA General Task//EN" "task.dtd"> 
<task id="task_ozd_ckn_qh"> 
    <title>Route specialization test</title> 
    <shortdesc route="">This tests the new route attribute!</shortdesc> 
    <taskbody> 
    <section> 
     <title>Lines of text</title> 
     <p route="anglia">Anglia text text text text text text.</p> 
     <p route="sussex">Sussex text text text text text text.</p> 
     <p route="east_midlands">East Midlands text text text text text.</p> 
     <p route="kent">Kent text text text text text text.</p> 
     <p route="lne_london_north_eastern"NE text text text text text text.</p> 
     <p route="lnw_london_north_western">LNW text text text text text text.</p> 
     <p route="scotland">Scotland text text text text text text.</p> 
     <p route="sussex"Sussex text text text text text text.</p> 
     <p route="wales">Wales text text text text text text.</p> 
     <p route="western">Western text text text text text text.</p> 
     <p route="wessex">Wessex text text text text text text.</p> 
     <p route="every_route">Text.</p> 
     <p>Not profiled.</p> 
    </section> 
    </taskbody> 

這裏的DITAVAL過濾器:

<prop action="exclude" att="route"/> 
    <prop action="include" att="route" val="scotland"/> 

這將淘汰所有其他路線excep t標有「蘇格蘭」的路線。

基本上就是這樣。

您可以添加元數據到主題方案圖是這樣的:

<subjectdef keys="story_attributedef"> 

     <subjectdef keys="monster"> 
      <hasKind> 
       <subjectdef keys="zarbi" href="glossary/contemporary.dita"> 
        <topicmeta> 
         <navtitle>The Zarbi</navtitle> 
         <shortdesc>Ant-like creature</shortdesc> 
        </topicmeta> 
       </subjectdef> 

主題方案圖呈現爲「資源 - 僅」(他們是否有該值或沒有),所以它不是適合渲染。

+0

謝謝,但這是爲了過濾,我已經知道,除了包含術語表數據,我可以看看,我會給你一個+1。但它並沒有真正回答我的問題,即使用它來定義元數據元素的分類(即不過濾屬性)。我不確定,但它似乎只針對屬性,如果是這樣,這是一個恥辱,因爲它似乎完全適合定義元數據關鍵字等等,規範本身說的應該建立在分類上。 – Anders 2013-02-28 16:39:15

相關問題