0

私は DocBook V5.0 ドキュメントを持っていますが、以前は 1 つの.docbookファイルに本全体が含まれていました。その時点で、生成された TOC は正常に見えました。ここで、入力を 4 つの異なる.docbookファイルにチャンクし、チャンクされた出力も必要です。

この変更の後、突然 2 つの問題が発生しました。

  1. TOCには、以前の完全な深さではなく、4 つのエントリ (.docbook ごとに 1 つ) しか含まれていません。
  2. 奇妙なことに、TOC の章番号は1、2、および 4 で、次に番号のない用語集です。

後者については、第2章を外すと1、2、用語集になるので、第2章の内容が原因で番号がずれているわけではないと思います。

とにかく、私の質問は、チャンク化された入力と出力を保持しながら、通常の外観の TOC を復元するにはどうすればよいかということです。(チャンキングは単一ファイルの深さに制限することもできます。つまり、1 つのファイルを入れて 1 つのファイルを出すこともできますが、TOC の深さをもっと高くしたいのです。)

私がしたこと

メインファイルを次のようにしました。

<!DOCTYPE book [
    <!ENTITY a SYSTEM "a.docbook">
    <!ENTITY b SYSTEM "b.docbook">
    <!ENTITY c SYSTEM "c.docbook">
    <!ENTITY glossary SYSTEM "glossary.docbook">
    <!ENTITY larr "&#x2190;">
    <!ENTITY rarr "&#x2192;">
    <!ENTITY mdash "&#x2014;">
]>
<book xmlns:xl="http://www.w3.org/1999/xlink">
<title>My Title</title>
&a;
&b;
&c;
&glossary;
</book>

私の XSL は以前と似ていますが、いくつかのチャンク制御オプションが追加されています (ただし、元の TOC オプションには変更はありません)。

<?xml version='1.0'?>
<xsl:stylesheet  
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:import href="/usr/share/sgml/docbook/xsl-stylesheets/html/chunk.xsl"/>

<xsl:output method="html"
            encoding="UTF-8"
            indent="no"/>
<!--new--><xsl:param name="chunk.quietly" select="1"></xsl:param>
<!--new--><xsl:param name="chunker.output.encoding">UTF-8</xsl:param>
<!--new--><xsl:param name="html.extra.head.links" select="0"></xsl:param>
<xsl:param name="html.stylesheet" select="'main.css'"/>
<xsl:param name="generate.toc">
  book      toc,title
</xsl:param>
<xsl:param name="glossentry.show.acronym">yes</xsl:param>
<xsl:param name="glossary.sort" select="1"></xsl:param>
<!--new--><xsl:param name="use.id.as.filename" select="1"></xsl:param>

</xsl:stylesheet>

私の.docbookファイルはすべて次のようになります。

あ...

次の場合を除きglossary.docます。

用語集

今、章の中に章があるのは少し奇妙かもしれないことに気づきました。これが原因である場合もあります。ただし、警告なしで検証されます。また、代わりに特定のファイルで最も外側のタグを作成すると、<section>ファイル全体が TOC から失われます。

4

2 に答える 2

2

ヒント:古いもの<!ENTITY ...>xincludeに置き換えます。これには、xml スキーマによってすべてが適切に検証されるという利点があります。また、XML エディターは、xinclude を使用しないほうがよい場合がありますENTITY

以下に例を示します。

ファイル:book.xml

<?xml version="1.0" encoding="UTF-8"?>

<book version="5.0" xmlns="http://docbook.org/ns/docbook"
      xmlns:xlink="http://www.w3.org/1999/xlink"
      xmlns:xi="http://www.w3.org/2001/XInclude"
      xmlns:db="http://docbook.org/ns/docbook">
  <info>
    <title>This is a book</title>
  </info>

  <chapter>
    <title>This is a chapter</title>

    <section>
      <title>This is a section</title>

      <para>This is a paragraph.</para>
    </section>

    <xi:include href="included_section.xml" />
  </chapter>
</book>

ファイル:include_section.xml

<?xml version="1.0" encoding="UTF-8"?>

<section version="5.0" xmlns="http://docbook.org/ns/docbook"
         xmlns:xlink="http://www.w3.org/1999/xlink"
         xmlns:xi="http://www.w3.org/2001/XInclude"
         xmlns:ns5="http://www.w3.org/2000/svg"
         xmlns:ns4="http://www.w3.org/1998/Math/MathML"
         xmlns:ns3="http://www.w3.org/1999/xhtml"
         xmlns:db="http://docbook.org/ns/docbook">
  <title>This is an included section</title>
  <para>This is an included paragraph.</para>

  <mediaobject>
    <imageobject>
      <imagedata fileref="media/martin-luther-king.jpg"></imagedata>
    </imageobject>
  </mediaobject>
</section>

この例ではmedia、ファイルを含むディレクトリもありますmartin-luther-king.jpg

上記の例は次のようになります。

<book version="5.0" xmlns="http://docbook.org/ns/docbook"
      xmlns:xlink="http://www.w3.org/1999/xlink"
      xmlns:xi="http://www.w3.org/2001/XInclude"
      xmlns:db="http://docbook.org/ns/docbook">
    <title>My Title</title>
    <xi:include href="chapter-a.xml" />
    <xi:include href="chapter-b.xml" />
    <xi:include href="chapter-c.xml" />
    <xi:include href="glossary.xml" />
</book>

チャプターファイルは次のようになります。

<chapter version="5.0" xmlns="http://docbook.org/ns/docbook"
      xmlns:xlink="http://www.w3.org/1999/xlink"
      xmlns:xi="http://www.w3.org/2001/XInclude"
      xmlns:db="http://docbook.org/ns/docbook">
    <title>This is a chapter</title>

    <section>
      <title>This is a section</title>

      <para>This is a paragraph.</para>
    </section>
</chapter>

用語集ファイルは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<glossary version="5.0" xmlns="http://docbook.org/ns/docbook" 
        xmlns:xi="http://www.w3.org/2001/XInclude" 
        xmlns:xlink="http://www.w3.org/1999/xlink">
    <title>Example Glossary</title>

    <para>
        This is not a real glossary, it's just an example.
    </para>
</glossary>
于 2015-06-02T19:11:53.067 に答える
0

インクルード ファイル内で章をネストしないでください.docbookchapter最も外側のタグとその中のすべてに使用しsectionます。

chapter(検証にもかかわらず、最も外側のタグを に変更し、次に内側のchapterタグをに変更して再構築しようとした最短のファイルにはsection、実際にはタグのペアが欠落chapterしていたことがわかりtitlesました。これに気づいて、これが原因で TOC に表示されなかったので、実際にはカット アンド ペーストでこれらのタグが欠落していたのに、何らかの理由でsection-within-が機能しないことを証明したと思っていました。chapterバリデーターに頼らないでください!)

于 2015-06-03T12:29:50.357 に答える