Первая часть этого выполняет преобразование в JavaScript:
function transformXML(_xml, _xsl) {
var
xml = typeof _xml == 'string'
? new DOMParser().parseFromString(_xml, 'text/xml')
: _xml // assume this is a node already
,xsl = typeof _xsl == 'string'
? new DOMParser().parseFromString(_xsl, 'text/xml')
: _xsl // assume this is a node already
,processor = new XSLTProcessor()
;
processor.importStylesheet(xsl);
return processor.transformToDocument(xml.firstChild);
}
Эта функция принимает два параметра. Первый - это XML, который вы хотите преобразовать. Второй - это xslt, который вы хотите использовать для преобразования xml. Оба параметра принимают либо строки, которые будут преобразованы в узлы, либо сами узлы (например, XHR.responseXML).
Вторая часть головоломки - сортировка, в которой вы будете использовать встроенный в xsl xsl:sort
.
<xsl:sort
select="expression"
lang="language-code"
data-type="text|number|qname"
order="ascending|descending"
case-order="upper-first|lower-first"/>
Все параметры являются необязательными, кроме оператора select.
Пример использования сортировки:
<xsl:for-each select="catalog/cd">
<xsl:sort select="artist"/>
<xsl:value-of select="artist"/>
<xsl:text> - </xsl:text>
<xsl:value-of select="title"/>
</xsl:for-each>
Вы можете найти больше информации о xsl:sort
в w3schools .