我在 xml 标记内有这种类型的 CDATA:
<?xml version="1.0" encoding="UTF-8"?><Data>
<RawData Format="Text"><![CDATA[
<organizationNameEng>fgfgfg</organizationNameEng>
<organizationNameGeo>dfdfdf</organizationNameGeo>
<organizationIdentifier>123456789</organizationIdentifier>
<cardNumber>dfdfdf</cardNumber>
]]></RawData>
</Data>
我想粘贴这些数据(以 CDATA 格式并得到像这样的 xml)
<?xml version="1.0" encoding="UTF-8"?><DataPrep xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Lcid="String">
<Job Name="CompleteJob" Type="Normal" Priority="1">
<Cards>
<Card>
<RawData Format="Text"><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<organizationName>fgfgfg</organizationNameEng>
<organizationIdentifier>123456789</organizationIdentifier>
<cardNumber>dfdfdf</cardNumber>
]]></RawData>
</Data>
</Card>
</Cards>
</Job>
</DataPrep>
我有这样的xslt:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0"
encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Cards/Card">
<xsl:copy>
<xsl:for-each select="document('content.xml')">
<xsl:copy>
<xsl:apply-templates select="*"/>
</xsl:copy>
</xsl:for-each>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
但结果我得到了 CDATA 格式为 > < 格式我应该更改什么才能获得理想的结果?
最佳答案
您可以在 xsl:output
上使用 cdata-section-elements="RawData"
来指定要序列化为 CDATA 部分的元素
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0"
encoding="UTF-8" indent="yes" cdata-section-elements="RawData"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Cards/Card">
<xsl:copy>
<xsl:copy-of select="document('content.xml')"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
关于java - 如何将 CDATA 格式从一种 xml 转换为另一种?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49840559/