如何使用xslt重新排列重复的xml节点
请为下面的问题提供xslt代码。我提供了一个来自输入XML和预期XML的简单代码。如果有人能提供XSLT代码以将输入xml转换为预期的xml格式,我们将不胜感激 输入XML如何使用xslt重新排列重复的xml节点,xml,xslt,xslt-2.0,Xml,Xslt,Xslt 2.0,请为下面的问题提供xslt代码。我提供了一个来自输入XML和预期XML的简单代码。如果有人能提供XSLT代码以将输入xml转换为预期的xml格式,我们将不胜感激 输入XML <INFOPERSONFILLNOTE> <VARIABLELABEL>Level</VARIABLELABEL> <SERIALNO1 STATUS="NONE"> 1 <VARIABLELABEL>S1</VARIA
<INFOPERSONFILLNOTE>
<VARIABLELABEL>Level</VARIABLELABEL>
<SERIALNO1 STATUS="NONE">
1
<VARIABLELABEL>S1</VARIABLELABEL>
<CHANGEDATE/>
<CHANGEREASON/>
</SERIALNO1>
<SERIALNO1 STATUS="NONE">
2
<VARIABLELABEL>S2</VARIABLELABEL>
<CHANGEDATE/>
<CHANGEREASON/>
</SERIALNO1>
<CLASSPERSONFILLNOTE STATUS="NONE">
c1
<VARIABLELABEL>C1</VARIABLELABEL>
<CHANGEDATE>20200226</CHANGEDATE>
<CHANGEREASON>cr</CHANGEREASON>
</CLASSPERSONFILLNOTE>
<CLASSPERSONFILLNOTE STATUS="NONE">
c2
<VARIABLELABEL>C2</VARIABLELABEL>
<CHANGEDATE>20200226</CHANGEDATE>
<CHANGEREASON>cr</CHANGEREASON>
</CLASSPERSONFILLNOTE>
</<INFOPERSONFILLNOTE>
水平仪
1.
S1
2.
S2
c1
C1
20200226
铬
c2
C2
20200226
铬
XSLT:
结果:
<INFOPERSONFILLNOTE>
<VARIABLELABEL>Level</VARIABLELABEL>
<SERIALNO1 STATUS="NONE">
1
<VARIABLELABEL>S1</VARIABLELABEL>
<CHANGEDATE/>
<CHANGEREASON/>
</SERIALNO1><CLASSPERSONFILLNOTE STATUS="NONE">
c1
<VARIABLELABEL>C1</VARIABLELABEL>
<CHANGEDATE>20200226</CHANGEDATE>
<CHANGEREASON>cr</CHANGEREASON>
</CLASSPERSONFILLNOTE><SERIALNO1 STATUS="NONE">
2
<VARIABLELABEL>S2</VARIABLELABEL>
<CHANGEDATE/>
<CHANGEREASON/>
</SERIALNO1><CLASSPERSONFILLNOTE STATUS="NONE">
c2
<VARIABLELABEL>C2</VARIABLELABEL>
<CHANGEDATE>20200226</CHANGEDATE>
<CHANGEREASON>cr</CHANGEREASON>
</CLASSPERSONFILLNOTE>
</INFOPERSONFILLNOTE>
水平仪
1.
S1
c1
C1
20200226
铬
2.
S2
c2
C2
20200226
铬
感谢您的回复。我是XSLT新手,不知道如何将xml中多个转换的代码合并到一个XSLT中。如果您能帮助我实现以下转变,我将非常感谢您的努力。我正在用完整的输入和预期的xml编写一个不同的问题。再次感谢你的帮助。非常感谢你的支持。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()">
<xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
</xsl:template>
<xsl:template match="INFOPERSONFILLNOTE">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates select="VARIABLELABEL"/>
<xsl:for-each select="SERIALNO1|CLASSPERSONFILLNOTE">
<xsl:sort select="number(translate(VARIABLELABEL, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', ''))" order="ascending"/>
<xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
</xsl:for-each>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
<INFOPERSONFILLNOTE>
<VARIABLELABEL>Level</VARIABLELABEL>
<SERIALNO1 STATUS="NONE">
1
<VARIABLELABEL>S1</VARIABLELABEL>
<CHANGEDATE/>
<CHANGEREASON/>
</SERIALNO1><CLASSPERSONFILLNOTE STATUS="NONE">
c1
<VARIABLELABEL>C1</VARIABLELABEL>
<CHANGEDATE>20200226</CHANGEDATE>
<CHANGEREASON>cr</CHANGEREASON>
</CLASSPERSONFILLNOTE><SERIALNO1 STATUS="NONE">
2
<VARIABLELABEL>S2</VARIABLELABEL>
<CHANGEDATE/>
<CHANGEREASON/>
</SERIALNO1><CLASSPERSONFILLNOTE STATUS="NONE">
c2
<VARIABLELABEL>C2</VARIABLELABEL>
<CHANGEDATE>20200226</CHANGEDATE>
<CHANGEREASON>cr</CHANGEREASON>
</CLASSPERSONFILLNOTE>
</INFOPERSONFILLNOTE>