Как удалить элементы, атрибуты которых имеют определенные значения в XSLT - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть XML, как показано ниже, где я хочу удалить <Student> элементы, атрибуты Name и Class которых &lt;Choose One&gt;.

Как мне добиться этого в XSLT?

<Students>
    <Student Name="&lt;Choose One&gt;" Class="&lt;Choose One&gt;" />
<Students>

Это мой пример XML:

<?xml version='1.0' encoding='utf-8'?>
<Classes>         
    <Class Name="Class A">
        <UniqueSourceIdentifier>1345</UniqueSourceIdentifier>
        <Students>
            <Student Name="Test1" Units="Unit A" />
            <Student Name="&lt;Choose One&gt;" Units="&lt;Choose One&gt;" />
            <Student Name="&lt;Choose One&gt;" Units="&lt;Choose One&gt;" />
            <Student Name="&lt;Choose One&gt;" Units="&lt;Choose One&gt;" />
        </Students>  <!-- Added by edit -->
    </Class>         <!-- Added by edit -->
</Classes>           <!-- Added by edit -->

1 Ответ

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

Чтобы удалить все элементы <Student> с заданными свойствами, вы можете использовать следующий пустой шаблон:

<xsl:template match="Student[contains(@Name,'&lt;Choose One&gt;') and contains(@Units,'&lt;Choose One&gt;')]" />

Чтобы скопировать все остальные элементы, вы можете использовать шаблон Identity

<!-- identity template  -->
<xsl:template match="node()|@*">
  <xsl:copy>
    <xsl:apply-templates select="node()|@*" />
  </xsl:copy>
</xsl:template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...