输入:(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&amp; o / p写入varibales。
我试过这个,
<xsl:variable name="Data">
<xsl:value-of select="$A1Result" disable-output-escaping="yes"/>
</xsl:variable>
请建议如何实现这一点,谢谢。
答案 0 :(得分:1)
终于想通了,鲍罗丁(下图)的原始答案也有效。我不得不解析i / p,让我的处理器识别出来。
(我使用的是dp xsl处理器,所以名称空间为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。
全部谢谢。
答案 1 :(得分:0)
您的源XML格式不正确,因为您无法在根元素的开始标记之后获得XML声明。
假设应该将此声明移动到文件的顶部,您可以编写一个使用text
输出方法生成所需内容的XSLT转换。
<?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, '?>')"/>