1

我有一个 DITA 主题图,其中包含一个定义分类的主题方案图。

我的主题图中的主题已使用分类法中的值进行标记。

如何使用构面呈现我的主题图以允许检索主题,其中构面是主题方案图中的值?

4

2 回答 2

1

好吧,除非我误解了这个问题,否则我假设您的意思是渲染到 XHTML,并且您希望输出中的方面元数据以供最终用户在那里检索?我猜你想要它在一个元标记中。

如果是这样,我会这样做:

出于示例的目的,我假设您已经创建了一个映射到该@product属性的分类法。

首先,在 stylesheetdita2htmlImpl.xsl中,找到以下模板并将其复制到您的custom.xsl以覆盖它(作为替代方案,您可以在 中再次覆盖 get-meta 模板get-meta.xsl,但它太长了......),并添加一个调用generateProductMetadata

<xsl:template match="*" mode="chapterHead">
    <head><xsl:value-of select="$newline"/>
      <!-- initial meta information -->
      <xsl:call-template name="generateCharset"/>   <!-- Set the character set to UTF-8 -->
      <xsl:call-template name="generateDefaultCopyright"/> <!-- Generate a default copyright, if needed -->
      <xsl:call-template name="generateDefaultMeta"/> <!-- Standard meta for security, robots, etc -->
      <xsl:call-template name="getMeta"/>           <!-- Process metadata from topic prolog -->
      <xsl:call-template name="copyright"/>         <!-- Generate copyright, if specified manually -->
      <xsl:call-template name="generateCssLinks"/>  <!-- Generate links to CSS files -->
      <xsl:call-template name="generateChapterTitle"/> <!-- Generate the <title> element -->
      <xsl:call-template name="gen-user-head" />    <!-- include user's XSL HEAD processing here -->
      <xsl:call-template name="gen-user-scripts" /> <!-- include user's XSL javascripts here -->
      <xsl:call-template name="gen-user-styles" />  <!-- include user's XSL style element and content here -->
      <xsl:call-template name="processHDF"/>        <!-- Add user HDF file, if specified -->

<xsl:call-template name="generateProductMetadata"/>        <!-- Add Product metadata -->

</head>
    <xsl:value-of select="$newline"/>
  </xsl:template>

然后,再次在您的 中custom.xml,添加您调用的模板:

  <xsl:template name="generateProductMetadata">
    <meta name="product" content="{@product}"/>
    <xsl:value-of select="$newline"/>
  </xsl:template>

这在测试运行中给了我以下结果:

    <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="copyright" content="(C) Copyright 2005"/>
<meta name="DC.rights.owner" content="(C) Copyright 2005"/>
<meta name="DC.Type" content="topic"/>
<meta name="DC.Title" content="Technical data"/>
<meta name="DC.Relation" scheme="URI" content="18014398553839499_Technical_description.html"/>
<meta name="DC.Creator" content="Administrator"/>
<meta name="DC.Contributor" content="Administrator"/>
<meta name="DC.Date.Created" content="2013-03-05T11:13:04"/>
<meta name="DC.Date.Modified" content="2012-12-17T11:11:02"/>
<meta name="class" content="InfoType04"/>
<meta name="wf-state" content="NotReleased"/>
<meta name="DC.Format" content="XHTML"/>
<meta name="DC.Identifier" content="topic18014398553854475"/>
<meta name="DC.Language" content="en"/>
<link rel="stylesheet" type="text/css" href="commonltr.css"/>
<title>Technical data</title>
<meta name="product" content="product1"/>
</head>

那是你要找的吗?

于 2013-05-26T08:20:57.247 回答
1

约翰。

DITA 1.2 为您提供了创建分类或方面层次结构(subjectScheme 映射)的方法,以及将分类或方面层次结构应用于您的 DITA 内容的方法(分类映射)。

要利用该标记并实现分面浏览体验,您需要两件事:

  • 在呈现输出时使用主题分类值的处理器
  • 实现分面浏览的查看应用

目前,我不知道有任何 DITA 处理器或查看执行此操作的应用程序。

于 2013-05-31T10:33:37.990 回答