XSLT копировать по атрибуту - PullRequest
0 голосов
/ 14 ноября 2018

У меня проблема. Не могу скопировать только узел с определенным атрибутом в XSLT. Мой XML;

<root>
<mouse code="red"> .. </mouse>
<mouse code="blue"> .. </mouse>
<mouse code="green"> .. </mouse>
</root>

Я пытаюсь скопировать только узел с красным атрибутом, чтобы получить XML следующим образом:

<root>
<mouse code="red"> .. </mouse>
</root>

Можно ли это сделать с помощью простого преобразования XSLT?

DeLuka

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Вы можете сделать просто:

<xsl:template match="/root">
    <xsl:copy>
        <xsl:copy-of select="mouse[@code='red']"/>
    </xsl:copy>
</xsl:template>
0 голосов
/ 14 ноября 2018

Это можно сделать просто с помощью xsl: шаблонов, соответствующих нужному узлу, и использования copy / copy-of.

<xsl:template match="/">
    <xsl:apply-templates/>
</xsl:template>

<xsl:template match="root">
    <xsl:copy>
         <xsl:apply-templates/>
    </xsl:copy>
</xsl:template>

<xsl:template match="mouse[@code='red']">
    <xsl:copy>
        <xsl:copy-of select="@*"/>
        <xsl:apply-templates/>
    </xsl:copy>
</xsl:template>

Конечно, если в мыши есть другие элементы [@ code = 'red'] тогда вам нужно обработать их с помощью другого шаблона.

...