Я использую банеры SaxonHE для процессоров XSLT 2.0, чтобы изменить последовательность элементов на требуемую последовательность с помощью XSD. Но не получить желаемый результат.
Моего файл XML является:Как сортировать элементы в соответствии с последовательностью, заданной в XSD-файле xshema с XSLT 2: выполнить-сортировать
<param xsi:type="Bank">
<bankData name="ABC"/>
<branchAddress id="ABCB1">NY</branchAddress>
<legalAddress id="ABCL1">UK</legalAddress>
</param>
В соответствии с XSD, правильная последовательность для дочерних элементов паров тега bankData, legalAddress, branchAddress. Параметр тега может содержать данные любого типа. Таким образом, последовательность должна быть изменена, если тип атрибута «Банк»
Я использую этот код XSL, чтобы изменить последовательность:
<xsl:variable name="bankElementSeq" as="element()*">
<bankData/><legalAddress/><branchAddress/>
</xsl:variable>
<xsl:template match="param/*">
<xsl:if test="param/@xsi:type='Bank'">
<xsl:perform-sort select="param/*">
<xsl:sort select="index-of($bankElementSeq//node-name(.), node-name(.))"/>
</xsl:perform-sort>
</xsl:if>
</xsl:template>
Требуемая мощность является:
<param xsi:type="Bank">
<bankData name="ABC"/>
<legalAddress id="ABCL1">UK</legalAddress>
<branchAddress id="ABCB1">NY</branchAddress>
</param>
Но я получение продукции как:
<param xsi:type="Bank">
</param>
Детские элементы не написаны.
В чем может быть проблема?
Там нет ничего в этом вопросе частности, Saxon, так что я удалил этот тег –