转换某些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? –