DITAには、データ要素とキーワード要素の2つの「汎用」タイプのメタデータタグがあります。もちろん、othermetaもありますが、これは間もなく廃止される予定であり、その名前はとにかくその種の最後の手段を示唆しています。
そのため、キーワードはWebアプリケーションのタグ、つまり「フォークソノミー」に一般的に使用されているタグによく似ているようです。しかし、データとキーワードの正確な違いは何ですか?いつどちらを使用する必要がありますか?
あなたはここで少し軌道に乗っていない。キーワード要素はメタデータ要素ではありません。キーワード要素は一般的なテキスト要素であり、製品名によく使用されます。ここで指定したいと思う要素はkeywords要素だったと思います。また、othermeta要素を実際に書き留めたくはありません。非推奨ではなく、非常に便利です。
キーワード要素
キーワード要素は、トピックレベルまたはマップレベルのいずれかで使用できます。これは、キーワードまたはindexterm要素のいずれかでタグ付けされた、主題の語彙からの用語のリストを保持します。キーワード要素とインデックス用語要素はメタデータ要素と見なされ、メディアに応じて出力に反映される必要があります。indexterm要素は通常インデックスを生成します。XHTML出力では、キーワード要素は通常XHTMLに追加され、検索エンジン最適化に使用されます。(これはDITA-OTの標準機能ですが、DITA-OTに付属している無料のPDFレンダリングエンジンはインデックスを生成しません。)
データ要素
そのまま使用すると、データ要素はDITAトピックまたはマップ内のプロパティを表します。主な側面は次のとおりです。
デフォルトでは、プロセッサはデータ要素のコンテンツを無視します。ただし、フォーマットなどに特定のデータ要素のコンテンツを使用するカスタム処理を構築できます。
特殊化の基礎として使用されるデータ要素は、特に便利です。これにより、より正確なセマンティクス、および特定の要素の属性の制御されたリストの列挙が可能になります。ブックマップおよびラーニング&トレーニングスペシャライゼーションで使用されるメタデータ要素を調べると、スペシャライゼーションベースとしての使用例を数多く見ることができます。
具体的な例については、DITA1.2仕様のデータ要素のトピックを参照してください。
othermeta要素
othermeta要素は、既存のメタデータ要素が適用されていないように見えるコンテンツを保持するように設計されています。これは基本的に名前と値のペアを保持します。@name属性を使用してプロパティに名前を付け、@content属性を使用して値を保持します。
どの特定の要素をいつ使用する必要がありますか?
この<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 つ示しますが、強調する価値があると思います。どちらを使用するかを決定するのに役立つ可能性があるためです (むしろ、<data> を使用するかどうかを決定するのに役立ちます)。
プロセッサはデフォルトで <data> 要素のコンテンツを無視する必要があるため、 <data> 要素はプロパティにのみ使用し、トピック body のフローの一部としてフォーマット用のテキストを埋め込まないようにする必要があります。
(仕様の冒頭の他の場所のテキストも参照してください:「カスタム処理は...」。)
<keyword> を使用して、「トピック本文の流れの一部としてフォーマット用のテキストを埋め込む」ことができますが、<data> でそれを行うべきではありません。
具体的なユースケースについて説明できますか? (どの情報をマークアップしますか?)
データ要素には、キーである @href と @name および @value 属性があります。
したがって、ビルドに必要なあらゆる種類のプロパティを定義できます。
<data name="currentTopNavSection" value="profil"/>
ドキュメントの読者に応じて、いくつかのパス情報を提供する必要があるシナリオがいくつかあります。これには data 要素を使用できます。
<data audience="lifeg" name="active-audience" value="lifeg"/>
これにより、ドキュメントをフィルタリングするときに、アクティブなオーディエンスを知ることができます
別の例は、マップに固有の JavaScript を添付することです。
私は現在、データを特殊化して javascript と css を含める webmap の特殊化に取り組んでいます。
* 更新 2 *
データ要素はネストできます。エリオット・キンバーが投稿でこれを説明しています。どれだか思い出せない。アイデアは、プロパティのコレクションを表すことができるということです
<data name="parent">
<data name="chilproperty1" value="abc"/>
<data name="chilproperty2" value="abc"/>
</data>
この構造は、特殊化の目的に非常に役立ちます。
私の理解では、データ要素は特定のものではありません。これは、作成者が、専門的であるかどうかにかかわらず、非常に具体的なニーズを文書化する方法です。ビルド プロセスの後半で xsl を使用して値を取得するのは簡単です。