При преобразовании некоторых документов xml (dita) возникает проблема со специальными символами, амперсандом и символом «меньше» (<). Но если взять в качестве примера амперсанд, то происходит то, что по какой-то причине он повторяется несколько раз на выходе. Дело в том, что я обнаружил, что если <code>& заменяется (непосредственно в содержимом xml) на &
, то это работает нормально, без повторов.
Я не знаю, что вызывает это, но я хочу объявить амперсанд в DTD, чтобы заменить его на &
. По поиску, я обнаружил, что вы должны сделать это так:
<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd" [
<!ENTITY amp "&#38;">
]>
Для простоты я включил здесь объявление встроенной сущности, но я также попытался объявить его в фактическом DTD (concept.dtd). Но это не работает. Кажется, он даже не срабатывает, потому что я тоже попытался заменить его на <!ENTITY amp "TEST">
, просто чтобы посмотреть, что он вообще что-то сделал, и не сделал.
Так как мне это сделать? Я просто хочу, чтобы &
был заменен на &
; поэтому мне не нужно вручную заменять каждое вхождение в каждом документе ...