Tranform XML, некоторый элемент Ingore, если в XSLT - PullRequest
0 голосов
/ 04 июня 2018

У меня есть требование, когда мне нужно преобразовать XML через XSLT, чтобы некоторые элементы можно было игнорировать.Например, у меня ниже XML для преобразования.

<ItemList>
    <Item ItemID ="Itemid" Status="status">
    </Item>
    <Item ItemID ="1234" Status="2000">
    </Item>
    <Item ItemID ="4567" Status="3000">
    </Item>
</ItemList>

И я написал XSLT вот так.

<xsl:template match = "/">
        <ItemList>
            <xsl:for-each select = "/ItemList/Item">
                <xsl:element name = "{name()}">
                    <xsl:attribute name = "ItemID">
                        <xsl:value-of select = "@ItemID"/>
                    </xsl:attribute>

                    <xsl:element name = "PrimaryInformation">
                        <xsl:attribute name = "Status">
                            <xsl:value-of select = "@Status"/>
                        </xsl:attribute>
                    </xsl:element>
                </xsl:element>
            </xsl:for-each>
        </ItemList>
    </xsl:template>

И я хочу вывод, как показано ниже.

<ItemList>
    <Item ItemID="1234">
        <PrimaryInformation Status="2000"/>
    </Item>
    <Item ItemID="4567">
        <PrimaryInformation Status="3000"/>
    </Item>
</ItemList>

Так что, в основном, я хочу игнорировать первый элемент, где itemid = ItemId.Так что вы можете помочь мне в этом.

1 Ответ

0 голосов
/ 04 июня 2018

Вы можете просто добавить условие в квадратных скобках к выбранному выражению

<xsl:for-each select = "/ItemList/Item[@ItemID != 'Itemid']">

Или это ...

<xsl:for-each select = "/ItemList/Item[not(@ItemID = 'Itemid')]">

Существует разница между этими двумя, вчто первая будет игнорировать Item записей, которые не имеют ItemID атрибутов, но вторая выберет их.

Примечание: В качестве отступления вы можете упростить создание элемента PrimaryInformation доthis, который использует шаблоны значений атрибутов для создания своего атрибута Status.

<PrimaryInformation Status="{@Status}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...