在xsl中添加了一些节点后,我需要使用xml文档节点对它们进行排序,以正确格式化文本输出。 请注意,输出可以按照不同的方式排序,具体取决于阅读文本文档首选项目顺序的应用程序。
这是XML:
$(document).ready(function(){
var my_param = getUrlParameter('key');
if(my_param == "value"){
//do your stuff here
}
});
var getUrlParameter = function getUrlParameter(sParam) {
var sPageURL = decodeURIComponent(window.location.search.substring(1)),
sURLVariables = sPageURL.split('&'),
sParameterName,
i;
for (i = 0; i < sURLVariables.length; i++) {
sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] === sParam) {
return sParameterName[1] === undefined ? true : sParameterName[1];
}
}
};
这是XSL:
<?xml version="1.0" encoding="UTF-8"?>
<Main>
<GroupA>
<a>A</a>
<b>B</b>
<Sub type="Z">
<bb name="100" dev="1" c="C"><P>N100</P></bb>
<bb name="50" dev="1" c="C"><P>N50</P></bb>
<bb name="20" dev="1" c="C"><P>N20</P></bb>
<bb name="10" dev="1" c="C"><P>N10</P></bb>
<bb name="5" dev="1" c="C"><P>N5</P></bb>
<bb name="200" dev="2" c="C"><P>C200</P></bb>
<bb name="100" dev="2" c="C"><P>C100</P></bb>
<bb name="50" dev="2" c="C"><P>C50</P></bb>
<bb name="25" dev="2" c="C"><P>C25</P></bb>
<bb name="10" dev="2" c="C"><P>C10</P></bb>
<bb name="5" dev="2" c="C"><P>C5</P></bb>
<bb name="1" dev="2" c="C"><P>C1</P></bb>
<bb name="100" dev="1" c="U"><P>N100</P></bb>
<bb name="50" dev="1" c="U"><P>N50</P></bb>
<bb name="20" dev="1" c="U"><P>N20</P></bb>
<bb name="10" dev="1" c="U"><P>N10</P></bb>
<bb name="5" dev="1" c="U"><P>N5</P></bb>
<bb name="2" dev="1" c="U"><P>N2</P></bb>
<bb name="1" dev="1" c="U"><P>N1</P></bb>
</Sub>
<Sub type="B">
<bb name="111" dev="1" c="C"><P>N100</P></bb>
<bb name="55" dev="1" c="C"><P>N50</P></bb>
<bb name="22" dev="1" c="C"><P>N20</P></bb>
<bb name="11" dev="1" c="C"><P>N10</P></bb>
<bb name="5" dev="1" c="C"><P>N5</P></bb>
<bb name="222" dev="2" c="C"><P>C200</P></bb>
<bb name="111" dev="2" c="C"><P>C100</P></bb>
<bb name="55" dev="2" c="C"><P>C50</P></bb>
<bb name="25" dev="2" c="C"><P>C25</P></bb>
<bb name="11" dev="2" c="C"><P>C10</P></bb>
<bb name="5" dev="2" c="C"><P>C5</P></bb>
<bb name="1" dev="2" c="C"><P>C1</P></bb>
</Sub>
</GroupA>
</Main>
这是当前的输出: A,B,N1000XN2XN1XN100,N50,N20,N10,N5,C200,C100,C50,C25,C10,C5,C1
这是我想要的输出: A,B,N1000X,N100,N50,N20,N10,N5,N2X,和N1x,C200,C100,C50,C25,C10,C5,C1
感谢您的帮助。
答案 0 :(得分:0)
如果(!)我理解正确,你想做:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common"
extension-element-prefixes="exsl">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:variable name="add">
<bb c="C" name="1000" dev="1"><P>N1000X</P></bb>
<bb c="C" name="2" dev="1"><P>N2X</P></bb>
<bb c="C" name="1" dev="1"><P>N1X</P></bb>
</xsl:variable>
<xsl:template match="GroupA">
<xsl:value-of select="a" />
<xsl:text>,</xsl:text>
<xsl:value-of select="b" />
<xsl:text>,</xsl:text>
<xsl:for-each select="Sub[@type='Z']/bb[@c='C'] | exsl:node-set($add)/bb">
<xsl:sort select="@dev" data-type="number" order="ascending"/>
<xsl:sort select="@name" data-type="number" order="descending"/>
<xsl:value-of select="P"/>
<xsl:if test="position()!=last()">
<xsl:text>,</xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>