Control Order for XSLT in MARC21slim2English.xsl

I've tried to use MARC21slim2English.xsl to show USMARC in user-friendly form. I found that the xsl doesn't give a possibility to change order of items, but just copied the order of original MARC21 record.

I had to add a lot of apply-templates to be able to set the order as I want, e.g. show title first, then Authors etc.

The extra XSLT commands were added to modified MARC21slim2English.xsl , but it should be possible to use import command to keep existing MARC21slim2English.xsl and my code in separate files.
The additional XSLT templates are the following:

      <xsl:template match="/">

            <html>

      <xsl:apply-templates select="marc:record" />

    </html>

      </xsl:template>

 

  <xsl:template match="marc:record">

    <!-- change the order of fields as required-->

    <!--TITLE STATEMENT-->

    <xsl:apply-templates select="marc:datafield[@tag=245]" />

    <!--MAIN ENTRY- -PERSONAL NAME-->

    <xsl:apply-templates select="marc:datafield[@tag=100]" />

 

    <!--NOTE for the following apply templates description is shown below the command   -->

   

    <xsl:apply-templates select="marc:datafield[@tag=110]" />

    <!--MAIN ENTRY - CORPORATE NAME  -->

    <xsl:apply-templates select="marc:datafield[@tag=111]" />

    <!--MAIN ENTRY - MEETING NAME  -->

    <xsl:apply-templates select="marc:datafield[@tag=700]" />

    <!--ADDED ENTRY - PERSONAL NAME  -->

    <xsl:apply-templates select="marc:datafield[@tag=710]" />

    <!--ADDED ENTRY - CORPORATE NAME  -->

    <xsl:apply-templates select="marc:datafield[@tag=711]" />

    <!--ADDED ENTRY - MEETING NAME  -->

    <xsl:apply-templates select="marc:datafield[@tag=720]" />

    <!--ADDED ENTRY - UNCONTROLLED NAME  -->

 

    <!--    TODO: re-sort them in USER-friendly order -->

   

    <xsl:apply-templates select="marc:datafield[@tag=010]" />

    <!--LIBRARY OF CONGRESS CONTROL NUMBER-->

    <xsl:apply-templates select="marc:datafield[@tag=011]" />

    <!--LINKING LIBRARY OF CONGRESS CONTROL NUMBER                          -->

    <xsl:apply-templates select="marc:datafield[@tag=013]" />

    <!--PATENT CONTROL INFORMATION  -->

    <xsl:apply-templates select="marc:datafield[@tag=014]" />

    <!--LINKAGE NUMBER  -->

    <xsl:apply-templates select="marc:datafield[@tag=015]" />

    <!--NATIONAL BIBLIOGRAPHY NUMBER  -->

    <xsl:apply-templates select="marc:datafield[@tag=016]" />

    <!--NATIONAL BIBLIOGRAPHIC AGENCY CONTROL NUMBER  -->

    <xsl:apply-templates select="marc:datafield[@tag=017]" />

    <!--COPYRIGHT REGISTRATION NUMBER  -->

    <xsl:apply-templates select="marc:datafield[@tag=018]" />

    <!--COPYRIGHT ARTICLE-FEE CODE  -->

    <xsl:apply-templates select="marc:datafield[@tag=020]" />

    <!--INTERNATIONAL STANDARD BOOK NUMBER  -->

    <xsl:apply-templates select="marc:datafield[@tag=022]" />

    <!--INTERNATIONAL STANDARD SERIAL NUMBER  -->

    <xsl:apply-templates select="marc:datafield[@tag=024]" />

    <!--OTHER STANDARD IDENTIFIER  -->

    <xsl:apply-templates select="marc:datafield[@tag=025]" />

    <!--OVERSEAS ACQUISITION NUMBER  -->

    <xsl:apply-templates select="marc:datafield[@tag=027]" />

    <!--STANDARD TECHNICAL REPORT NUMBER  -->

    <xsl:apply-templates select="marc:datafield[@tag=028]" />

    <!--PUBLISHER NUMBER FOR MUSIC  -->

    <xsl:apply-templates select="marc:datafield[@tag=030]" />

    <!--CODEN DESIGNATION  -->

    <xsl:apply-templates select="marc:datafield[@tag=032]" />

    <!--POSTAL REGISTRATION NUMBER  -->

    <xsl:apply-templates select="marc:datafield[@tag=033]" />

    <!--DATE/TIME AND PLACE OF AN EVENT  -->

    <xsl:apply-templates select="marc:datafield[@tag=034]" />

    <!--CODED CARTOGRAPHIC MATHEMATICAL DATA  -->

    <xsl:apply-templates select="marc:datafield[@tag=036]" />

    <!--ORIGINAL STUDY NUMBER FOR COMPUTER DATA FILES  -->

    <xsl:apply-templates select="marc:datafield[@tag=037]" />

    <!--SOURCE OF ACQUISITION  -->

    <xsl:apply-templates select="marc:datafield[@tag=039]" />

    <!--LEVEL OF BIBLIOGRAPHIC CONTROL AND CODING DETAIL  -->

    <xsl:apply-templates select="marc:datafield[@tag=040]" />

    <!--CATALOGING SOURCE  -->

    <xsl:apply-templates select="marc:datafield[@tag=041]" />

    <!--LANGUAGE CODE  -->

    <xsl:apply-templates select="marc:datafield[@tag=042]" />

    <!--AUTHENTICATION CODE  -->

    <xsl:apply-templates select="marc:datafield[@tag=043]" />

    <!--GEOGRAPHIC AREA CODE  -->

    <xsl:apply-templates select="marc:datafield[@tag=044]" />

    <!--COUNTRY OF PUBLISHING/PRODUCING ENTITY CODE  -->

    <xsl:apply-templates select="marc:datafield[@tag=045]" />

    <!--TIME PERIOD OF CONTENT  -->

    <xsl:apply-templates select="marc:datafield[@tag=046]" />

    <!--SPECIAL CODED DATES  -->

    <xsl:apply-templates select="marc:datafield[@tag=047]" />

    <!--FORM OF MUSICAL COMPOSITION CODE  -->

    <xsl:apply-templates select="marc:datafield[@tag=048]" />

    <!--NUMBER OF MUSICAL INSTRUMENTS OR VOICES CODE  -->

    <xsl:apply-templates select="marc:datafield[@tag=050]" />

    <!--LIBRARY OF CONGRESS CALL NUMBER  -->

    <xsl:apply-templates select="marc:datafield[@tag=051]" />

    <!--LIBRARY OF CONGRESS COPY, ISSUE, OFFPRINT STATEMENT  -->

    <xsl:apply-templates select="marc:datafield[@tag=052]" />

    <!--GEOGRAPHIC CLASSIFICATION  -->

    <xsl:apply-templates select="marc:datafield[@tag=055]" />

    <!--CALL NUMBERS/CLASS NUMBERS ASSIGNED IN CANADA  -->

    <xsl:apply-templates select="marc:datafield[@tag=058]" />

    <!--OTHER GEOGRAPHIC CLASSIFICATION CODE  -->

    <xsl:apply-templates select="marc:datafield[@tag=060]" />

    <!--NATIONAL LIBRARY OF MEDICINE CALL NUMBER  -->

    <xsl:apply-templates select="marc:datafield[@tag=061]" />

    <!--NATIONAL LIBRARY OF MEDICINE COPY STATEMENT  -->

    <xsl:apply-templates select="marc:datafield[@tag=066]" />

    <!--CHARACTER SETS PRESENT  -->

    <xsl:apply-templates select="marc:datafield[@tag=070]" />

    <!--NATIONAL AGRICULTURAL LIBRARY CALL NUMBER  -->

    <xsl:apply-templates select="marc:datafield[@tag=071]" />

    <!--NATIONAL AGRICULTURAL LIBRARY COPY STATEMENT  -->

    <xsl:apply-templates select="marc:datafield[@tag=072]" />

    <!--SUBJECT CATEGORY CODE  -->

    <xsl:apply-templates select="marc:datafield[@tag=073]" />

    <!--TYPE OF PROGRAM OR ORGANIZATION CODE  -->

    <xsl:apply-templates select="marc:datafield[@tag=074]" />

    <!--GPO ITEM NUMBER  -->

    <xsl:apply-templates select="marc:datafield[@tag=080]" />

    <!--UNIVERSAL DECIMAL CLASSIFICATION NUMBER  -->

    <xsl:apply-templates select="marc:datafield[@tag=082]" />

    <!--DEWEY DECIMAL CALL NUMBER  -->

    <xsl:apply-templates select="marc:datafield[@tag=084]" />

    <!--OTHER CLASSIFICATION NUMBER  -->

    <xsl:apply-templates select="marc:datafield[@tag=086]" />

    <!--GOVERNMENT DOCUMENT CLASSIFICATION NUMBER  -->

    <xsl:apply-templates select="marc:datafield[@tag=088]" />

    <!--REPORT NUMBER  -->

    <xsl:apply-templates select="marc:datafield[@tag=090]" />

    <!--LOCAL CALL NUMBER  -->

    <xsl:apply-templates select="marc:datafield[@tag=091]" />

    <!--MICROFILM SHELF LOCATION  -->

    <xsl:apply-templates select="marc:datafield[@tag=130]" />

    <!--MAIN ENTRY - UNIFORM TITLE  -->

    <xsl:apply-templates select="marc:datafield[@tag=210]" />

    <!--ABBREVIATED TITLE  -->

    <xsl:apply-templates select="marc:datafield[@tag=211]" />

    <!--ACRONYM OR SHORTENED TITLE  -->

    <xsl:apply-templates select="marc:datafield[@tag=212]" />

    <!--VARIANT ACCESS TITLE  -->

    <xsl:apply-templates select="marc:datafield[@tag=214]" />

    <!--AUGMENTED TITLE  -->

    <xsl:apply-templates select="marc:datafield[@tag=222]" />

    <!--KEY TITLE  -->

    <xsl:apply-templates select="marc:datafield[@tag=240]" />

    <!--UNIFORM TITLE  -->

    <xsl:apply-templates select="marc:datafield[@tag=241]" />

    <!--ROMANIZED TITLE  -->

    <xsl:apply-templates select="marc:datafield[@tag=242]" />

    <!--TRANSLATION OF TITLE BY CATALOGING AGENCY  -->

    <xsl:apply-templates select="marc:datafield[@tag=243]" />

    <!--COLLECTIVE UNIFORM TITLE  -->

    <xsl:apply-templates select="marc:datafield[@tag=246]" />

    <!--VARYING FORM OF TITLE  -->

    <xsl:apply-templates select="marc:datafield[@tag=247]" />

    <!--FORMER TITLE OR TITLE VARIATIONS  -->

    <xsl:apply-templates select="marc:datafield[@tag=250]" />

    <!--EDITION STATEMENT  -->

    <xsl:apply-templates select="marc:datafield[@tag=254]" />

    <!--MUSICAL PRESENTATION STATEMENT  -->

    <xsl:apply-templates select="marc:datafield[@tag=255]" />

    <!--CARTOGRAPHIC MATHEMATICAL DATA  -->

    <xsl:apply-templates select="marc:datafield[@tag=256]" />

    <!--COMPUTER FILE CHARACTERISTICS  -->

    <xsl:apply-templates select="marc:datafield[@tag=257]" />

    <!--COUNTRY OF PRODUCING ENTITY FOR ARCHIVAL FILMS  -->

    <xsl:apply-templates select="marc:datafield[@tag=260]" />

    <!--PUBLICATION, DISTRIBUTION, ETC. (IMPRINT)  -->

    <xsl:apply-templates select="marc:datafield[@tag=263]" />

    <!--PROJECTED PUBLICATION DATE  -->

    <xsl:apply-templates select="marc:datafield[@tag=265]" />

    <!--SOURCE FOR ACQUISITION/SUBSCRIPTION ADDRESS  -->

    <xsl:apply-templates select="marc:datafield[@tag=270]" />

    <!--ADDRESS  -->

    <xsl:apply-templates select="marc:datafield[@tag=300]" />

    <!--PHYSICAL DESCRIPTION  -->

    <xsl:apply-templates select="marc:datafield[@tag=301]" />

    <!--PHYSICAL DESCRIPTION FOR FILMS (PRE-AACR 2)  -->

    <xsl:apply-templates select="marc:datafield[@tag=302]" />

    <!--PAGE OR ITEM COUNT  -->

    <xsl:apply-templates select="marc:datafield[@tag=303]" />

    <!--SUBORDINATE ENTITIES  -->

    <xsl:apply-templates select="marc:datafield[@tag=304]" />

    <!--LINEAR FOOTAGE  -->

    <xsl:apply-templates select="marc:datafield[@tag=305]" />

    <!--PHYSICAL D