Tilstede: |
Torstein Tjelta (NB) |
Jan Erik Kofoed (BIBSYS) |
Revisjonshistorie | |
---|---|
Revisjon 1.0 | 2003-10-20 |
Innholdsfortegnelse
Det vil være store fordeler med å komme fram til et felles format for utveksling av MARC-poster i xml. En klar kandidat er å bruke MARCXML fra LC. Det er bare en hake med denne: Pr. definisjon forutsetter den at innholdet er MARC21. Vi har behov for å kunne utveksle både MARC21, NORMARC og BIBSYSMARC. Vi må finne en metode for å kunne angi dette. På møtet diskuterte vi to mulige løsninger:
MARCXML er formelt definert i et xml-skjema (XML Schema) kalt MARC21slim.xsd Skjemaet angir navnerommet (targetNamespace) til http://www.loc.gov/MARC21/slim
Det er mulig med utgansgpunkt i skjemaet MARC21slim.xsd å definere et nytt skjema der eneste endring blir å definere et nytt rotelement (marc) med en ny attributt (type):
<?xml version="1.0" encoding="UTF-8"?> <xs:schema targetNamespace="http://www.bibsys.no/ns" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.bibsys.no/ns" xmlns:lc="http://www.loc.gov/MARC21/slim" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:import namespace="http://www.loc.gov/MARC21/slim" schemaLocation="MARC21slim.xsd"/> <xs:element name="marc"> <xs:annotation> <xs:documentation>Tillater andre MARC-format enn MARC21. </xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element ref="lc:collection"/> </xs:sequence> <xs:attribute name="type" use="required"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="NORMARC"/> <xs:enumeration value="BIBSYSMARC"/> <xs:enumeration value="MARC21"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> </xs:schema>
Forklaring:
En instans for en BIBSYSMARC-post kan da se slik ut:
<?xml version="1.0" encoding="UTF-8"?> <bib:marc xmlns:bib="http://www.bibsys.no/ns" xmlns="http://www.loc.gov/MARC21/slim" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/MARC21/slim MARC21slim.xsd http://www.bibsys.no/ns marc01.xsd" type="BIBSYSMARC"> <collection> <record> <leader>01142cam 2200301 a 4500</leader> <controlfield tag="001"> 92005291 </controlfield> <controlfield tag="003">DLC</controlfield> <controlfield tag="005">19930521155141.9</controlfield> <controlfield tag="008">920219s1993 caua j 000 0 eng </controlfield> <datafield tag="010" ind1=" " ind2=" "> <subfield code="a"> 92005291 </subfield> </datafield> <datafield tag="020" ind1=" " ind2=" "> <subfield code="a">0152038655 :</subfield> <subfield code="c">$15.95</subfield> </datafield> <datafield tag="040" ind1=" " ind2=" "> <subfield code="a">DLC</subfield> <subfield code="c">DLC</subfield> <subfield code="d">DLC</subfield> </datafield> <datafield tag="042" ind1=" " ind2=" "> <subfield code="a">lcac</subfield> </datafield> <datafield tag="050" ind1="0" ind2="0"> <subfield code="a">PS3537.A618</subfield> <subfield code="b">A88 1993</subfield> </datafield> <datafield tag="082" ind1="0" ind2="0"> <subfield code="a">811/.52</subfield> <subfield code="2">20</subfield> </datafield> <datafield tag="100" ind1="1" ind2=" "> <subfield code="a">Sandburg, Carl,</subfield> <subfield code="d">1878-1967.</subfield> </datafield> <datafield tag="245" ind1="1" ind2="0"> <subfield code="a">Arithmetic /</subfield> <subfield code="c">Carl Sandburg ; illustrated as an anamorphic adventure by Ted Rand.</subfield> </datafield> <datafield tag="250" ind1=" " ind2=" "> <subfield code="a">1st ed.</subfield> </datafield> <datafield tag="260" ind1=" " ind2=" "> <subfield code="a">San Diego :</subfield> <subfield code="b">Harcourt Brace Jovanovich,</subfield> <subfield code="c">c1993.</subfield> </datafield> <datafield tag="300" ind1=" " ind2=" "> <subfield code="a">1 v. (unpaged) :</subfield> <subfield code="b">ill. (some col.) ;</subfield> <subfield code="c">26 cm.</subfield> </datafield> <datafield tag="500" ind1=" " ind2=" "> <subfield code="a">One Mylar sheet included in pocket.</subfield> </datafield> <datafield tag="520" ind1=" " ind2=" "> <subfield code="a">A poem about numbers and their characteristics. Features anamorphic, or distorted, drawings which can be restored to normal by viewing from a particular angle or by viewing the image's reflection in the provided Mylar cone.</subfield> </datafield> <datafield tag="650" ind1=" " ind2="0"> <subfield code="a">Arithmetic</subfield> <subfield code="x">Juvenile poetry.</subfield> </datafield> <datafield tag="650" ind1=" " ind2="0"> <subfield code="a">Children's poetry, American.</subfield> </datafield> <datafield tag="650" ind1=" " ind2="1"> <subfield code="a">Arithmetic</subfield> <subfield code="x">Poetry.</subfield> </datafield> <datafield tag="650" ind1=" " ind2="1"> <subfield code="a">American poetry.</subfield> </datafield> <datafield tag="650" ind1=" " ind2="1"> <subfield code="a">Visual perception.</subfield> </datafield> <datafield tag="700" ind1="1" ind2=" "> <subfield code="a">Rand, Ted,</subfield> <subfield code="e">ill.</subfield> </datafield> </record> </collection> </bib:marc>
Forklaring:
Validering blir her ryddig og enkelt siden MARCXML-skjema brukes uendret i tillegg til et eget skjema som har et rent minimalistisk innhold. Hvis MARCXML-skjemaet endres, trengs ikke det lokale skjemaet å endres med mindre elementnavnet collection i MARCXML blir endret.
Løsningen vil med litt tilpasning tillate bruk av verktøy laget for MARCXML. Man må anta at elementet collection må skilles ut før verktøyene brukes. Å skille ut collection er en triviell oppgave enten man bruker XSL eller andre metoder.
En annen måte er at man ganske enkelt tar kopier av MARCXML-skjemaet og forandrer innholdet i attributten targetNamespace. F.eks.:
I xml-instansene gjenspeiles dette ved at standard navnerom angis på tilsvarende måte:
For disse tilfellene er det nok i det minste høflig å spørre LC om de har noen innvendinger. Løsningen er enkel og grei, men krever at man må vedlikeholde kopier av MARCXML-skjemaet. Siden tilpasningen av skjemaet er såpass liten, vil et slikt vedlikehold ikke by på nevneverdig arbeid.
Validering vil gå greit. Bruk av verktøy som forutsetter MARCXML vil trolig gå greit med mindre det hefter seg opp i innholdet av xmlns. I så fall må man lure verktøyet med å putte inn forventet verdi (http://www.loc.gov/MARC21/slim) i xmlns.