Как удалить элементы из xml, использующего xslt с таблицей стилей и xsltproc?

68
задан Dimitre Novatchev 30 June 2019 в 20:29
поделиться

1 ответ

Используя один из самых фундаментальных шаблонов разработки XSLT: "При переопределении преобразование идентификационных данных " каждый просто запишет следующее:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:output omit-xml-declaration="yes"/>

    <xsl:template match="node()|@*">
      <xsl:copy>
         <xsl:apply-templates select="node()|@*"/>
      </xsl:copy>
    </xsl:template>

    <xsl:template match="Element[@fruit='apple' and @animal='cat']"/>
</xsl:stylesheet>

Делают примечание , как второй шаблон переопределяет идентификационные данные (1-й) шаблон только для элементов под названием "Элемент", которые имеют атрибут "фрукты" со значением "яблоко" и приписывают "животное" со значением "кошка". Этот шаблон имеет пустое тело, что означает, что подобранный элемент просто проигнорирован (ничто не производится, когда это подобрано).

, Когда это преобразование применяется на следующий исходный XML-документ:

<doc>... 
    <Element name="same">foo</Element>...
    <Element fruit="apple" animal="cat" />
    <Element fruit="pear" animal="cat" />
    <Element name="same">baz</Element>...
    <Element name="same">foobar</Element>...
</doc>

к требуемому результату приводят:

<doc>... 
    <Element name="same">foo</Element>...
    <Element fruit="pear" animal="cat"/>
    <Element name="same">baz</Element>...
    <Element name="same">foobar</Element>...
</doc>
[еще 119] фрагменты кода использования и переопределения шаблона идентификационных данных могут быть найдены здесь .

131
ответ дан Dimitre Novatchev 24 November 2019 в 14:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: