Как определить переменную DTD внутри раздела CDATA? - PullRequest
1 голос
/ 11 января 2011

У меня есть XML, который выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd" 
    [<!ENTITY IP_COF "xxx.xxx.xxx.xxx">]
>
<properties>
   <comment>Properties for COF API</comment>
   <entry key="SesameURL">http://&IP_COF;:8080/openrdf-sesame</entry>
   <entry key="RDbNamespaces">
       <![CDATA[PREFIX vocab: <http://&IP_COF;:2020/vocab/resource/>]]>
   </entry>
</properties>

Когда я открываю файл xml с помощью Internet Explorer, первое значение &IP_COF; корректно заменяется соответствующим значением IP_COF, вместо этого IP_COF внутри раздела CDATA не оценивается. Есть ли способ вызвать оценку IP_COF в разделе CDATA?

1 Ответ

3 голосов
/ 11 января 2011

Нет - суть секций CDATA в том, что парсер не изменит их.

Если вы хотите использовать расширения сущностей там, вам нужно удалить CDATA,и кодировать URL-адрес, например,

<entry key="RDbNamespaces">
   PREFIX vocab: &lt;http://&IP_COF;:2020/vocab/resource/&gt;
</entry>
...