我需要为我们的学习管理系统编辑一个转换,将 DITA XML 更改为稍微不同的 XML 版本。这是我的问题:当我运行转换时,我会丢失某些文件类型标题的格式,即使它适用于其他文件类型标题。例如,当我创建一个摘要文件时,你可以通过,但在概念文件中,你会退出。我已经尝试了几乎所有我能想到的东西,但没有骰子。问题似乎是对于概念,我可以从我的地图中提取导航标题,但我不能使用其他类型(这是所有文件类型的要求,所以一旦解决这个问题,我需要将其应用于一切)。
我将此代码列在与摘要等类型一起使用的“通用”部分中:
<xsl:template match="*[contains(@class,' topic/title ')]" mode="new_tt_common">
<xsl:param name="prefix" select="''"/>
<title>
<xsl:value-of select="$prefix"/>
<xsl:apply-templates mode="identity" xml:space="default"/>
</title>
</xsl:template>
这准确地通过了标题中包含的任何元素。
此代码用于概念:
<xsl:choose>
<xsl:when test="$navtitle = ''">
<xsl:apply-templates select="*[contains(@class,' topic/title ')]" mode="new_tt_common"/>
</xsl:when>
<xsl:otherwise>
<title>
<xsl:value-of select="$navtitle"/>
</title>
</xsl:otherwise>
</xsl:choose>
我相信我在代码前面正确定义了 $navtitle,因为它工作正常。这段代码有些地方不正确,让我发疯。基本上,如果没有navtitle,标题应该成为新文件中的标题。如果有 navtitle,它应该成为新文件中的标题。
以下是我输入的一些示例。这是我的章节图:
<topicref href="../topics/re_intro_1.dita" locktitle="yes" navtitle="Case Study: Reselling a Condo"/>
<topicref href="../topics/re_los_1.dita"/>
re_intro_1.dita 中的标题:
<title><tm tmtype="reg">Introduction</tm> Testing</title>
re_los_1.dita 中的标题:
<title>Learning <i>Objective</i></title>
在这种情况下,我希望第一个文件的标题是“案例研究:转售公寓”,第二个文件是学习目标。目前,标题文本很好,但我失去了目标上的斜体。
有人知道为什么标题中包含的元素没有通过吗?