Я использую веб-службу, которая возвращает экранированный XML. Мне нужно уклониться от него и сделать на нем трансформацию. Я пытаюсь выяснить, как сделать это в один преобразование, учитывая, что я получаю эту ошибку:Ошибка типа при использовании as = "element" для переменной
Required item type of value of variable $result is element(); supplied value has item type text()
с этим XML:
<MyServiceResponse>
<MyServiceResult><?xml version="1.0" encoding="UTF-8"?>
<vector><num>1100070561</num></vector></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
Большое спасибо. И саксон: parse() и parse-xml() отлично работали. Я пошел с последним, поскольку он является частью спецификации 3.0. Моя первая таблица стилей 3.0! ;-) – johkar