Общая идея верна, только пустой шаблон неверен.Следующие работы:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="ISO-8859-1"/>
<xsl:template match="*|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="publication[descendant::url[(starts-with(.,'http://media.')
or starts-with(.,'http://media3.')) and ends-with (., '.pdf')]]"/>
</xsl:stylesheet>
Простыми словами: скопируйте все, кроме публикации с потомком, являющимся элементом url, значение (.) Которого начинается / заканчивается указанными строками.Это xslt 1.0.