gpt4 book ai didi

xml - 通过 XSLT 使用 CDATA 部分包围 XML 元素

转载 作者:数据小太阳 更新时间:2023-10-29 02:29:19 26 4
gpt4 key购买 nike

我正在尝试添加 <![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 中。

最佳答案

给定此输入 XML:

<?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>

此 XSLT 会将 param 子元素包装在 CDATA 中:

<?xml version="1.0" encoding="UTF-8"?>
<!-- This XSLT will wrap `param` element contents in CDATA:-->
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>

<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="param[*]">
<xsl:copy>
<xsl:apply-templates select="@*"/>

<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>
</xsl:transform>

并生成此输出 XML:

<?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>

关于xml - 通过 XSLT 使用 CDATA 部分包围 XML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33810415/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com