[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [InetBib] JabRef-Plugin für den GVK
Liebe PICA/SRU-Enthusiasten,
Der Sourcecode ist dem Plugin beigefügt, im Prinzip kann man einfach
die URL der GVK-SRU-Schnittstelle gegen eine andere austauschen. Probleme
kann es geben, wenn man aufgrund einer unterschiedlichen
SRU-Implementierung eine andere Abfragesyntax vorfindet (z.B. verhalten
sich nicht alle SRU-Schnittstellen konform der Spezifikation) oder
natürlich wenn PICA/XML als Rückgabeformat nicht unterstützt wird.
Wenn es nur so einfach wäre! Selbst wenn "PICA+-XML" von einem PICA-Katalog
zurückgeliefert wird, hat man echte Implementierungsherausforderungen, denn:
1) Es gibt nicht unerhebliche Unterschiede in der Katalogisierungs_praxis_ der
einzelnen "PICA-Verbünde" (GBV, HeBIS, BSZ) sowie der DNB, die sich in
"semantisch" abweichenden Feld/Subfeldbelegungen sowie in "strukturell"
unterschiedlichen Feld/Subfeldnutzungen materialisieren. Merke: PICA+-XML ist
_semantisch_ nicht gleich PICA+-XML.
2) "PICA+-XML" ist nicht standardisiert. Die mir bekannten
PICA+-XML-Implementierung (GBV und HeBIS) sind bereits auf "XML-Ebene" (Feld-
und Attributnamen) vollkommen unterschiedlich. Das führt in unserer eigenen
Implementierung (realisiert in XSLT) zu diesem Konstrukt, um beide Formate
parallel überhaupt interpretieren zu können:
* * *
<func:function name="vls:getDatafieldValue">
<xsl:param name="datafieldValue"/>
<xsl:param name="subfieldValue"/>
<xsl:param name="occurrence"/>
<xsl:variable name="result">
<xsl:choose>
<xsl:when test="$occurrence = '' ">
<xsl:value-of
select="child::*[local-name()=$datafieldElementName][substring(attribute::*[local-name()=$datafieldAttributeName],
1,
4)=$datafieldValue]/child::*[local-name()=$subfieldElementName][attribute::*[local-name()=$subfieldAttributeName]=$subfieldValue]"
/>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="$picaType =
'hebis' ">
<xsl:value-of
select="child::*[local-name()=$datafieldElementName][attribute::*[local-name()=$datafieldAttributeName]=concat($datafieldValue,
'/',
$occurrence)]/child::*[local-name()=$subfieldElementName][attribute::*[local-name()=$subfieldAttributeName]=$subfieldValue]"
/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of
select="child::*[local-name()=$datafieldElementName][substring(attribute::*[local-name()=$datafieldAttributeName],
1,
4)=$datafieldValue][@occurrence=$occurrence]/child::*[local-name()=$subfieldElementName][attribute::*[local-name()=$subfieldAttributeName]=$subfieldValue]"
/>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<func:result select="$result"/>
</func:function>
* * *
Wer von Ihnen etwas XSLT/XPath lesen kann, sieht den Abgrund, in den man hier
(technisch) blickt. Merke: PICA+-XML ist _syntaktisch_ nicht gleich PICA+-XML!
Schließlich kommt hinzu, daß von den vier genannten Einrichtungen genau _eine_
eine mir bekannte SRU-Implementierung bietet. Und das ist der GBV. Wenn sich
das inzwischen geändert haben sollte, wäre das schon ein echter Schritt nach
vorne. Aber m.W. wird damit in den nächsten Jahrzehnten nicht zu rechnen sein.
(Naja, vielleicht sollte man nicht so skeptisch sein. Ich bin es aber
inzwischen - leider.)
Beste Grüße,
Kay Heiligenhaus
--
http://www.inetbib.de
Listeninformationen unter http://www.inetbib.de.