3

<informaltable>各セクションの最初に繰り返されるを含む test.xml の DocBook 記事を考えてみましょう。<informaltable>実際には、この例が示すよりもはるかに複雑で あることも考慮してください。

<informaltable>この例では、外部<!ENTITY ... SYSTEM ...>宣言を使用して複雑なものの再利用を実現しています。複雑なの<informaltable>は、reusedtable.xml という別のファイルにあります。

test.xml

<!DOCTYPE article [<!ENTITY ReusedTable SYSTEM "reusedtable.xml">]>

<article xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0">
<info>
    <title>Article Template Title</title>
</info>
<section>
    <title>first title</title>
    &ReusedTable;
</section>
<section>
    <title>Second Title</title>
    &ReusedTable;
</section>
</article>

再利用されたテーブル.xml

再利用されたテーブルを含むファイル。

<informaltable>
    <tgroup cols='2'>
        <tbody>
            <row>
                <entry>YES</entry>
                <entry>NO</entry>
            </row>
        </tbody>
    </tgroup>
</informaltable>

出力は次のようになります

この方法は機能しますが、少しぎこちなく、制限があるようです。したがって、次の質問が残ります。

  1. <informaltable>2 番目の .xml ファイルを作成せずに my を再利用する方法はありますか?
  2. <informaltable>テーブルをパラメータ化できるよう に my を再利用する方法はありますか?

たとえば、次のように、Docbook 記事で異なるコンテンツが取り込まれた ReusedTable のインスタンスの存在を表現できるようにしたいと考えています。

test2.xml

<article xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0">
<info>
    <title>Article Template Title</title>
</info>
<section>
    <title>first title</title>
    <ReusedTable>
        <firstcol>true</firstcol>
        <seccol>false</seccol>
    </ReusedTable>    </section>
<section>
    <title>Second Title</title>
    <ReusedTable>
        <firstcol>yes</firstcol>
        <seccol>no</seccol>
    </ReusedTable>
</section>
</article>

ReusedTable のデザインが一度定義され、ReusedTable の各インスタンスのセルの内容が、テーブルが表示される記事のマークアップから取得される場合、公開された出力は次のようになります。

4

2 に答える 2

1
  1. <informaltable>2 番目の .xml ファイルを作成せずに my を再利用する方法はありますか?

はい、また、エンティティを宣言しますが、宣言でキーワードを<informaltable>省略してインラインにします。SYSTEMこれにより、別のファイルがまったく必要なくなります。元の質問の Test.xml は、エンティティ宣言がインラインで次のようになります。

Test.xml

<!DOCTYPE article [
<!ENTITY ReusedTable "
<informaltable>
    <tgroup cols='2'>
        <tbody>
            <row>
                <entry>YES</entry>
                <entry>NO</entry>
            </row>
        </tbody>
    </tgroup>
</informaltable>
">
]>

<article xmlns="http://docbook.org/ns/docbook"
    xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0">
    <info>
        <title>Article Template Title</title>
    </info>
    <section>
        <title>first title</title>
        &ReusedTable;
    </section>
    <section>
        <title>Second Title</title>
        &ReusedTable;
    </section>
</article>
于 2012-07-30T19:08:41.380 に答える
1

おそらく、複雑なテーブル (またはその他の部分) を含めるためのより良い方法は、XInclude を使用することです。この質問と回答も参照してください。参照される XML ファイルで ENTITY 宣言をネストすることはできますか? 各テーブルのコンテンツは異なるため、レンダリング プロセス中にそのコンテンツを動的に更新する方法はありません。これが実際に必要な場合、問題を解決する方法は、小さなプログラムを使用して (複雑な) テーブルを個別の xml ファイルとして生成することです。XInclude を使用して、これらの個別の xml ファイルをドキュメントに含めます。

于 2012-10-04T18:08:43.013 に答える