1

我需要为我们的学习管理系统编辑一个转换,将 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>

在这种情况下,我希望第一个文件的标题是“案例研究:转售公寓”,第二个文件是学习目标。目前,标题文本很好,但我失去了目标上的斜体。

有人知道为什么标题中包含的元素没有通过吗?

4

1 回答 1

1

我建议将您的 else 更改为 apply-templates 而不是 value-of。这应该通过斜体进行进一步处理。

于 2015-06-16T18:29:09.167 回答