You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DITA OT将DITA转换为EPUB时忽略指定主题

嘿,要在DITA OT转换DITA到EPUB时忽略特定主题,我这儿有几个实用的方案,你可以根据自己的场景选:

方法1:用DITA条件属性+转换参数过滤

DITA原生支持条件属性(比如audience、platform、props,也可以自定义),你可以给要忽略的<topicref>打上标记,然后在转换时通过参数排除这类内容。

步骤很简单:

  1. 给目标主题引用加条件属性,比如用audience="internal"标记内部专属的主题:
<topicref href="topics/topic_1.dita" audience="internal">
  <topicmeta>
    <navtitle>Ram-Files-Raj (RFR)</navtitle>
  </topicmeta>
</topicref>
  1. 运行转换时,添加参数排除audience="internal"的内容:
dita --input=your-pubmap.ditamap --format=epub --filter=audience="-internal"

或者用更明确的DITA OT参数写法:

dita --input=your-pubmap.ditamap --format=epub -Ddita.filter=audience="-internal"

方法2:outputclass+自定义XSLT过滤

如果条件属性不符合你的需求,你可以用outputclass标记要排除的主题,再写个简单的XSLT来过滤它们。

操作步骤:

  1. 给要忽略的<topicref>加专属outputclass:
<topicref href="topics/topic_1.dita" outputclass="exclude-from-epub">
  <topicmeta>
    <navtitle>Ram-Files-Raj (RFR)</navtitle>
  </topicmeta>
</topicref>
  1. 创建一个XSLT文件(比如命名为filter-epub-topics.xsl),内容如下:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:dita="http://dita.oasis-open.org/architecture/2005/">
  <!-- 匹配所有带exclude-from-epub标记的topicref,不输出这些节点 -->
  <xsl:template match="*[contains(@outputclass, 'exclude-from-epub')]" priority="10"/>

  <!-- 保留其他所有节点的默认处理逻辑 -->
  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>
  1. 转换时指定这个XSLT作为预处理脚本:
dita --input=your-pubmap.ditamap --format=epub -Ddita.preprocess.xsl=filter-epub-topics.xsl

方法3:直接用processing-role="resource-only"(适合引用类主题)

如果这个主题只是被其他主题引用,但不需要出现在EPUB的导航和正文里,直接给<topicref>加processing-role="resource-only"就行:

<topicref href="topics/topic_1.dita" processing-role="resource-only">
  <topicmeta>
    <navtitle>Ram-Files-Raj (RFR)</navtitle>
  </topicmeta>
</topicref>

这个属性会让DITA OT只处理主题的引用内容,但不会把整个主题加入EPUB的输出结构。如果这个主题没被任何其他主题引用,它会被完全忽略,刚好符合需求。

方法4:直接指定排除主题路径(适合少量主题)

如果只是要忽略一两个特定主题,直接用DITA OT的exclude-topic参数就行:

dita --input=your-pubmap.ditamap --format=epub -Dexclude-topic=topics/topic_1.dita

要排除多个的话,用逗号分隔路径:

dita --input=your-pubmap.ditamap --format=epub -Dexclude-topic=topics/topic_1.dita,topics/topic_2.dita

内容的提问来源于stack exchange,提问作者User515

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:27:49