From 265587c6b7c73ef7a502803b54395ef847eb03f2 Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Mon, 5 Jan 2004 09:31:08 +0000 Subject: [PATCH] Schema conversion. Use libxml2 and lots of other updates --- TODO | 14 +- configure.in | 34 +- etc/MARC21slim2DC.xsl | 198 +++++ etc/MARC21slim2MODS.xsl | 1873 ++++++++++++++++++++++++++++++++++++++++++++++ etc/MARC21slim2RDFDC.xsl | 197 +++++ etc/MARC21slimUtils.xsl | 65 ++ etc/config.xml | 22 +- etc/voyager.xml | 30 +- include/yaz++/proxy.h | 13 +- src/Makefile.am | 6 +- src/yaz-proxy-config.cpp | 96 ++- src/yaz-proxy.cpp | 133 +++- 12 files changed, 2605 insertions(+), 76 deletions(-) create mode 100644 etc/MARC21slim2DC.xsl create mode 100644 etc/MARC21slim2MODS.xsl create mode 100644 etc/MARC21slim2RDFDC.xsl create mode 100644 etc/MARC21slimUtils.xsl diff --git a/TODO b/TODO index e6f713c..42735b4 100644 --- a/TODO +++ b/TODO @@ -1,11 +1,17 @@ Control the various optimizations with config.. -Handle invalidate sessions (-1 hit, control-number search). - Live status (via search, present). -SRW/SRU. - Possible threading. +Throw proper diagnostic for bad schema (Z39.50/SRW). + +Deal with Z39.50 options properly. + +Deal with Z39.50 messages sizes properly. + +For SRW/SRU, set schema for each returned record. + +Fork to ensure that crashes are catched. + diff --git a/configure.in b/configure.in index 5ead126..9682cf1 100644 --- a/configure.in +++ b/configure.in @@ -11,27 +11,27 @@ AM_PROG_LIBTOOL YAZ_INIT(threads) dnl -dnl ----- libXML2 -AC_SUBST(XML2_LIBS) -AC_SUBST(XML2_CFLAGS) -xml2dir=yes -AC_ARG_WITH(xml2, [ --with-xml2[=PREFIX] use libxml2 in PREFIX],[xml2dir=$withval]) -if test "$xml2dir" = "yes"; then +dnl ----- libXSLT +AC_SUBST(XSLT_LIBS) +AC_SUBST(XSLT_CFLAGS) +xsltdir=yes +AC_ARG_WITH(xslt, [ --with-xslt[=PREFIX] use libxslt in PREFIX],[xsltdir=$withval]) +if test "$xsltdir" = "yes"; then for d in /usr /usr/local; do - if test -x $d/bin/xml2-config; then - xml2dir=$d + if test -x $d/bin/xslt-config; then + xsltdir=$d fi done fi -if test "$xml2dir" != "no"; then - AC_MSG_CHECKING(for libXML2) - if test -x $xml2dir/bin/xml2-config; then - XML2_LIBS=`$xml2dir/bin/xml2-config --libs` - LIBS="$XML2_LIBS $LIBS" - XML2_CFLAGS=`$xml2dir/bin/xml2-config --cflags` - XML2_VER=`$xml2dir/bin/xml2-config --version` - AC_MSG_RESULT($XML2_VER) - AC_DEFINE(HAVE_XML2) +if test "$xsltdir" != "no"; then + AC_MSG_CHECKING(for libXSLT) + if test -x $xsltdir/bin/xslt-config; then + XSLT_LIBS=`$xsltdir/bin/xslt-config --libs` + LIBS="$XSLT_LIBS $LIBS" + XSLT_CFLAGS=`$xsltdir/bin/xslt-config --cflags` + XSLT_VER=`$xsltdir/bin/xslt-config --version` + AC_MSG_RESULT($XSLT_VER) + AC_DEFINE(HAVE_XSLT) else AC_MSG_RESULT(Not found) fi diff --git a/etc/MARC21slim2DC.xsl b/etc/MARC21slim2DC.xsl new file mode 100644 index 0000000..ec48de0 --- /dev/null +++ b/etc/MARC21slim2DC.xsl @@ -0,0 +1,198 @@ + + + + + + + + + + + + + + + + + + + + + abfghk + + + + + + + + + + + + + + yes + + + + yes + + + + text + cartographic + notated music + sound recording + still image + moving image + three dimensional object + software, multimedia + mixed material + + + + + + + + + + + + + ab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + abcdq + + + + + + + + abcdq + + + + + + + + abcdq + + + + + + + + abcdq + + + + + + + + abcdq + + + + + + + + abcdq + + + + + + + + abcd + + + + + + + + abcdu + + + + + + + + ot + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/etc/MARC21slim2MODS.xsl b/etc/MARC21slim2MODS.xsl new file mode 100644 index 0000000..ff35524 --- /dev/null +++ b/etc/MARC21slim2MODS.xsl @@ -0,0 +1,1873 @@ + + + + + + + + + + + + + + + + + + + + + + + BK + SE + + + BK + MM + CF + MP + VM + MU + + + + + + + + + + abfghk + + + + + + + + + + + <xsl:value-of select="substring($title,@ind2+1)"/> + + + + + <xsl:value-of select="$title"/> + + + + + + + + + + + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">ab</xsl:with-param> + </xsl:call-template> + + + + + + + + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">abh</xsl:with-param> + </xsl:call-template> + + + + + + + + + + + + + + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">abfh</xsl:with-param> + </xsl:call-template> + + + + + + + + + <xsl:variable name="str"> + <xsl:for-each select="marc:subfield"> + <xsl:if test="(contains('adfhklmor',@code) and (not(../marc:subfield[@code='n' or @code='p']) or (following-sibling::marc:subfield[@code='n' or @code='p'])))"> + <xsl:value-of select="text()"/><xsl:text> </xsl:text> + </xsl:if> + </xsl:for-each> + </xsl:variable> + <xsl:value-of select="substring($str,1,string-length($str)-1)"/> + + + + + + + + + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">ah</xsl:with-param> + </xsl:call-template> + + + + + + + + + + creator + + + + + + + + + creator + + + + + + + + creator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + personal + + + + + + + + + + + yes + + + yes + + + + text + cartographic + notated music + sound recording + still image + moving image + three dimensional object + software, multimedia + mixed material + + + + + globe + + + + remote sensing image + + + + + + + map + + + atlas + + + + + + + + + database + + + loose-leaf + + + series + + + newspaper + + + periodical + + + web site + + + + + + + + + abstract or summary + + + bibliography + + + catalog + + + dictionary + + + encyclopedia + + + handbook + + + legal article + + + index + + + discography + + + legislation + + + theses + + + survey of literature + + + review + + + programmed text + + + filmography + + + directory + + + statistics + + + technical report + + + legal case and case notes + + + law report or digest + + + treaty + + + + + + conference publication + + + + + + + + + numeric data + + + database + + + font + + + game + + + + + + + patent + + + festschrift + + + + + biography + + + + + + essay + + + drama + + + comic strip + + + fiction + + + humor, satire + + + letter + + + novel + + + short story + + + speech + + + + + + + + biography + + + conference publication + + + drama + + + essay + + + fiction + + + folktale + + + history + + + humor, satire + + + memoir + + + poetry + + + rehersal + + + reporting + + + sound + + + speech + + + + + + + + art original + + + kit + + + art reproduction + + + diorama + + + filmstrip + + + legal article + + + picture + + + graphic + + + technical drawing + + + motion picture + + + chart + + + flash card + + + microscope slide + + + model + + + realia + + + slide + + + transparency + + + videorecording + + + toy + + + + + + + + + + + abvxyz + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + monographic + continuing + + + + + + + + ab + + + + + + + + + + + + rfc3066 + + + iso639-2b + + + + + + + + + + + + + + + + + reformatted digital + + + + + + + + + + + + + + + + + + + +
braille
+
+ +
electronic
+
+ +
microfiche
+
+ +
microfilm
+
+
+ + + + + + + + +
+ + + +
+
+ + + + + abce + + + +
+ + + + + + + + + + + + ab + + + + + + + + + agrt + + + + + + + + ab + + + + + + + + + adolescent + + + adult + + + general + + + juvenile + + + preschool + + + specialized + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + defg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ab + + + + + + + + abx + + + + + + + + ab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ab + + + + + + + + + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">av</xsl:with-param> + </xsl:call-template> + <xsl:call-template name="part"/> + + + + + + + + + + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">av</xsl:with-param> + </xsl:call-template> + <xsl:call-template name="part"/> + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:call-template name="specialSubfieldSelect"> + <xsl:with-param name="anyCodes">tfklmorsv</xsl:with-param> + <xsl:with-param name="axis">t</xsl:with-param> + <xsl:with-param name="afterCodes">g</xsl:with-param> + </xsl:call-template> + + + + + + + abcq + t + g + + + + + + + + + + + + + + + + + + + + <xsl:call-template name="specialSubfieldSelect"> + <xsl:with-param name="anyCodes">tfklmorsv</xsl:with-param> + <xsl:with-param name="axis">t</xsl:with-param> + <xsl:with-param name="afterCodes">dg</xsl:with-param> + </xsl:call-template> + + + + + + + + + + + + + + + + + c + t + dgn + + + + + + + + + + + + + + + + + + + + + + + + <xsl:call-template name="specialSubfieldSelect"> + <xsl:with-param name="anyCodes">tfklsv</xsl:with-param> + <xsl:with-param name="axis">t</xsl:with-param> + <xsl:with-param name="afterCodes">g</xsl:with-param> + </xsl:call-template> + + + + + + + aqdc + t + gn + + + + + + + + + + + + + + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">adfgklmorsv</xsl:with-param> + </xsl:call-template> + + + + + + + + + + + + + + <xsl:value-of select="marc:subfield[@code='a']"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:call-template name="specialSubfieldSelect"> + <xsl:with-param name="anyCodes">tfklmorsv</xsl:with-param> + <xsl:with-param name="axis">t</xsl:with-param> + <xsl:with-param name="afterCodes">g</xsl:with-param> + </xsl:call-template> + + + + + + + + + abcq + t + g + + + + + + + + + + + + + + + + + + + + <xsl:call-template name="specialSubfieldSelect"> + <xsl:with-param name="anyCodes">tfklmorsv</xsl:with-param> + <xsl:with-param name="axis">t</xsl:with-param> + <xsl:with-param name="afterCodes">dg</xsl:with-param> + </xsl:call-template> + + + + + + + + + + + + + + + + + c + t + dgn + + + + + + + + + + + + + + + + + <xsl:call-template name="specialSubfieldSelect"> + <xsl:with-param name="anyCodes">tfklsv</xsl:with-param> + <xsl:with-param name="axis">t</xsl:with-param> + <xsl:with-param name="afterCodes">g</xsl:with-param> + </xsl:call-template> + + + + + + + aqdc + t + gn + + + + + + + + + + + + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">adfgklmorsv</xsl:with-param> + </xsl:call-template> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + issue number + matrix number + music plate + music publisher + videorecording identifier + + + + ab + + + + + + + + ab + + + + + + + + + doi + uri + + + + + + + + + + + + + + + + abj + + + + + + + + abcd35 + + + + + + + + abcde35 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + n + n + fghkdlmor + + + + + p + p + fghkdlmor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cdn + + + + + + + + + + + abcq + + + + + + + + + + + acdeq + + + + + + + + constituent + related + + + + + + + + + <xsl:value-of select="."/> + + + + + + + + + + <xsl:value-of select="."/> + + + + + + + + + + + + + + + + + + + + + + + + lcsh + lcshac + mesh + csh + nal + rvm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + abcq + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cdnp + + + + + + + + + + + + + + + + abcdeqnp + + + + + + + + + + + + + + + + + + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">adfhklor</xsl:with-param> + </xsl:call-template> + <xsl:call-template name="part"/> + + + + + + + + + + + + + + abcd + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/etc/MARC21slim2RDFDC.xsl b/etc/MARC21slim2RDFDC.xsl new file mode 100644 index 0000000..2e81677 --- /dev/null +++ b/etc/MARC21slim2RDFDC.xsl @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + abfghk + + + + + + + + + + + + + + yes + + + + yes + + + + text + cartographic + notated music + sound recording + still image + moving image + three dimensional object + software, multimedia + mixed material + + + + + + + + + + + + + ab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + abcdq + + + + + + + + abcdq + + + + + + + + abcdq + + + + + + + + abcdq + + + + + + + + abcdq + + + + + + + + abcdq + + + + + + + + abcd + + + + + + + + abcdu + + + + + + + + ot + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/etc/MARC21slimUtils.xsl b/etc/MARC21slimUtils.xsl new file mode 100644 index 0000000..acfe598 --- /dev/null +++ b/etc/MARC21slimUtils.xsl @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/etc/config.xml b/etc/config.xml index 7c8d1ef..c03b41f 100644 --- a/etc/config.xml +++ b/etc/config.xml @@ -1,5 +1,5 @@ - + indexdata.dk @@ -27,30 +27,40 @@ localhost:9999 - localhost:9998 300 180 50000 60 - 10 + 50 - + + dc + http://www.loc.gov/zing/srw/dcschema/v1.0/ + + + marcxml + http://www.loc.gov/marcxml/ + + + mods + http://www.loc.gov/mods/v3 + 2 pqf.properties - myhost + indexdata.dk + 9000 - zeerex.xml diff --git a/etc/voyager.xml b/etc/voyager.xml index 0cf0f32..b604cb7 100644 --- a/etc/voyager.xml +++ b/etc/voyager.xml @@ -1,11 +1,10 @@ - + z3950.loc.gov:7090 - z3950.loc.gov:7094 300 @@ -25,7 +24,7 @@ 200000 31 - 20 + 50 @@ -55,15 +54,36 @@ - + - + + + dc + http://www.loc.gov/zing/srw/dcschema/v1.0/ + + + marcxml + http://www.loc.gov/marcxml/ + + + mods + http://www.loc.gov/mods/v3 + + 2 + + + + indexdata.dk + 9000 + +