0

XULRunner アプリがあります。それはほとんど機能していますが、問題があります。アプリには、HTML フォームとして実装されたレポートがいくつかあります。ユーザーのオプションの 1 つは、CSV 形式で出力することです。Firefox では、ユーザーはファイルを保存するか (Excel などで) 開くよう求められます。XULRunner アプリでは、以下を含むポップアップが表示されます。

XML 解析エラー: 未定義のエンティティ
場所: chrome://mozapps/content/downloads/unknownContentType.xul
行番号 30、列 18: &intro.label;

ここで説明されているように、これはブランディングに関連しているようです。

指示に従ったと思います。それらは場所によっては少しあいまいです。ここに私が持っているものがあります:

chrome/chrome.manifest内容:

locale branding en-US chrome/locale/branding/
content branding chrome/branding/

chrome/branding/次のファイルが含まれています: about.pngicon48.pngicon64.png

chrome/locale/branding/brand.dtd内容:

<!ENTITY  brandShortName        "ArcaMax EC">
<!ENTITY  brandFullName         "ArcaMax EC">
<!ENTITY  vendorShortName       "ArcaMax">
<!ENTITY  trademarkInfo.part1   " ">

chrome/locale/branding/brand.properties内容:

brandShortName=EC4
brandFullName=ArcaMax EC4
vendorShortName=ArcaMax

homePageSingleStartMain=Firefox Start, a fast home page with built-in search
homePageImport=Import your home page from %S

homePageMigrationPageTitle=Home Page Selection
homePageMigrationDescription=Please select the home page you wish to use:

syncBrandShortName=Sync

chrome/locale/branding/unknownContentType.dtd内容:

<!ENTITY  intro.label                 "You have chosen to open">
<!ENTITY  from.label                  "from:">
<!ENTITY  actionQuestion.label        "What should &brandShortName; do with this file?">

<!ENTITY  openWith.label              "Open with">
<!ENTITY  openWith.accesskey          "o">
<!ENTITY  other.label                 "Other…">

<!ENTITY  saveFile.label              "Save File">
<!ENTITY  saveFile.accesskey          "s">

<!ENTITY  rememberChoice.label        "Do this automatically for files like this from now on.">
<!ENTITY  rememberChoice.accesskey    "a">

<!ENTITY  whichIsA.label              "which is a:">

<!ENTITY  chooseHandlerMac.label      "Choose…">
<!ENTITY  chooseHandlerMac.accesskey  "C">
<!ENTITY  chooseHandler.label         "Browse…">
<!ENTITY  chooseHandler.accesskey     "B">

<!ENTITY  unknownPromptText.label     "Would you like to save this file?">

追加chrome/locale/branding/unknownContentType.dtdは私の推測でした。Firefox のソース ツリーでファイルを見つけました。

何か案は?

4

1 に答える 1

2

あなたの推測は正しく、問題はブランディングに関連しているようです。unknownContentType.xul次の 3 つのロケール ファイルを読み込みます。

<!DOCTYPE dialog [
  <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
  %brandDTD;
  <!ENTITY % uctDTD SYSTEM "chrome://mozapps/locale/downloads/unknownContentType.dtd" >
  %uctDTD;
  <!ENTITY % scDTD SYSTEM "chrome://mozapps/locale/downloads/settingsChange.dtd" >
  %scDTD;
]>

brand.dtdXULRunner の一部ではない唯一のものであり、アプリケーションによって提供される必要があります。ただし、それをロードすると明らかに失敗し、他の DTD ファイルもロードできなくなります (XULRunner はダイアログの最初のエンティティについて不平を言います)。

拡張機能を追加する必要はありませんunknownContentType.dtd。既に XULRunner の一部になっています。それ以外は、すべて正しく行いました。ただし、 のパスはchrome.manifest、アプリケーション ルートではなく、マニフェストに相対的である必要があります。locale/branding/したがって、パスはおそらくchrome/locale/branding/. アプリケーションを開いchrome://branding/locale/brand.dtdて、アプリケーションが正しく設定されていることを確認する必要があります。

もう 1 つの一般的な問題: DTD ファイルは、バイト オーダー マーク(BOM)なしで UTF-8 形式で保存する必要があります。エディターがデフォルトで BOM を保存する場合は、再構成する必要があります。XULRunner は、BOM で始まるファイルを無効と見なし、それらを無視します。

于 2012-09-21T06:46:15.950 に答える