1

学習管理システム用に、DITA XML を少し異なるバージョンの XML に変更する変換を編集する必要があります。ここに私の問題があります: 変換を実行すると、他のファイル タイプのタイトルでは機能するにもかかわらず、特定のファイル タイプのタイトルのフォーマットが失われます。たとえば、要約ファイルを作成すると、u は問題なく通過しますが、概念ファイルでは u が脱落します。考えられることはすべて試しましたが、ダイスはありませんでした。問題は、概念の場合、マップから 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>

この例では、最初のファイルのタイトルを「ケース スタディ: コンドミニアムの転売」、2 番目のファイルのタイトルを Learning Objectiveにしたいと考えています。

タイトルに含まれる要素がうまくいかない理由を知っている人はいますか?

4

1 に答える 1

1

そうでない場合は、value-of ではなく apply-templates に変更することをお勧めします。それは、さらなる処理のために斜体を渡す必要があります。

于 2015-06-16T18:29:09.167 に答える