xslt - как увеличить счетчик для каждого узла - PullRequest
0 голосов
/ 31 октября 2018

Я новичок в 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.

признателен, если кто-нибудь может дать мне представление о том, как этого добиться. благодарю вас.

1 Ответ

0 голосов
/ 31 октября 2018

Вы должны использовать позицию для этого, как показано ниже:

<?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, '&#x000a;')"/>
        </xsl:for-each>
    </xsl:template>

</xsl:stylesheet>

ИЛИ xsl: номер:

<?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, '&#x000a;')"/>
        </xsl:for-each>
    </xsl:template>

</xsl:stylesheet>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...