DITA中的subjectScheme是用于创建元数据分类的合适格式,但它应该如何真正使用?具体来说,我的问题涉及以下内容:
答案 0 :(得分:4)
我会尽力解决你原来的问题。总体而言,subjectScheme专业化旨在创建主题分类和受控值。它具有很强的功能,可用于定义可用于检索的主题分类,以及定义和控制属性值。目前,DITA-OT仅在属性的受控值区域内提供功能。
问题:“它可以用于表示元数据元素还是仅用于元数据属性”?
答案:我不会说它的目的是“代表元素或属性”。它旨在表示主题和受控值。它的设计基于键,因此大量使用属性。
问题:如果要为属性值添加定义,请执行此操作?
答案:您可以选择以下几种方式:
问题:您是否可以将subjectScheme专精化与元数据元素结合使用?
答案:是的。在我的脑海中,这是一个基于HTML的输出格式的直接可能性和设计:
问题:您可以发布主题方案吗?
答案:是,如果使用@href属性为subjectdef元素引用主题。默认情况下,subjectScheme元素的@process-role属性设置为“resource-only”,而@toc属性设置为“no”,您可以修改这些值,它们将在整个地图中级联,从而使其成为可能生成输出。当然,这正是人们目前使用DITA-OT所做的事情;通过自定义处理实现,可能性是无限的。
我认为subjectScheme地图和分类域提供了许多令人兴奋的可能性,包括分面和过滤浏览(用于输出)和分面搜索(用于DITA源)。
我希望构建使用subjectScheme和分类的实现的人们将分享故事,演示他们的实现,等等。我认为这将使得DITA架构的这一部分可以做得更清楚,更容易为人们所用。
答案 1 :(得分: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"/>
除了标有“苏格兰”的路线外,这将剔除所有其他路线。
基本上就是这样。
您可以将元数据添加到主题方案图中,如下所示:
<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>
主题方案地图呈现为“仅限资源”(无论它们是否具有该值),因此它不适合渲染。