在变量上使用 as="element" 时出现类型错误

Type error when using as="element" on a variable

我正在使用 returns 转义 XML 的 Web 服务。我需要取消转义并对其进行转换。鉴于出现此错误,我正在尝试找出如何在单个转换中执行此操作:

Required item type of value of variable $result is element(); supplied value has item type text()

用这个 XML:

  <MyServiceResponse>
    <MyServiceResult>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;vector&gt;&lt;num&gt;1100070561&lt;/num&gt;&lt;/vector&gt;</MyServiceResult>
</MyServiceResponse>

使用此样式表:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="2.0" exclude-result-prefixes="xs">
    <xsl:output omit-xml-declaration="yes"/>
    <xsl:template match="/MyServiceResponse">
        <xsl:variable name="result" as="element()">         
            <xsl:value-of select="MyServiceResult" disable-output-escaping="yes"/>
        </xsl:variable>
        <CustomerID  xmlns="http://myURL.com">
            <xsl:value-of select="$result/*"/>
        </CustomerID>
    </xsl:template>
</xsl:stylesheet>

我正在使用 Saxon-EE 9.6.0.4J

使用 Saxon EE,您可以完全访问 XSLT 3.0 或 Saxon 的扩展函数 http://saxonica.com/html/documentation/functions/saxon/parse.html 所以我会简单地解析结果,例如<xsl:variable name="result" select="saxon:parse(MyServiceResult)" xmlns:saxon="http://saxon.sf.net/"/>。这将为您提供一个文档节点,然后您可以输出其包含的节点,例如<xsl:copy-of select="$result/node()"/>.