с помощью XSLT 1.0 на Python, я пытаюсь выбрать несколько пунктов, в то время как с указанием порядка:Выбор из XML определения порядка
<?xml version="1.0" encoding="UTF-8"?>
<items>
<item name='1'>
first
</item>
<item name='2'>
second
</item>
<item name='3'>
third
</item>
</items>
Если я использую для-каждый с большим соединены через список, Я могу получить нужные элементы, но только в исходном порядке исходного документа xml.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="items/item[@name='2']|items/item[@name='1']">
<p>hi</p>
<xsl:value-of select="." />
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Это дает:
hi
first
hi
second
Но я хотел бы иметь его вывод:
hi
second
hi
first
Я думаю, что с помощью XSL: Наносить-шаблоны могут быть путь, но я не может заставить его работать даже с этим простым примером. Каков наилучший способ в xslt 1.0 выбрать элементы в определенном порядке?
См. Ответ, который предоставил har07 (с помощью двух шаблонов 'apply-templates'), оператор объединения' | ', который вы используете, сортирует его операнды в порядке документа, поэтому ваша попытка с помощью элементов' select = "item/item [@ name = '2'] | items/item [@ name = '1'] "' не определяет порядок для 'for-each', как вы хотите. В XSLT 2.0 вы можете использовать запятый оператор ',', как в 'select =" items/item [@ name = '2'], items/item [@ name = '1'] "', но XSLT 1.0 не использует иметь этот оператор. –