Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XSLT:如何从XSLT变量中提取xml内容_Xml_Xslt_Substring_Cdata - Fatal编程技术网

XSLT:如何从XSLT变量中提取xml内容

XSLT:如何从XSLT变量中提取xml内容,xml,xslt,substring,cdata,Xml,Xslt,Substring,Cdata,输入XML: <Resp> <Data><![CDATA[QREMLGBU <?xml version="1.0" encoding="UTF-8" ?><Envelope><Headers><Headers><Body><Response> ; ;; ;;; </Response></Body></Envelope> </Data>

输入XML:

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

;
;;
;;;
我希望将xml from元素转换成一个变量,并从这个变量中提取元素(使用XPATH)。 (仅前49个字符是固定的,其余字符可以更改)


我可以将值转换为变量abc,如下所示

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

但是,不能将该变量进一步用作XML元素

Example: 
<xsl:copy-of select="$abc/Envelope/Body/Response"/>
示例:
谁能帮我得到下面的输出

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

;
;;
;;;

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

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

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