У меня сложное требование, когда мне нужно дублировать родительский узел и сделать его собственным родительским узлом. Теперь он станет дочерним узлом и будет иметь экранированные символы. Пожалуйста, смотрите пример ниже:XSL Дублировать родительский узел как собственный родительский узел
Образец:
<Messages>
<Parameters>
<Field1>1</Field1>
<Field2>2</Field2>
</Parameters>
<Parameters>
<Field3>3</Field3>
<Field4>4</Field4>
</Parameters>
</Messages>
Желаемая Выход:
<Messages>
<Parameters>
<Parameters>
<Field1>1</Field1>
<Field2>2</Field2>
</Parameters>
</Parameters>
<Parameters>
<Parameters>
<Field3>3</Field3>
<Field4>4</Field4>
</Parameters>
</Parameters>
</Messages>
возможно ли это? На самом деле у меня есть код XSL для экранирования символов благодаря другому ответу на форум stackoverflow. Я не уверен, как создать родительский узел.
Спасибо, ребята! С уважением, XSL Новичок
Мой код до сих пор:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
<xsl:template match="/">
<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
<xsl:apply-templates/>
</ns0:Messages>
</xsl:template>
<xsl:template match="*">
<xsl:text disable-output-escaping="no"><</xsl:text>
<xsl:value-of select="name()"/>
<xsl:apply-templates select="@*"/>
<xsl:text disable-output-escaping="no">></xsl:text>
<xsl:apply-templates select="node()"/>
<xsl:text disable-output-escaping="no"></</xsl:text>
<xsl:value-of select="name()"/>
<xsl:text disable-output-escaping="no">></xsl:text>
</xsl:template>
<xsl:template match="@*">
<xsl:text disable-output-escaping="no"> </xsl:text>
<xsl:value-of select="name()" disable-output-escaping="no"/>
<xsl:text disable-output-escaping="yes">=&quot;</xsl:text>
<xsl:value-of select="." disable-output-escaping="no"/>
<xsl:text disable-output-escaping="yes">&quot;</xsl:text>
</xsl:template>
<xsl:template match="text()">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="ns0:Messages">
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
Я добавил их в свой первоначальный пост. Спасибо за комментарий –