Эта таблица стилей:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="pSortingBy" select="/root/@sorting"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/root">
<xsl:copy>
<xsl:apply-templates select="node()|@*">
<xsl:sort select="*[name()=$pSortingBy]"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
С этим входом:
<root sorting="prop4">
<elem1>
<prop1>A</prop1>
<prop2>B</prop2>
<prop3>C</prop3>
<prop4>D</prop4>
<prop5>A</prop5>
</elem1>
<elem2>
<prop1>B</prop1>
<prop2>C</prop2>
<prop3>D</prop3>
<prop4>A</prop4>
<prop5>B</prop5>
</elem2>
<elem3>
<prop1>C</prop1>
<prop2>D</prop2>
<prop3>A</prop3>
<prop4>B</prop4>
<prop5>C</prop5>
</elem3>
</root>
Выход:
<root sorting="prop4">
<elem2>
<prop1>B</prop1>
<prop2>C</prop2>
<prop3>D</prop3>
<prop4>A</prop4>
<prop5>B</prop5>
</elem2>
<elem3>
<prop1>C</prop1>
<prop2>D</prop2>
<prop3>A</prop3>
<prop4>B</prop4>
<prop5>C</prop5>
</elem3>
<elem1>
<prop1>A</prop1>
<prop2>B</prop2>
<prop3>C</prop3>
<prop4>D</prop4>
<prop5>A</prop5>
</elem1>
</root>
Примечание : Вы можете определить pSortingBy
param как любое имя элемента в соответствии со спецификациями вашего процессора XSLT.
Редактировать : Я не эксперт по Java, но я думаю, что вы могли бы сделать:
javax.xml.transform.TransformerFactory transFact =
javax.xml.transform.TransformerFactory.newInstance( );
javax.xml.transform.Transformer trans = transFact.newTransformer(xsltSource);
trans.setParameter("pSortingBy", "prop5");