由于XSLT问题,XML格式化无法通过

时间:2015-06-16 13:19:50

标签: xml xslt dita

我需要编辑一个我们已经获得的转换,它将DITA XML更改为我们学习管理系统的略微不同的XML版本。这是我的问题:当我运行转换时,我在某些文件类型标题中丢失格式,即使它适用于其他文件类型标题。例如,当我创建一个摘要文件时,你可以直接通过,但在概念文件中,你会退出。我已经尝试了我能想到的一切,但没有骰子。问题似乎是对于概念,我可以从我的地图中提取一个navtitle,但我不能用其他类型(这是所有文件类型的要求,所以一旦修复了,我需要适用于所有事情)。

我将此代码列在“常用”部分中,该部分适用于摘要等类型:

<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>

在这个例子中,我希望第一个文件的标题是“案例研究:转售公寓,第二个文件是学习目标。目前,标题文本正常,但是我在Objective上失去了斜体。

任何人都有任何想法为什么标题中包含的元素没有通过?

1 个答案:

答案 0 :(得分:1)

我建议你改变你的应用模板而不是值。这应该通过斜体进行进一步处理。