【问题标题】:XSLT: How to extract xml content from xslt variableXSLT:如何从 xslt 变量中提取 xml 内容
【发布时间】:2013-06-30 15:52:04
【问题描述】:

输入 XML:

<Resp>
      <Data><![CDATA[QREMLGBU <?xml version="1.0" encoding="UTF-8" ?><Envelope><Headers><Headers><Body><Response>
;
;;
;;;
</Response></Body></Envelope>
</Data>
</Resp>

我想从元素中获取 xml 到一个变量中并从这个变量中提取元素(使用 XPATH)。 (只有前 49 个字符是固定的,其余的可以更改)。

<xsl:template match="/">
    <xsl:variable name="abc">
      <xsl:value-of select="substring(/Resp/Data,49)"/>
    </xsl:variable>
 </xsl:template>

我能够将值转换为变量 abc

<Envelope><Headers><Headers><Body><Response></Response></Body></Envelope>

但是,无法将该变量进一步用作 XML 元素。

Example: 
<xsl:copy-of select="$abc/Envelope/Body/Response"/>

谁能帮我得到如下输出。

<Response>
;
;;
;;;
</Response>

【问题讨论】:

    标签: xml xslt substring cdata


    【解决方案1】:

    因为这是 CDATA 部分中的嵌套 XML,XML 解析器将其视为单个文本节点(CDATA 有效地表示“忽略此处看起来像标记的任何内容,将其视为文本。”)。因此,您需要将文本提取为字符串,然后将其传递给另一个解析器以将其转换为节点树。在 XSLT/XPath 3.0 之前没有标准的方法可以做到这一点,但是一些处理器有扩展。对于 Saxon-PE 或更高版本,您可以使用 XPath 3.0 函数parse-xml()。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-30
      相关资源
      最近更新 更多