Я новичок в xslt. у меня есть ввод xml ниже
<Delivery>
<Item>
<ItemNo>0010</ItemNo>
<Material>GB123SS</Material>
</Item>
<Item>
<ItemNo>0011</ItemNo>
<Material>ST435DL</Material>
</Item>
<Item>
<ItemNo>0020</ItemNo>
<Material>YY902TU</Material>
</Item>
<Item>
<ItemNo>0030</ItemNo>
<Material>AW999AA</Material>
</Item>
и я хотел бы получить такой результат:
1GB123SS
2ST435DL
3YY902TU
4AW999AA
Мое требование - отображать (Item / ItemNo) как нумерацию 1,2,3,4 вместо 0010, 0011, 0020 и 0030.
признателен, если кто-то может дать мне представление о том, как этого добиться. Спасибо.
Вы должны использовать для этого позицию, как показано ниже:
<?xml version = "1.0" encoding = "UTF-8"?>
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
xmlns:xs = "http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes = "xs"
version = "2.0">
<xsl:template match = "/">
<xsl:for-each select = "Delivery/Item">
<xsl:value-of select = "concat(position(), ' ', Material, '
')"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
ИЛИ xsl: number:
<?xml version = "1.0" encoding = "UTF-8"?>
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
xmlns:xs = "http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes = "xs"
version = "2.0">
<xsl:template match = "/">
<xsl:for-each select = "Delivery/Item">
<xsl:number/>
<xsl:value-of select = "concat(' ', Material, '
')"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
спасибо, это очень помогает. Что делать, если я хочу отображать номер как 2 цифры, например 01, 02, 03, 04, 99. Я хотел бы использовать <xsl: number />, есть ли способ отформатировать число до двух цифр? Я пробую номер формата, но похоже, что он не работает.
эй, я нашел решение, я использую <xsl: number format = "01" />.
Большое спасибо за решение !! хорошего дня.
да вот @format
позаботится о любом форматировании. Если вы собираетесь использовать позицию, используйте @format-number
, например: <xsl:value-of select = "concat(format-number(position(), '00'), ' ', Material, '
')"/>
Используйте функцию
position()
илиxsl:number
. Разместите код, если хотите получить лучший ответ.