【发布时间】:2021-02-04 14:37:49
【问题描述】:
我有一个具有以下结构的 XML 文件:
<catalog>
<category>
<display-name> XYZ </display-name>
</category>
<product>
<display-name> ABC </display-name>
</product>
</catalog>
如何在所有子节点目录/产品/显示名称上添加 CDATA 部分?
这是我写的那种代码,我如何在 cdata-section-elements 上选择指定的子节点:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="no" indent="yes" cdata-section-elements="?"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="catalog">
<catalog catalog-id="master-catalog">
<xsl:apply-templates select="@*|node()"/>
</catalog>
</xsl:template>
</xsl:stylesheet>
感谢您的帮助!
【问题讨论】:
-
嗯,您可以使用
cdata-section-elements="display-name"将该元素的任何文本内容序列化为 CDATA 部分。您不能让它依赖于父元素或祖先元素,它会对输出中的任何display-name元素执行此操作。