Hej janegil
Undskyld mit meget sene svar. Mit projekt tog en anden drejning og jeg har først nu haft tid til at vende tilbage til xslt-processeringen. Der er mærkbart forskel på dine 2 løsninger. Den første kører MEGET hurtigere end den anden løsning. Desuden er der en lille fejl i den første løsning. Hvis der er flere definitioner af 'Own' i samme ordbog går det lidt galt. Jeg skulle nok bare have forklaret at et ord kan være defineret flere gange, men med forskellige betydninger. Anyway så har jeg rettet fejlen.
Jeg skulle desuden bruge p elementet indeholdende ordet.
Min endelige løsning er derfor blevet. den følgende:
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="
http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns="
http://www.w3.org/1999/xhtml" >
<xsl:output method="xml" encoding="iso-8859-1"
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
doctype-system="DTD/xhtml1-transitional.dtd"
indent="yes"/>
<xsl:template match="dictionary">
<dictionary>
<xsl:apply-templates select="p[./hw='Own']"/>
</dictionary>
</xsl:template>
<xsl:template match="p[./hw]">
<xsl:choose>
<xsl:when test="./hw='Own'">
<xsl:copy-of select="."/>
<xsl:apply-templates select="following-sibling::p[1]"/>
<!-- following-sibling::p[1] is in this case the first p for the wanted entry -->
</xsl:when>
<xsl:otherwise>
<!-- Not applying templates, thus stopping processing at the first hw element after the wanted one -->
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="p">
<!-- P that is 'content' of a HW 'element' -->
<!-- Could be any P 'inside' a HW, but template will only be invoked for the 'right' Ps -->
<xsl:copy-of select="."/>
<xsl:apply-templates select="p[hw='Own'][following-sibling::p[1]]"/>
<!-- following-sibling::p[1] is in this case p's for the wanted entry, from the second to the last -->
</xsl:template>
</xsl:stylesheet>