XSL | Выборочно копировать только определенные элементы - PullRequest
0 голосов
/ 26 мая 2020

У меня есть документ xml, состоящий только из <product> элементов. Я хотел бы скопировать только те, в которых есть:

<hotspots>
    <flag type="newproduct" visible="yes"/>
</hotspots>

элементы. Мне нужно сделать это через xsl.

Пример <product> выглядит так:

<product>
    <producer>
    <category>
    <unit>
    <description>
    </description>
    <images>
    </images>
    <parameters>
    </parameters>
    <hotspots>
    </hotspots>
</product>

Я думал, что это будет немного проще. У меня действительно xsl выглядит так:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="/product">
    <xsl:copy>
        <xsl:copy-of select="product/hotspots/flag[@type='newproduct']"/>
    </xsl:copy>
</xsl:template>

Заранее спасибо!

1 Ответ

0 голосов
/ 26 мая 2020

У меня есть документ xml, состоящий только из <product> элементов.

Это невозможно. Документ XML также должен иметь единственный элемент root. И тогда ваша попытка должна выглядеть примерно так:

<xsl:template match="/root">
    <xsl:copy>
        <xsl:copy-of select="product[hotspots/flag/@type='newproduct']"/>
    </xsl:copy>
</xsl:template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...