3

我需要将几个元素的值插入一个 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>

我正在阅读文档,但找不到解决方案。感谢您的帮助:)

4

2 回答 2

1

如果您真的需要或想要转义标记,请使用

<embassy>
  <xsl:value-of select="Visa/visa_velv/visa_velv_name" /><![CDATA[<br/>]]><xsl:value-of select="Visa/visa_velv/visa_velv_address" /><![CDATA[<br/>]]><xsl:value-of select="Visa/visa_velv/visa_velv_city" />
</embassy>

当然cdata-section-elements="embassy"你已经拥有了。

于 2012-08-25T16:24:17.370 回答
1

这个完整而简单的转换:

<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>
于 2012-08-25T16:36:51.323 回答