Add CDATA to an xml file

前端 未结 2 886
梦谈多话
梦谈多话 2020-11-29 12:04

I would like to add some CDATA tags around some xml tags

XML source is (it\'s only a small part of my file)



        
相关标签:
2条回答
  • 2020-11-29 12:52

    You either need to do this:

    <xsl:template match="teaserText_fr">
      <xsl:copy>
        <xsl:text disable-output-escaping="yes">&lt;![CDATA[</xsl:text>
        <xsl:copy-of select="*"/>    
        <xsl:text disable-output-escaping="yes">]]&gt;</xsl:text>
      </xsl:copy>
    </xsl:template>
    

    Or this:

    <xsl:template match="teaserText_fr">
      <teaserText_fr>
        <xsl:text disable-output-escaping="yes">&lt;![CDATA[</xsl:text>
        <xsl:copy-of select="*"/>    
        <xsl:text disable-output-escaping="yes">]]&gt;</xsl:text>
      </teaserText_fr>
    </xsl:template>
    

    (I recommend the first approach)

    and you should be all set.

    To give the same treatment to any element whose name starts with "teaserText_":

    <xsl:template match="*[starts-with(local-name(), 'teaserText_')]">
      <xsl:copy>
        <xsl:text disable-output-escaping="yes">&lt;![CDATA[</xsl:text>
        <xsl:copy-of select="*"/>    
        <xsl:text disable-output-escaping="yes">]]&gt;</xsl:text>
      </xsl:copy>
    </xsl:template>
    
    0 讨论(0)
  • 2020-11-29 12:52

    A cleaner approach would be to make use of cdata-section-elements

    Delcare teaserText_fr in cdata-section-elements as below

    <xsl:output method="xml" indent="yes" version="1.0" encoding="UTF-16" 
    standalone="yes" cdata-section-elements="teaserText_fr" />
    

    Then format the XSLT as below. (Do note that you must include CDATA as a wrapper around the element)

    <xsl:template match="/">
        <teaserText_fr>
            <![CDATA[
                <div xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.coremedia.com/2003/richtext-1.0"><p>2012 ist für viele Länder ein   wichtiges Wahljahr. Die Reihe fühlt der weltweiten Demokratie auf den Zahn. </p>
                </div>
            ]]>
        </teaserText_fr>
    </xsl:template>
    
    0 讨论(0)
提交回复
热议问题