Есть ли способ преобразовать разделы cdata документа XML с помощью шаблона XSL? - PullRequest
2 голосов
/ 26 августа 2009

Возьми этот XML.

Можно ли преобразовать содержимое раздела CDATA с помощью XSLT?

Ответы [ 2 ]

3 голосов
/ 26 августа 2009

Прочитать эту статью - Разделы CDATA

РЕЗЮМЕ: В таблице стилей XSLT раздел CDATA - это чисто утилита чтобы помешать вам избежать всех «<» и т. д. Цель, к которой вы стремитесь для копирует то, что у вас есть в вашем источнике XML прямо в ваш HTML вывод. Элемент xsl: copy-of предназначен именно для этого цель. xsl: копия даст точная копия того, что вы выбираете, включая атрибуты и контент. </p>

XML-документ.

<?xml version="1.0" encoding="iso-8859-1"?>
<know>
   <title/>
   <topic title="" href="">
     <![CDATA[
         Text
        ]]>
    </p>    
   </topic>
</know>

xsl Document.

<xsl:stylesheet  
   version="1.0" 
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output method="html" indent="yes"/>

  <xsl:template  match="know">
     <xsl:value-of select="title"/>
     <xsl:for-each select="topic">
        <xsl:value-of select="@title"/> 
             <xsl:value-of select="." disable-output-escaping="yes"/> 
     </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>
1 голос
/ 26 августа 2009

XSLT обрабатывает разделы CDATA как обычный текст, поэтому вы можете обращаться с ними так же, как с текстовыми узлами. Обратите внимание, что XSLT не сохраняет разделы CDATA отдельно от окружающего текста. Таким образом, если у вас есть

<foo>bar <![CDATA[baz]]> qux</foo>

Исходное дерево будет

  • Документ
    • Элемент: foo
      • Текст: "bar baz qux"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...