<?xml version='1.0'?> <xsl:stylesheet version="1.0" xmlns:marc="http://www.loc.gov/MARC21/slim" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- This file is in the public domain. --> <!-- 8/19/04: ntra added "marc:" prefix to datafield element --> <xsl:template name="datafield"> <xsl:param name="tag"/> <xsl:param name="ind1"><xsl:text> </xsl:text></xsl:param> <xsl:param name="ind2"><xsl:text> </xsl:text></xsl:param> <xsl:param name="subfields"/> <xsl:element name="marc:datafield"> <xsl:attribute name="tag"> <xsl:value-of select="$tag"/> </xsl:attribute> <xsl:attribute name="ind1"> <xsl:value-of select="$ind1"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="$ind2"/> </xsl:attribute> <xsl:copy-of select="$subfields"/> </xsl:element> </xsl:template> <xsl:template name="subfieldSelect"> <xsl:param name="codes"/> <xsl:param name="delimeter"><xsl:text> </xsl:text></xsl:param> <xsl:variable name="str"> <xsl:for-each select="marc:subfield"> <xsl:if test="contains($codes, @code)"> <xsl:value-of select="text()"/><xsl:value-of select="$delimeter"/> </xsl:if> </xsl:for-each> </xsl:variable> <xsl:value-of select="substring($str,1,string-length($str)-string-length($delimeter))"/> </xsl:template> <xsl:template name="buildSpaces"> <xsl:param name="spaces"/> <xsl:param name="char"><xsl:text> </xsl:text></xsl:param> <xsl:if test="$spaces>0"> <xsl:value-of select="$char"/> <xsl:call-template name="buildSpaces"> <xsl:with-param name="spaces" select="$spaces - 1"/> <xsl:with-param name="char" select="$char"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="chopPunctuation"> <xsl:param name="chopString"/> <xsl:param name="punctuation"><xsl:text>.:,;/ </xsl:text></xsl:param> <xsl:variable name="length" select="string-length($chopString)"/> <xsl:choose> <xsl:when test="$length=0"/> <xsl:when test="contains($punctuation, substring($chopString,$length,1))"> <xsl:call-template name="chopPunctuation"> <xsl:with-param name="chopString" select="substring($chopString,1,$length - 1)"/> <xsl:with-param name="punctuation" select="$punctuation"/> </xsl:call-template> </xsl:when> <xsl:when test="not($chopString)"/> <xsl:otherwise><xsl:value-of select="$chopString"/></xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="chopPunctuationFront"> <xsl:param name="chopString"/> <xsl:variable name="length" select="string-length($chopString)"/> <xsl:choose> <xsl:when test="$length=0"/> <xsl:when test="contains('.:,;/[ ', substring($chopString,1,1))"> <xsl:call-template name="chopPunctuationFront"> <xsl:with-param name="chopString" select="substring($chopString,2,$length - 1)"/> </xsl:call-template> </xsl:when> <xsl:when test="not($chopString)"/> <xsl:otherwise><xsl:value-of select="$chopString"/></xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>