データ内の文字数に基づいて XML 出力をソートする必要があります。XSLT 1.0 ではこれまでのところ、それを理解できませんでした。これが私が取り組んでいるものです:
ソース XML ファイル:
<ROOT>
<REPLIST>
<NAME>ABCDE.xml</NAME>
<NAME>ABCDEFGH.xml</NAME>
<NAME>ABC.xml</NAME>
<NAME>ABCDEFG.xml</NAME>
<NAME>ABCD.xml</NAME>
<NAME>ABCDEF.xml</NAME>
<NAME>JKLMNOPQRST.xml</NAME>
<NAME>JKLMNOPQRS.xml</NAME>
<NAME>JKLMNOPQ.xml</NAME>
<NAME>JKLMN.xml</NAME>
</REPLIST>
<DATALIST>
<ExtractedName>ABCDEFGH.xml</ExtractedName>
<ExtractedName>JKLMN.xml</ExtractedName>
<ExtractedName>ABCDEFG.xml</ExtractedName>
<ExtractedName>ABCD.xml</ExtractedName>
<ExtractedName>JKLMNOPQRST.xml</ExtractedName>
<ExtractedName>ABCDEFG.xml</ExtractedName>
</DATALIST>
</ROOT>
出力
<TestData>
<FormName>ABCDEFGH</FormName>
<FormName>ABCDEFG</FormName>
<FormName>ABCD</FormName>
<FormName>JKLMNOPQRST</FormName>
<FormName>JKLMN</FormName>
</TestData>
望ましい出力:
<TestData>
<FormName>JKLMNOPQRST</FormName>
<FormName>ABCDEFGH</FormName>
<FormName>ABCDEFG</FormName>
<FormName>JKLMN</FormName>
<FormName>ABCD</FormName>
</TestData>
スタイルシート ( 1.0):
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:output method="xml" omit-xml-declaration="yes" standalone="no"/>
<xsl:template match="/">
<TestData>
<xsl:apply-templates/>
</TestData>
</xsl:template>
<xsl:template match="/ROOT/REPLIST/NAME[.=/ROOT/DATALIST/ExtractedName]">
<FormName>
<xsl:value-of select="translate(.,'.xml','')"/>
</FormName>
</xsl:template>
<xsl:template match="text()">
</xsl:template>
これに関するヘルプは大歓迎です。