我将尝试添加一个<![CDATA[]]>
来包裹一组元素。
输入:
<?xml version="1.0" encoding="UTF-8"?>
<params>
<param dataType="java.lang.String">respID</param>
<param dataType="java.lang.Date">2015-11-04</param>
<param dataType="java.lang.String">
<XX_IL_OLM_COMP_ELEMENT_OBJ><P_OLM_COMP_ELEMENT>
<XX_IL_OLM_COMP_ELEMENT_OBJ>
<P_ACTION>CREATE</P_ACTION>
<p_activity_version_id>12</p_activity_version_id>
</XX_IL_OLM_COMP_ELEMENT_OBJ>
</P_OLM_COMP_ELEMENT>
</XX_IL_OLM_COMP_ELEMENT_OBJ>
</param>
</params>
期望输出:
<?xml version="1.0" encoding="UTF-8"?>
<params>
<param dataType="java.lang.String">respID</param>
<param dataType="java.lang.Date">2015-11-04</param>
<param dataType="java.lang.String">
<![CDATA[
<XX_IL_OLM_COMP_ELEMENT_OBJ><P_OLM_COMP_ELEMENT>
<XX_IL_OLM_COMP_ELEMENT_OBJ>
<P_ACTION>CREATE</P_ACTION>
<p_activity_version_id>12</p_activity_version_id>
</XX_IL_OLM_COMP_ELEMENT_OBJ>
</P_OLM_COMP_ELEMENT>
</XX_IL_OLM_COMP_ELEMENT_OBJ>
]]>
</param>
</params>
基本上,当我有param
元素的子元素时,我需要将子元素包装在CDATA中。
<xsl:output cdata-section-elements="param"/>
,然后使用<param>{serialize(*)}</param>
,但是(a)这将使所有的param元素成为CDATA节,(b)它仍然只能在转换器与序列化程序耦合时才能工作——这是不可避免的,因为CDATA节不存在于XDM数据模型中。但真正的要求可能不是将内容包装在CDATA中,而是输出包含XML词汇字符串而不是元素标记,从这个意义上说,这个解决方案更加健壮。 - Michael Kay