<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:mo="http://www.w3.org/ns/SMIL" xmlns:epub="http://www.idpf.org/2007/ops" exclude-result-prefixes="#all" version="2.0"> <xsl:param name="id-prefix" required="yes"/> <xsl:variable name="xml-base" select="replace(base-uri(/*),'^(.+/)[^/]*$','$1')"/> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="mo:body"> <xsl:choose> <xsl:when test="@epub:textref"> <seq xmlns="http://www.w3.org/ns/SMIL"> <xsl:apply-templates select="@*"/> <xsl:attribute name="xml:base" select="$xml-base"/> <xsl:if test="@id"> <xsl:attribute name="id" select="concat($id-prefix,@id)"/> </xsl:if> <xsl:if test="@epub:textref"> <xsl:attribute name="epub:textref" select="resolve-uri(@epub:textref,$xml-base)"/> </xsl:if> <xsl:apply-templates select="node()"/> </seq> </xsl:when> <xsl:otherwise> <xsl:apply-templates select="node()"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="*[ancestor::mo:body]"> <xsl:copy> <xsl:apply-templates select="@*"/> <xsl:if test="@id"> <xsl:attribute name="id" select="concat($id-prefix,@id)"/> </xsl:if> <xsl:if test="@src"> <xsl:attribute name="src" select="resolve-uri(@src,$xml-base)"/> </xsl:if> <xsl:if test="@epub:textref"> <xsl:attribute name="epub:textref" select="resolve-uri(@epub:textref,$xml-base)"/> </xsl:if> <xsl:apply-templates select="node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet>