3

私は DocBook 5.0 で作業しており、執筆/編集/制作環境を作成しています。DB5 の RNG スキーマ バージョンに対して XML を検証します。

私の環境を使いやすくするために、私は自分の本を複数のファイルに分割し、xinclude を使用して本の中の章を本ファイルに取り込んでいます。私のXSLTでうまく機能します。

私はシステム エンティティを使用して、非技術ライター/編集者がいくつかの特殊文字を簡単に使用できるようにするのが好きです。いくつかの一般的な特殊文字 (例: &emDash; for —) の使いやすい名前でエンティティ ファイルを設定します。

同じ XML ファイルでエンティティと xinclude の両方を使用できないことをどこかで読んだと思いました。私はちょうどそれを試してみましたが、検証と変換はOKです。これでよろしいですか?ここに問題がありますか?本ファイルの先頭ですべてのものを宣言する方法は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<?oxygen RNGSchema="http://www.oasis-open.org/docbook/xml/5.0/rng/docbookxi.rng" type="xml"?>
<!DOCTYPE book [
<!ENTITY % entities SYSTEM "utilities/entities/entities.ent">
%entities;
]>
<book xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf" version="5.0" xml:id="book">

助けてくれてありがとう!

4

1 に答える 1

4

あなたは、「同じ XML ファイルでエンティティと xinclude の両方を使用できないとどこかで読んだと思いました」と書いています。

まず、言語学者の答え:

XInclude 仕様は、エンティティの使用を禁止していません。XML 文字ストリームのレベルではなく、情報セットのレベルで動作するように定義されているため、首尾一貫してそうできるかどうかは明らかではありません。また、XML 仕様では、エンティティを使用する場合に XInclude を使用することを禁止していません。したがって、あなたが懸念している2つの機能の定義仕様のどちらも、それを禁止していません.

使用プロファイルを定義しようとする他の仕様では、エンティティと XInclude の両方の同時使用が禁止される場合があります。私は何も知りませんが、それはあまり意味がありません。ただし、そのようなプロファイルがあなたに当てはまる場合は、それらについて知っていると思います.

XInclude は、エンティティ (少なくとも外部エンティティ) を不要にする方法と見なされることがあるため、一部の XInclude 愛好家は、エンティティを XInclude と一緒に使用するのは趣味が悪いと考えるかもしれません。このように感じ、彼らの考えを気にする人々とたまたま一緒に仕事をする場合、これはあなたにとって重要ですが、そうでない場合は、自由に彼​​らに手を振って仕事に取り掛かることができます. (あなたが覚えているようなものを読んだ場合、それは著者が良い慣行またはセンスの良さについて考えたことについての声明であると思います。それは確かに、法的または技術的に可能であることについての事実の声明ではありません.)

次に、実際的な答えです。一部のプロセッサとツール チェーンは、外部 DTD サブセットで宣言されたエンティティの使用をサポートし、一部は XInclude をサポートし、一部は両方をサポートします。気になるツールをチェックしてください。作成したいとおりにデータを処理する場合は、心配する必要はありません。

于 2012-09-24T16:51:52.977 に答える