+ my $match = $_;
+ my $xpath = $handler->($rule, $match);
+ my @indexes = split /,/, $index;
+
+ # To avoid screwing up the <xsl:template match="...."> instruction...
+ $xpath =~ s/"/'/g;
+
+ print " <xsl:template match=\"$xpath\">\n";
+ print " <z:index name=\"", join(" ", @indexes), "\">\n";
+ print " <xsl:value-of select=\".\"/>\n";
+ print " </z:index>\n";
+ print " </xsl:template>\n\n";
+}
+
+print "</xsl:stylesheet>\n";
+
+
+sub melm_handler {
+ my ($rule, $match) = @_;
+ my ($field, $subfield) = ($match =~ /([^\$]+)\$?(.*)/);
+ my $xpath = '/*/';
+
+ if ( $field =~ /^00/ ) {
+ $xpath .= $marc_prefix . ':controlfield[@tag=\'' . $field . '\']';
+ } else {
+ $xpath .= $marc_prefix . ':datafield[@tag=\'' . $field . '\']/' .
+ $marc_prefix . ':subfield';
+
+ if ( $subfield ne '' ) {
+ $xpath .= '[@code=\'' . $subfield . '\']';
+ }
+ }
+
+ return $xpath;