<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dtb="http://www.daisy.org/z3986/2005/dtbook/" version="2.0"> <xsl:include href="recursive-copy2.xsl"/> <xsl:include href="output2.xsl"/> <xsl:template match="dtb:meta[matches(@name, '^\s*dc:title\s*$','si')]"> <xsl:call-template name="handleMeta"> <xsl:with-param name="name">dc:Title</xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template match="dtb:meta[matches(@name, '^\s*dc:subject\s*$','si')]"> <xsl:call-template name="handleMeta"> <xsl:with-param name="name">dc:Subject</xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template match="dtb:meta[matches(@name, '^\s*dc:description\s*$','si')]"> <xsl:call-template name="handleMeta"> <xsl:with-param name="name">dc:Description</xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template match="dtb:meta[matches(@name, '^\s*dc:type\s*$','si')]"> <xsl:call-template name="handleMeta"> <xsl:with-param name="name">dc:Type</xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template match="dtb:meta[matches(@name, '^\s*dc:source\s*$','si')]"> <xsl:call-template name="handleMeta"> <xsl:with-param name="name">dc:Source</xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template match="dtb:meta[matches(@name, '^\s*dc:relation\s*$','si')]"> <xsl:call-template name="handleMeta"> <xsl:with-param name="name">dc:Relation</xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template match="dtb:meta[matches(@name, '^\s*dc:coverage\s*$','si')]"> <xsl:call-template name="handleMeta"> <xsl:with-param name="name">dc:Coverage</xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template match="dtb:meta[matches(@name, '^\s*dc:creator\s*$','si')]"> <xsl:call-template name="handleMeta"> <xsl:with-param name="name">dc:Creator</xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template match="dtb:meta[matches(@name, '^\s*dc:publisher\s*$','si')]"> <xsl:call-template name="handleMeta"> <xsl:with-param name="name">dc:Publisher</xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template match="dtb:meta[matches(@name, '^\s*dc:contributor\s*$','si')]"> <xsl:call-template name="handleMeta"> <xsl:with-param name="name">dc:Contributor</xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template match="dtb:meta[matches(@name, '^\s*dc:rights\s*$','si')]"> <xsl:call-template name="handleMeta"> <xsl:with-param name="name">dc:Rights</xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template match="dtb:meta[matches(@name, '^\s*dc:date\s*$','si')]"> <xsl:call-template name="handleMeta"> <xsl:with-param name="name">dc:Date</xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template match="dtb:meta[matches(@name, '^\s*dc:format\s*$','si')]"> <xsl:call-template name="handleMeta"> <xsl:with-param name="name">dc:Format</xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template match="dtb:meta[matches(@name, '^\s*dc:language\s*$','si')]"> <xsl:call-template name="handleMeta"> <xsl:with-param name="name">dc:Language</xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template match="dtb:meta[matches(@name, '^\s*dc:identifier\s*$','si')]"> <xsl:call-template name="handleMeta"> <xsl:with-param name="name">dc:Identifier</xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template match="dtb:meta"> <xsl:choose> <xsl:when test="starts-with(translate(@name,'DC','dc'), 'dc:')"> <xsl:variable name="msg"> <xsl:text>Removing unknown dc metadata '</xsl:text> <xsl:value-of select="@name"/> <xsl:text>'</xsl:text> </xsl:variable> <xsl:message><xsl:value-of select="$msg"/></xsl:message> </xsl:when> <xsl:when test="@name='dtb:uid' and string-length(normalize-space(@content))=0"> <xsl:copy> <xsl:copy-of select="@*[name()!='content']"/> <xsl:attribute name="content"> <xsl:text>AUTO-UID-</xsl:text> <xsl:value-of select="generate-id()"/> </xsl:attribute> </xsl:copy> <xsl:message>Adding auto generated value for the dtb:uid metadata</xsl:message> </xsl:when> <xsl:otherwise> <xsl:copy> <xsl:copy-of select="@*"/> </xsl:copy> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="dtb:meta[matches(@name, '^\s*dtb:multimediaContent\s*$','si')]"/> <xsl:template match="dtb:meta[matches(@name, '^\s*dtb:multimediaType\s*$','si')]"/> <xsl:template match="dtb:meta[matches(@name, '^\s*dtb:totalTime\s*$','si')]"/> <xsl:template match="dtb:head"> <xsl:copy> <xsl:if test="not(dtb:meta[matches(@name, '^\s*dtb:uid\s*$','si')])"> <xsl:message>Adding dtb:uid metadata</xsl:message> <xsl:element name="meta" namespace="http://www.daisy.org/z3986/2005/dtbook/"> <xsl:attribute name="name"> <xsl:text>dtb:uid</xsl:text> </xsl:attribute> <xsl:attribute name="content"> <xsl:variable name="dtbUid"> <xsl:value-of select="dtb:meta[matches(@name, '^\s*dc:identifier\s*$','si')][1]/@content"/> </xsl:variable> <xsl:choose> <xsl:when test="normalize-space($dtbUid)=''"> <xsl:text>AUTO-UID-</xsl:text> <xsl:value-of select="generate-id()"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$dtbUid"/> </xsl:otherwise> </xsl:choose> </xsl:attribute> </xsl:element> </xsl:if> <xsl:if test="not(dtb:meta[matches(@name, '^\s*dc:title\s*$','si')]) and //dtb:doctitle"> <xsl:message>Adding dc:Title from doctitle</xsl:message> <xsl:element name="meta" namespace="http://www.daisy.org/z3986/2005/dtbook/"> <xsl:attribute name="name"> <xsl:text>dc:Title</xsl:text> </xsl:attribute> <xsl:attribute name="content"> <xsl:value-of select="(//dtb:doctitle)[1]"/> </xsl:attribute> </xsl:element> </xsl:if> <xsl:apply-templates/> </xsl:copy> </xsl:template> <xsl:template name="handleMeta"> <xsl:param name="name"/> <xsl:if test="not(@name=$name)"> <xsl:variable name="msg"> <xsl:text>Changing meta attribute name from '</xsl:text> <xsl:value-of select="@name"/> <xsl:text>' to '</xsl:text> <xsl:value-of select="$name"/> <xsl:text>'</xsl:text> </xsl:variable> <xsl:message> <xsl:value-of select="$msg"/> </xsl:message> </xsl:if> <xsl:copy> <xsl:attribute name="name"> <xsl:value-of select="$name"/> </xsl:attribute> <xsl:copy-of select="@*[not(local-name()='name')]"/> </xsl:copy> </xsl:template> </xsl:stylesheet>