输入:(XML(
<A1Result xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<![CDATA[
<?xml version="1.0" encoding="UTF-8" ?>
<ABCD_XML_DATA>
<Header>
<MessageId>AGDMY1323292534488</MessageId>
</Header>
</ABCD_XML_DATA>
]]>
</A1Result>
我需要使用xsl:输出
<ABCD_XML_DATA>
<Header>
<MessageId>AGDMY1323292534488</MessageId>
</Header>
</ABCD_XML_DATA>
附加信息,我的i/p&o/p是用varibales写的。
我试过了,
<xsl:variable name="Data">
<xsl:value-of select="$A1Result" disable-output-escaping="yes"/>
</xsl:variable>
请建议如何实现这一点,谢谢。
最终找到了答案,来自Borodin(下图(的原始答案也起作用。我必须解析I/p,以便我的处理器识别。
(我使用的是dpxsl处理器,所以名称空间是dp(;我昨天也在做同样的事,但运气不好;我必须解析它才能工作。
<xsl:copy-of select="dp:parse(dp:variable('var://context/saved/MyRes')//*[local-name()='A1Result'])" disable-output-escaping="yes"/>
其中,'var://context/saved/MyRes',具有来自问题的输入xml。
谢谢大家。
您的源XML格式不正确,因为在根元素的打开标记之后不能有XML声明。
假设这个声明应该移到文件的顶部,那么您可以编写一个XSLT转换,使用text
输出方法来生成您想要的内容。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:value-of select="A1Result"/>
</xsl:template>
</xsl:stylesheet>
输出
<ABCD_XML_DATA>
<Header>
<MessageId>AGDMY1323292534488</MessageId>
</Header>
</ABCD_XML_DATA>
更新
如果您想从CDATA中删除XML声明,那么最好使用
<xsl:value-of select="substring-after(A1Result, '?>')"/>