Следующая таблица стилей:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="City[not(@value='Hebron' or @value='Cincinnati')]" />
</xsl:stylesheet>
На этом входе:
<Country value="USA">
<State value="KY">
<City value="Hebron" />
<City value="Lexington" />
<City value="Owensboro" />
</State>
<State value="OH">
<City value="Cincinnati" />
<City value="Columbus" />
<City value="Cleveland" />
</State>
</Country>
Дает следующий результат:
<Country value="USA">
<State value="KY">
<City value="Hebron" />
</State>
<State value="OH">
<City value="Cincinnati" />
</State>
</Country>
Эта таблица стилей использует преобразование идентичности *1011* для копирования всех выходных данных, кроме нежелательных узлов, без изменений.
Другой пример
Вы также можете удалить любой элемент State
, который не имеет нужного города. Эта таблица стилей:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="City[not(@value='Hebron' or @value='Cincinnati')]"/>
<xsl:template
match="State[not(City[@value='Hebron' or @value='Cincinnati'])]"/>
</xsl:stylesheet>
Применяется к этому входу:
<Country value="USA">
<State value="KY">
<City value="Hebron" />
<City value="Lexington" />
<City value="Owensboro" />
</State>
<State value="OH">
<City value="Cincinnati" />
<City value="Columbus" />
<City value="Cleveland" />
</State>
<State value="MO">
<City value="St. Louis" />
</State>
</Country>
Производит:
<Country value="USA">
<State value="KY">
<City value="Hebron" />
</State>
<State value="OH">
<City value="Cincinnati" />
</State>
</Country>