轉換某些xml(dita)文檔時,特殊字符,&符和「小於」字符(<)存在問題。但以「&」爲例,發生的情況是由於某種原因在輸出中重複了幾次。事情是,我發現如果&
被替換(直接在xml內容中)與&
,那麼它工作正常,沒有重複。在DTD中聲明&符號?
我不知道是什麼導致了這種情況,但我想要做的是在DTD中聲明和號以&
代替它。我發現谷歌搜索,你應該是這樣做的:
<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd" [
<!ENTITY amp "&#38;">
]>
爲簡單起見,我在這裏包括內嵌實體聲明,但我也試圖在實際DTD(concept.dtd)宣佈它。但它不起作用。它似乎沒有啓動,因爲我試圖用<!ENTITY amp "TEST">
替換它,只是爲了查看它是否做了任何事情,而沒有。
那麼我該如何做到這一點?我只想將&
替換爲&
;所以我不需要手動替換每個文檔中的每一處...
您正在使用哪個XML解析器?它可能是一個根本不支持內部實體的人 - 這很難符合,但是你去了; 「&」和「<」應該是預定義的,並且即使沒有明確的聲明也是如此。 –
這是DITA Open Toolkit 1.4.3,它使用Saxon 6.5。是的,我知道它應該是預定義的並且可以工作,並且它確實將它變成了&,但不幸的是有多個&的實例。這就是問題......但是如果我用&替換&它不會相乘。 – Anders
您確定要修改正確的DTD嗎?您在下面說過您使用的是oXygen;你有沒有檢查過目錄文件,看看'_ // OASIS // DTD DITA Concept // EN'公共標識符映射到哪個DTD? –