如何用XSLT生成带CDATA段的xml文档?

transj 2006-10-13 10:23:57
问题如下:

被转换的XML: input.xml
<?xml version="1.0" encoding="UTF-8"?>
<row>
<ident>10</ident>
<dckid>10699</dckid>
</row>

产生的XML: output.xml
<?xml version="1.0" encoding="UTF-8"?>
<ExceptionMessage>
<docsMessage><![CDATA[10
10699]]></docsMessage>
</ExceptionMessage>

我所想生成的XML:
<?xml version="1.0" encoding="UTF-8"?>
<ExceptionMessage>
<docsMessage><![CDATA[
<ident>10</ident>
<dckid>10699</dckid>
]]></docsMessage>
</ExceptionMessage>

我使用的XSLT 文件:
XSLT 文件:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="text" indent="yes" omit-xml-declaration="no" cdata-section-elements="docsMessage"/>

<xsl:template match="/">
<ExceptionMessage>
<xsl:element name="docsMessage">

<xsl:value-of select="row" disable-output-escaping="no"/>

</xsl:element>
</ExceptionMessage>

</xsl:template>
</xsl:stylesheet>

...全文
690 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cds27 2006-10-16
  • 打赏
  • 举报
回复
写错了,
<xsl:copy-of select="root/*"/>
改为:
<xsl:copy-of select="row/*"/>
cds27 2006-10-16
  • 打赏
  • 举报
回复
关键语句: <xsl:copy-of select="root/*"/>
cds27 2006-10-16
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="text" indent="yes" omit-xml-declaration="no" cdata-section-elements="docsMessage"/>

<xsl:template match="/">
<ExceptionMessage>
<xsl:element name="docsMessage">

<xsl:copy-of select="root/*"/>

</xsl:element>
</ExceptionMessage>

</xsl:template>
</xsl:stylesheet>
影子传说_Hades 2006-10-13
  • 打赏
  • 举报
回复
#######给分给分,累死拉!!###############
<?xml version="1.0" encoding="UTF-8"?>
<row>
<ident>10</ident>
<dckid>10699</dckid>
</row>


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output
method="xml"
version="1.0"
encoding="GBK"
indent="yes"/>
<xsl:template match="/">
<ExceptionMessage>
<docsMessage>
<xsl:text disable-output-escaping="yes">
<![CDATA[
</xsl:text>
<xsl:call-template name="copyNode" />
<xsl:text disable-output-escaping="yes">
]]>
</xsl:text>
</docsMessage>
</ExceptionMessage>
</xsl:template>
<xsl:template match="@*|node()" name="copyNode">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>




public static void xsltConvert(String xmlSourceFile,
String xsltSourceFile,
OutputStream out) {
try {
File xmlFile = new File(xmlSourceFile);
File xsltFile = new File(xsltSourceFile);

Source xmlSource = new StreamSource(xmlFile);
Source xsltSource = new StreamSource(xsltFile);
Result result = new StreamResult(out);

TransformerFactory transFact = TransformerFactory.newInstance();
Transformer trans = transFact.newTransformer(xsltSource);
//给参数传递值
//trans.setParameter("image","B.jpg");
//trans.clearParameters();
trans.transform(xmlSource, result);
} catch (Exception ex) {
ex.printStackTrace();
}
}


生成---------------->
<?xml version="1.0" encoding="GBK"?>
<ExceptionMessage>
<docsMessage>
<![CDATA[

<row>
<ident>10</ident>
<dckid>10699</dckid>
</row>
]]>
</docsMessage>
</ExceptionMessage>
影子传说_Hades 2006-10-13
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="1.xsl"?>
<row>
<ident>10</ident>
<dckid>10699</dckid>
</row>

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="text" indent="yes" omit-xml-declaration="no" cdata-section-elements="docsMessage"/>

<xsl:template match="/">
<ExceptionMessage>
<xsl:element name="docsMessage">

<xsl:value-of select="row" disable-output-escaping="no"/>

</xsl:element>
</ExceptionMessage>

</xsl:template>
</xsl:stylesheet>

--------------------------->结果是 10 10699
楼主是如何得到
<?xml version="1.0" encoding="UTF-8"?>
<ExceptionMessage>
<docsMessage><![CDATA[10
10699]]></docsMessage>
</ExceptionMessage>

??
zghmu007 2006-10-13
  • 打赏
  • 举报
回复
路过 帮顶

67,511

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧