4 Stimmen

xslt entfernt abschließende Interpunktion

Ich schreibe ein xslt-Stylesheet zur Umwandlung von MARC-xml-Datensätzen in FGDC-xml-Metadaten. Viele der MARC-Felder haben am Ende überflüssige Satzzeichen (Punkte, Doppelpunkte, Kommas usw.), die ich gerne entfernen würde. Ich möchte nicht entfernen alle Interpunktion aus den Zeilen zu entfernen. Mein Gedanke ist, eine Vorlage zu schreiben mit einem wenn Anweisung zu verwenden und zu testen, ob das Feld mit einem bestimmten Zeichen endet, und es dann zu entfernen, aber ich bin mir nicht sicher: 1) ob dies ein guter Ansatz ist, und 2) wie man diesen Prozess spezifizieren kann.

Bearbeitet Mein xslt:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" xmlns:marc="http://www.loc.gov/MARC21/slim" >
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>

<xsl:template match="/">
<xsl:for-each select="marc:collection/marc:record">
  <xsl:result-document method="xml" href="banana_{marc:controlfield[@tag=001]}.xml">
    <metadata>
      <xsl:apply-templates select="self::marc:record"/>
    </metadata>
  </xsl:result-document>
</xsl:for-each>
</xsl:template>

<xsl:template match="marc:record">
  <pubinfo>
    <pubplace><xsl:value-of select="marc:datafield[@tag=260]/marc:subfield[@code='a']"/></pubplace>
    <publish><xsl:value-of select="marc:datafield[@tag=260]/marc:subfield[@code='b']" /></publish>
  </pubinfo>
</xsl:template>

</xsl:stylesheet>

Und hier ist mein Xml-Dokument (oder zumindest ein repräsentativer Teil davon):

<?xml version="1.0" encoding="UTF-8"?>
<marc:collection xmlns:marc="http://www.loc.gov/MARC21/slim" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd">
<marc:record>
    <marc:leader>01502cfm a2200313 a 4500</marc:leader>
    <marc:controlfield tag="001">7943586</marc:controlfield>
    <marc:datafield tag="260" ind1=" " ind2=" ">
        <marc:subfield code="a">[S.l. :</marc:subfield>
        <marc:subfield code="b">s.n. ,</marc:subfield>
        <marc:subfield code="c">18--]</marc:subfield>
    </marc:datafield>
</marc:record>
<marc:record>
    <marc:leader>01290cem a2200313 a 4500</marc:leader>
    <marc:controlfield tag="001">8108664</marc:controlfield>
    <marc:datafield tag="260" ind1=" " ind2=" ">
        <marc:subfield code="a">Torino :</marc:subfield>
        <marc:subfield code="b">Editore Gio. Batt. Maggi ,</marc:subfield>
        <marc:subfield code="c">1863.</marc:subfield>
    </marc:datafield>
</marc:record>
</marc:collection>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X