有没有办法用XSL模板转换XML文档的cdata部分?

时间:2009-08-26 06:11:49

标签: xml xslt

拿这个XML。

我有办法用XSLT转换CDATA部分的内容吗?

2 个答案:

答案 0 :(得分:3)

阅读本文 - CDATA Sections

  

摘要:在XSLT样式表中,   CDATA部分纯粹是一种实用工具   阻止你逃避所有   '<'等你瞄准的目标   因为正在复制你拥有的东西   在您的XML源代码中直接进入您的   HTML输出。 xsl:copy-of元素   正是为此而设计的   目的。 xsl:copy-of会给出一个   您选择的任何内容的精确副本,   包括属性和内容。

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 :(得分:1)

XSLT将CDATA部分处理为普通文本,因此您可以像处理文本节点一样处理它们。请注意,XSLT不会将CDATA节保留为与周围文本分开。因此,如果你有

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

源树将是

  • 文档
    • 元素:foo
      • 文字:“bar baz qux”