2014-02-08 6 views
0

У меня есть xml-недружественные символы в моем xmls. Некоторые синтаксические анализаторы xml могут быть настроены так, чтобы быть дружественными с этими символами. Но я решил окружить их CDATA, чтобы избежать ошибок XSL-процессора. Но мне нужно как-то изменить xsl. Вот что у меня сейчас:Как извлечь текст из CDATA с помощью XSLT?

<subject> 
    <![CDATA[svn commit: r41657 - head/en_US.ISO8859-1/books/handbook/basics]]> 
</subject> 

У меня есть переменная

<xsl:variable name="message_subject"> 
<xsl:text> “</xsl:text> 
<xsl:value-of select="/browser/message/subject"/> 
<xsl:text>”</xsl:text> 
</xsl:variable> 

Он используется так:

<h1> 
    <xsl:copy-of select="$message_subject"/> 
</h1> 

и дает мне

<h1> 
    “<![CDATA[svn commit: r41657 - head/en_US.ISO8859-1/books/handbook/basics]]>” 
</h1> 

Проблема заключается в том, что CDATA смешивается с нужной строкой. Я использую net.sf.saxon.TransformerFactoryImpl. Как заставить xslt взять только содержимое CDATA?

+2

Я не могу воспроизвести проблему. Можем ли мы увидеть больше вашей таблицы стилей (каков тип вывода, как вы используете переменную)? Какой процессор вы используете? –

+0

@ michael.hor257k, спасибо за внимание. Я обновил описание проблемы, поэтому, надеюсь, вы сможете воспроизвести это. Я использую саксон. –

ответ

1

(a) В вашем XML-коде нет ничего, что требовало бы CDATA. Единственными символами в XML, которые требуют экранирования, являются & и <, и ни одно из них не появляется в ваших данных.

(b) XSLT видит данные после снятия тегов CDATA. В вашем примере он увидит точно такой же контент, как если бы теги CDATA не были там.

Результат, который вы показываете, очень странный, и я не знаю, как вы его достигаете. Я не знаю, почему вы решили использовать такую ​​старую версию саксонской, но я сомневаюсь, что это объяснение. Что-то еще происходит, о чем мы не знаем.

0

Если я не ошибаюсь прочитав вопрос, попробуйте следующее:

<xsl:value-of 
    select="node where CDATA resides" 
    disable-output-escaping="yes|no" 
/> 
Смежные вопросы