2012-09-18 99 views
0

我有一個XULRunner應用程序。它主要是工作,但我有一個問題。應用程序中有一些報告以HTML表單的形式實現。用戶的選項之一是輸出爲CSV格式。在Firefox中,用戶被要求保存文件或打開它(在Excel或其他)。在XULRunner的應用程序,我得到含有彈出:從XULRunner瀏覽器標籤打開CSV文件

XML Parsing Error: undefined entity
Location: chrome://mozapps/content/downloads/unknownContentType.xul
Line Number 30, Column 18: &intro.label;

這似乎是與品牌所討論here

我想我已經遵循的指示。他們在地方有點模糊。以下是我有:

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源代碼樹中找到了該文件。

任何想法?

回答

2

它看起來像你的猜測是正確的,這個問題與品牌有關。 unknownContentType.xul載入了三個區域設置文件:

<!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.dtd是唯一一個不是XULRunner的一部分,它必須由應用程序提供。但是,加載它顯然會失敗並阻止加載其他DTD文件(XULRunner抱怨對話框中的第一個實體)。

現在您不需要將unknownContentType.dtd放入您的擴展中,它已經是XULRunner的一部分。除此之外,你已經做得正確。但是,chrome.manifest中的路徑應該相對於清單而不是應用程序根目錄。所以路徑可能應該是locale/branding/而不是chrome/locale/branding/。您應該在應用程序中打開chrome://branding/locale/brand.dtd以驗證它是否已正確設置。

另一個常見問題:DTD文件必須以UTF-8格式保存而不是 a byte order mark(BOM)。如果您的編輯器默認保存BOM,那麼您需要重新配置它。 XULRunner會考慮以BOM開始的文件無效並忽略它們。

+0

修復它,謝謝 – nicktook