Прежде чем я объясню проблему, с которой я столкнулся, мне, вероятно, нужно сначала объяснить проблему, которую я хотел решить. :)
У меня есть XML, который будет отформатирован с помощью XSL. Этот XML содержит теги HTML в CDATA, например: -
<doc>
<![CDATA[
<b>Hello!</b>
]]>
</doc>
Когда XSL выполняет преобразование, браузер отображает <b>Hello!</b>
вместо отображения слова Hello! жирным шрифтом. Я проверил исходный код, и он выглядит так: -
<doc>
<b>Hello!</b>
</doc>
Чтобы решить эту проблему, я думаю об использовании JQuery для отображения текста в виде HTML, например: -
$(document).ready(function(){
var obj = $(".content");
alert("text: " + obj.text()); // to test if JQuery works
obj.html(obj.text());
});
Итак, я попытался добавить библиотеку JQuery в XSL, и после пары попыток и прочтения о проблеме с тегом <script>
кажется, что мне нужно добавить пустышку между открывающим и закрывающим тегом <script>
, например это: -
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js">
<xsl:comment/>
</script>
Отображаемое отображение показывает 2 ошибки в Firebug: -
b.style is undefined
(function(a,b){function ci(a){return d...a:a+"px")}}),a.jQuery=a.$=d})(window);
$ is not defined
... и приведенные выше операторы javascript вообще не работают, даже не выводит предупреждение.
Я решил понизить JQuery с 1.5.2 до 1.3.2, чтобы посмотреть, исправит ли это что-нибудь. Теперь я получаю эту ошибку от Firebug: -
K.style is undefined
(function(){var R=/((?:\((?:\([^()]+\)...,typeof K==="string"?K:K+"px")}})})();
Хорошая новость в том, что я получаю предупреждение с JQuery 1.3.2. Плохая новость: obj.html(obj.text());
ничего не делает.
Просто из любопытства я изменяю obj.html(obj.text());
на obj.text("Just Testing: " + obj.text());
, что является глупым тестом, но он работает ... Я вижу, как Just Testing:
вставляется в реальный контент.
Как мне заставить obj.html(obj.text());
работать здесь? Или более общий вопрос: как получить HTML-теги из CData для отображения в виде HTML, а не в виде текста?
Большое спасибо.
UPDATE
Я сделал еще один тест ... obj.html("aaa");
тоже не работает. Я начинаю верить, что это как-то связано с XSL-преобразованием, которое мешает правильной работе JQuery. Я все еще использую 1.3.2 здесь.