xslt插入cdata

标签 xslt cdata

我需要将多个元素的值插入到一个 cdata 中...这是我的代码:

首先,我做了输出:

<xsl:output method="xml" encoding="UTF-8" intend="yes" cdata-section-elements="embassy" />

这是元素定义:

<xsl:element name="embassy">
  <xsl:value-of select="Visa/visa_velv/visa_velv_name" />
  <xsl:element name="br" />
  <xsl:value-of select="Visa/visa_velv/visa_velv_address" />
  <xsl:element name="br" />
  <xsl:value-of select="Visa/visa_velv/visa_velv_city" />
</xsl:element>

这里是我需要的错误输出:

<embassy><![CDATA[Ambasada e Republikes se Cekise]]>
  <br/><![CDATA[Rruga Skënderbej 10]]>
  <br/><![CDATA[Tirana]]>            
</embassy>

我需要这个输出:

<embassy>
  <![CDATA[Ambasada e Republikes se Cekise<br/>Rruga Skënderbej 10<br/>Tirana]]>
</embassy>

我正在阅读 documentation但我找不到解决办法。感谢您的帮助:)

最佳答案

这个完整而简单的转换:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes" cdata-section-elements="Embassy"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="visa_velv">
     <Embassy>
       <xsl:value-of select=
       "concat(visa_velv_name,'&lt;br/>',visa_velv_address,'&lt;br/>',visa_velv_city)"/>
     </Embassy>
 </xsl:template>
</xsl:stylesheet>

应用于以下 XML 文档时:

<Visa>
 <visa_velv>
   <visa_velv_name>Ambasada e Republikes se Cekise</visa_velv_name>
   <visa_velv_address>Rruga Skënderbej 10</visa_velv_address>
   <visa_velv_city>Tirana</visa_velv_city>
 </visa_velv>
</Visa>

产生想要的结果:

<Embassy><![CDATA[Ambasada e Republikes se Cekise<br/>Rruga Skënderbej 10<br/>Tirana]]></Embassy>

关于xslt插入cdata,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12123287/

相关文章:

perl 文件中的正则表达式 cdata

xml - 跳转到使用 XSLT

javascript - 带有 TH onclick 的下拉菜单触发 TH click,而不是下拉菜单

html - &#160 在 HTML 上显示为 '?' 问号

xml - 如何在 XSLT 中对多个节点的值求和

c# - HTML 的 XML 序列化

xml - 我在一个 xml 文件中有两个 <?xml version ="1.0"encoding ="UTF-8"?> 标签,我正在尝试为其创建一个 xslt,我如何处理这些标签?

xml - 只要 XHTML 实体编码包含在 CDATA 标记内,它们在 XML 文档中是否有效?

java - 检测文本内容是否有CDATA

python - 如何使用 LXML 或 BeautifulSoup 删除 CDATA 标签但保留 Python 中的实际数据