<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/1999/xhtml" xpath-default-namespace="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xs" version="2.0">
    
    
    <xsl:strip-space elements="*"/>
    <xsl:template match="node() | @*">
        <xsl:copy>
            <xsl:apply-templates select="node() | @*"/>
        </xsl:copy>
    </xsl:template>
    <xsl:param name="ids" required="yes"/>
    <xsl:param name="base" required="yes"/>
    <xsl:variable name="ids-seq" select="tokenize($ids,'\s+')"/>
    <xsl:template match="html">
        <html>
            <xsl:attribute name="xml:base" select="$base"/>
            <xsl:copy-of select="@*"/>
            <xsl:apply-templates/>
        </html>
    </xsl:template>
    <xsl:template match="head">
        <xsl:copy>
            <xsl:copy-of select="@*|meta[@http-equiv]|meta[lower-case(@name)='dc:identifier']|meta[lower-case(@name)='dc:language']"/>
        </xsl:copy>
    </xsl:template>
    
    <xsl:template match="body/*"/>
    <xsl:template match="body/*[not(@id) and */@id=$ids-seq]">
        <xsl:copy>
            <xsl:apply-templates select="node() | @*"/>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="body//*[@id=$ids-seq]" priority="2">
        <xsl:copy-of select="."/>
    </xsl:template>
</xsl:stylesheet>