2012-05-30 1 views
0

Добрый день, пожалуйста, сообщите. Я использую FOP 0.95 (версия 1.0) и расширения EXSL. У меня есть этот XML:Возможно ли разобрать XML, завернутый в CDATA, с использованием функции FOP 0.95 и exsl: node-set()?

<List> 
    <Item> 
    <Details><![CDATA[<details><weight>0.5kg</weight><colour>Red</colour></details>]]></Details> 
    </Item> 
</List> 

Есть ли способ, как разобрать строку в CDATA с помощью exsl: функция множества узлов()? Следующий код выводит «< < детали > > веса 0,5кг </вес > < цвета > Красного </цвета > </Детали >» вместо «0.5kg Red», который означает, что он не разбирается, но обрабатываются как строка:

<xsl:variable name="txtDetails" select="/List/Item/Details"/> 
<xsl:variable name="details" select="exsl:node-set($txtDetails)"/> 
<xsl:value-of select="$details"/> 

ответ

1

Ответ отрицательный. Содержимое, заключенное в раздел CDATA, не анализируется как разметка XML. В этом весь смысл разделов CDATA. Использование exsl:node-set() не помогает.

Вопрос не имеет ничего общего с XSL-FO. FOP - это процессор XSL-FO, а не XML-парсер. Конечно, он использует XML-парсер, но это не влияет на этот ответ. FOP также не является XSLT-процессором; даже если он может выполнять преобразования XSLT, фактический XSLT-процессор выполняет настоящую работу «за кулисами».