0

私の質問を読んでくれてありがとう。私は同様の質問を検索して読みましたが、何が起こっているのかを完全に説明しているものはありませんでした。

XMLファイルがあります:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="../wikiStyle.css"?>
<!DOCTYPE article SYSTEM "../article.dtd">

<article xmlns:xlink="http://www.w3.org/1999/xlink">
    <header>
        <title>Foreign relations of Malta</title>
        <id>19146</id>
    </header>

    <bdy>
        <link xlink:type="simple" xlink:href="../205/40205.xml">Albania</link>&nbsp;·
        <link xlink:type="simple" xlink:href="../588/67588.xml">Andorra</link>&nbsp;· 
    </bdy>
</article>

ご覧のように; .dtdファイルを参照しましたが、次のような定義が含まれています。

<!ENTITY nbsp   "&#160;"> <!-- no-break space = non-breaking space,
                                  U+00A0 ISOnum -->

私の目的は、この.xmlファイルをブラウザーに読みやすく表示することです。CSSは、 nbspなどの要素を含むこのような.xmlファイルを除いて、これを完全に管理します。

その場合、次のようなエラーが発生します。

XML Parsing Error: undefined entity

10.1126/science.288.5472.1775</weblink>. PMID 10877698.</cite>&nbsp;</entry>

--------------------------------------------------------------^

私が理解したように、.dtdのこの行は、この要素をブラウザーに宣言し、xmlで&nbspを使用できるようにする必要があります(そして、ブラウザーのパーサーによって表示用に&#160に展開されます。

  • 私は何が起こっているべきかについての私の理解において正しいですか、それとも私は何かを逃していますか?
  • この要素を宣言して、ブラウザで表示できるようにするにはどうすればよいですか?

注意:私はこれらのXMLファイルを何百万も使用しており、生成していません。.xmlファイル自体を変更する必要のないソリューションが必要です。

4

1 に答える 1

1

エンティティ宣言は適切に見えるため、ブラウザが外部DTDをロードしないという問題である可能性があります。(例:https ://developer.mozilla.org/en/XML_in_Mozilla )

これを処理する唯一の方法は、各ファイルの内部サブセットにエンティティ宣言を追加することだと思います。

<!DOCTYPE article [
<!ENTITY nbsp "&#160;"> <!-- no-break space = non-breaking space,
                                  U+00A0 ISOnum -->
]>

何百万ものこれらのファイルを処理していて、それらを生成しないとおっしゃっていましたが、DOCTYPE宣言の更新をスクリプト化して、前処理できる可能性があります。

于 2012-07-23T18:07:07.840 に答える