update to Gradle 4.2, fix for incomplete iso2709 streams, add SWB/OBVSG examples

This commit is contained in:
Jörg Prante 2017-10-16 11:41:05 +02:00
parent 0d76b4b868
commit d947c5cb81
23 changed files with 3278 additions and 3175 deletions

View file

@ -1,6 +1,7 @@
plugins {
id "org.sonarqube" version "2.2"
id "org.sonarqube" version "2.5"
id "org.xbib.gradle.plugin.asciidoctor" version "1.5.4.1.0"
id "io.codearte.nexus-staging" version "0.7.0"
}
printf "Host: %s\nOS: %s %s %s\nJVM: %s %s %s %s\nGroovy: %s\nGradle: %s\n" +
@ -24,6 +25,7 @@ apply plugin: 'pmd'
apply plugin: 'checkstyle'
apply plugin: "jacoco"
apply plugin: 'org.xbib.gradle.plugin.asciidoctor'
apply plugin: "io.codearte.nexus-staging"
repositories {
mavenCentral()
@ -35,12 +37,12 @@ configurations {
}
dependencies {
testCompile "org.xbib:bibliographic-character-sets:${project.property('xbib-bibliographic-character-sets.version')}"
testCompile "org.xbib:content-core:${project.property('xbib-content.version')}"
testCompile "junit:junit:${project.property('junit.version')}"
testCompile "xalan:xalan:${project.property('xalan.version')}"
testCompile "org.xmlunit:xmlunit-matchers:${project.property('xmlunit-matchers.version')}"
testCompile "com.github.stefanbirkner:system-rules:${project.property('system-rules.version')}"
testCompile "org.xbib:bibliographic-character-sets:${project.property('bibliographic-character-sets.version')}"
testCompile "org.xbib:content-core:${project.property('content-core.version')}"
asciidoclet "org.asciidoctor:asciidoclet:${project.property('asciidoclet.version')}"
wagon "org.apache.maven.wagon:wagon-ssh:${project.property('wagon-ssh.version')}"
}
@ -83,6 +85,10 @@ javadoc {
}
}
clean {
delete 'out'
}
task sourcesJar(type: Jar, dependsOn: classes) {
classifier 'sources'
from sourceSets.main.allSource

View file

@ -1,12 +1,12 @@
group = org.xbib
name = marc
version = 1.0.12
version = 1.0.13
junit.version = 4.12
xbib-content.version = 1.0.7
xbib-bibliographic-character-sets.version = 1.0.0
xalan.version = 2.7.2
xmlunit-matchers.version = 2.3.0
system-rules.version = 1.16.0
bibliographic-character-sets.version = 1.0.0
content-core.version = 1.0.7
asciidoclet.version = 1.5.4
junit.version = 4.12
wagon-ssh.version = 2.12

View file

@ -61,3 +61,8 @@ task sonatypeUpload(type: Upload) {
}
}
}
nexusStaging {
packageGroup = "org.xbib"
}

View file

@ -1,8 +1,8 @@
tasks.withType(FindBugs) {
ignoreFailures = true
reports {
xml.enabled = true
html.enabled = false
xml.enabled = false
html.enabled = true
}
}
tasks.withType(Pmd) {
@ -22,10 +22,8 @@ tasks.withType(Checkstyle) {
jacocoTestReport {
reports {
xml.enabled true
csv.enabled false
xml.destination "${buildDir}/reports/jacoco-xml"
html.destination "${buildDir}/reports/jacoco-html"
xml.enabled = true
csv.enabled = false
}
}

Binary file not shown.

View file

@ -1,6 +1,6 @@
#Tue May 09 22:21:42 CEST 2017
#Mon Oct 16 11:03:23 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-4.2-all.zip

View file

@ -30,6 +30,7 @@ import org.xbib.marc.io.BufferedSeparatorInputStream;
import org.xbib.marc.io.BytesReference;
import org.xbib.marc.io.Chunk;
import org.xbib.marc.io.ChunkStream;
import org.xbib.marc.io.InformationSeparator;
import org.xbib.marc.label.RecordLabel;
import org.xbib.marc.label.RecordLabelFixer;
import org.xbib.marc.transformer.MarcTransformer;
@ -306,6 +307,7 @@ public final class Marc {
count++;
}
stream.close();
builder.marcGenerator.close();
if (withCollection) {
marcListener.endCollection();
if (marcListener instanceof ContentHandler) {
@ -375,6 +377,7 @@ public final class Marc {
l.incrementAndGet();
});
stream.close();
builder.marcGenerator.close();
if (withCollection) {
marcRecordListener.endCollection();
if (marcRecordListener instanceof ContentHandler) {
@ -557,6 +560,7 @@ public final class Marc {
while ((chunk = stream.readChunk()) != null) {
marcGenerator.chunk(chunk);
}
marcGenerator.close();
} finally {
builder.getInputStream().close();
}
@ -1085,10 +1089,16 @@ public final class Marc {
Chunk<byte[], BytesReference> chunk;
while ((chunk = stream.readChunk()) != null) {
marcGenerator.chunk(chunk);
if (getMarcRecord() != null) {
MarcRecord marcRecord = getMarcRecord();
if (marcRecord != null) {
return true;
}
}
marcGenerator.close();
MarcRecord marcRecord = getMarcRecord();
if (marcRecord != null) {
return true;
}
} catch (IOException e) {
throw new UncheckedIOException(e);
}
@ -1097,10 +1107,11 @@ public final class Marc {
@Override
public MarcRecord next() {
if (getMarcRecord() == null) {
MarcRecord marcRecord = getMarcRecord();
if (marcRecord == null) {
throw new NoSuchElementException();
}
return getMarcRecord();
return marcRecord;
}
};
}

View file

@ -29,6 +29,7 @@ import org.xbib.marc.transformer.MarcTransformer;
import org.xbib.marc.transformer.field.MarcFieldTransformers;
import org.xbib.marc.transformer.value.MarcValueTransformers;
import java.io.Closeable;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.LinkedList;
@ -37,7 +38,7 @@ import java.util.List;
/**
* This chunk listener interprets the chunks from a stream and generates MARC events to a given MARC listener.
*/
public class MarcGenerator implements ChunkListener<byte[], BytesReference> {
public class MarcGenerator implements ChunkListener<byte[], BytesReference>, Closeable {
private String format;
@ -140,13 +141,13 @@ public class MarcGenerator implements ChunkListener<byte[], BytesReference> {
return;
}
switch (separator) {
case GS: {
case GS: /* 1d */ {
emitMarcField();
emitMarcRecord();
newRecord();
break;
}
case RS: {
case RS: /* 1e */ {
emitMarcField();
if (directory == null || directory.isEmpty()) {
if (marcTransformer != null) {
@ -200,7 +201,7 @@ public class MarcGenerator implements ChunkListener<byte[], BytesReference> {
}
break;
}
case US: {
case US: /* 1f */{
builder.subfield(recordLabel, this.data);
break;
}
@ -211,6 +212,15 @@ public class MarcGenerator implements ChunkListener<byte[], BytesReference> {
position += bytesReference.length() + 1;
}
/**
* This method will emit the last record, if not emitted already.
* Useful if chunk streams have no closing record separator.
*/
public void close() throws IOException {
if (position > 0) {
emitMarcRecord();
}
}
private void emitMarcField() {
MarcField marcField = builder.build();

View file

@ -48,7 +48,7 @@ public class ConcurrencyTest {
public void concurrentXmlWrite() throws Exception {
int n = 16;
ExecutorService executorService = Executors.newFixedThreadPool(n);
String s = "zdblokutf8.mrc"; // 292 records
String s = "zdblokutf8.mrc";
File file = File.createTempFile(s + ".", ".xml");
file.deleteOnExit();
FileOutputStream out = new FileOutputStream(file);
@ -74,7 +74,7 @@ public class ConcurrencyTest {
writer.endCollection();
writer.endDocument();
assertNull(writer.getException());
assertEquals(n * 292, writer.getRecordCounter());
assertEquals(n * 293, writer.getRecordCounter());
}
}
@ -87,7 +87,7 @@ public class ConcurrencyTest {
public void concurrentJsonArrayWrite() throws Exception {
int n = 16;
ExecutorService executorService = Executors.newFixedThreadPool(n);
String s = "zdblokutf8.mrc"; // 292 records
String s = "zdblokutf8.mrc";
File file = File.createTempFile(s + ".", ".json");
file.deleteOnExit();
FileOutputStream out = new FileOutputStream(file);
@ -113,7 +113,7 @@ public class ConcurrencyTest {
writer.endCollection();
writer.endDocument();
assertNull(writer.getException());
assertEquals(n * 292, writer.getRecordCounter());
assertEquals(n * 293, writer.getRecordCounter());
}
}
/**
@ -125,7 +125,7 @@ public class ConcurrencyTest {
public void concurrentJsonLinesWrite() throws Exception {
int n = 16;
ExecutorService executorService = Executors.newFixedThreadPool(n);
String s = "zdblokutf8.mrc"; // 292 records
String s = "zdblokutf8.mrc";
File file = File.createTempFile(s + ".", ".jsonlines");
file.deleteOnExit();
FileOutputStream out = new FileOutputStream(file);
@ -151,7 +151,7 @@ public class ConcurrencyTest {
writer.endCollection();
writer.endDocument();
assertNull(writer.getException());
assertEquals(n * 292, writer.getRecordCounter());
assertEquals(n * 293, writer.getRecordCounter());
}
}
}

View file

@ -0,0 +1,61 @@
package org.xbib.marc;
import org.junit.Test;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.concurrent.atomic.AtomicInteger;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
/**
*
*/
public class SWBTest {
@Test
public void testMarcStream() throws Exception {
String[] files = {
"SWB1.marc21",
"SWB2.marc21",
"SWB3.marc21"
};
for (String file : files) {
AtomicInteger count = new AtomicInteger();
try (InputStream in = getClass().getResource(file).openStream()) {
Marc marc = Marc.builder()
.setInputStream(in)
.setCharset(Charset.forName("UTF-8"))
.build();
marc.iso2709Stream().chunks().forEach(chunk -> {
count.incrementAndGet();
});
}
assertTrue(count.get() > 0);
}
}
@Test
public void testMarcRecordIterable() throws Exception {
String[] files = {
"SWB1.marc21",
"SWB2.marc21",
"SWB3.marc21"
};
for (String file : files) {
int count = 0;
try (InputStream in = getClass().getResource(file).openStream()) {
Marc.Builder builder = Marc.builder()
.setInputStream(in)
.setCharset(Charset.forName("UTF-8"))
.setFormat("Marc21")
.setType("Bibliographic");
for (MarcRecord marcRecord : builder.iterable()) {
count++;
}
}
assertEquals(1, count);
}
}
}

View file

@ -138,28 +138,27 @@ public class MabTest {
// write one record twice to test correct beginCollection/endCollection with two inner parse() calls
String s = "HT016424175.xml";
InputStream in = getClass().getResourceAsStream(s);
MarcContentHandler contentHandler = new MarcContentHandler();
contentHandler.addNamespace("http://www.ddb.de/professionell/mabxml/mabxml-1.xsd");
contentHandler.setFormat("MARC21");
contentHandler.setType("Bibliographic");
contentHandler.setMarcListener(writer);
try (InputStream in = getClass().getResourceAsStream(s)) {
Marc marc = Marc.builder()
.setInputStream(in)
.setCharset(StandardCharsets.UTF_8)
.setContentHandler(contentHandler)
.build();
marc.xmlReader().parse(new InputSource(in));
in.close();
in = getClass().getResourceAsStream(s);
marc = Marc.builder()
}
try (InputStream in = getClass().getResourceAsStream(s)) {
Marc marc = Marc.builder()
.setInputStream(in)
.setCharset(StandardCharsets.UTF_8)
.setContentHandler(contentHandler)
.build();
marc.xmlReader().parse(new InputSource(in));
in.close();
}
writer.endCollection();
sw.close();
assertNull(writer.getException());

View file

@ -0,0 +1,4 @@
/**
*
*/
package org.xbib.marc.filter;

View file

@ -0,0 +1 @@
00897cas a22002892 4500001001000000003000700010005001700017007001500034008004100049016002200090022001400112035002500126040003100151041000800182044001000190082001300200084001900213245010300232246004000335260002400375300003500399362002000434689007000454689006200524689001100586935001000597105282650DE-57620110808202141.0cz uuu---uuuuu030528c19959999xx p 0eng c7 a1293564-52DE-600 a0028-0836 a(DE-599)ZDB1293564-5 aDE-576bgercDE-576erakwb aeng aXA-GB0 a050a500 a100a7002zdbs10aNatureh[Elektronische Ressource] :binternational weekly journal of science.p[Mehrjahresausgabe]9 aNature <London> / Mehrjahresausgabe aLondon :bMacmillan aCD-ROMs +eGuide in Papierform1 a1992/94(1995) -00Ds0(DE-588)4041421-80(DE-576)2090448372gndaNaturwissenschaften01Ds0(DE-588)4067488-50(DE-576)20917000X2gndaZeitschrift0 5DE-101 bsoerd.

View file

@ -0,0 +1 @@
04783cas a2201081 4500001001000000003000700010005001700017007001500034008004100049016002300090016002200113029001400135030001000149035002500159040003100184041000800215044001000223082001300233084001700246084001700263084001700280084001800297210001100315210002000326210002100346245008500367246006200452246007700514246002500591246003100616246003500647246002100682246002900703246002100732246001600753246001900769246001900788246005100807246004900858246004800907246002800955246002000983260003301003260003401036300002101070362009601091363001201187363000901199500003501208500029201243515009201535533015001627583006301777591002201840689007001862689002401932689001101956689007001967689002402037689001102061751001602072770005502088770003902143770002702182770005402209775014102263775013402404780007902538780007302617780007602690780007302766856011402839935000902953935000902962935001702971935000702988935000702995935000703002935000703009936011103016936012703127936010503254936009803359LOK003403457LOK001803491LOK001603509LOK001903525LOK002403544LOK004203568LOK001603610LOK001703626LOK00580364340001324XDE-57620170119163306.0cr uuu---uuuuu140120d18691873xx n s 0 0eng c7 a10465484332DE-1017 a2752076-62DE-600xda0028-0836 aNATUA a(DE-599)ZDB2752076-6 aDE-576bgercDE-576erakwb aeng aXA-GB0 a070a500 aZS 00012rvk aTA 10002rvk aUA 10002rvk aWA 150002rvk10aNature10aNature (London)10aNature,London,GB10aNatureh[Elektronische Ressource] :bthe international weekly journal of science1 iZusatz anfangs: aa weekly illustrated journal of science1 iZusatz bis 435.2005, Nr. 7039: ainternational weekly journal of science3 aThe genome directory3 aThe yeast genome directory3 aProduktschau für Deutschland3 aScience in Spain3 aScience in Latin America3 aNature net guide3 aNature jobs3 aNature insight3 aNature outlook3 aScience and technology networks in Scandinavia3 aScience & technology networks in Scandinavia3 aThe international weekly journal of science3 aNature publishing index9 aNature <London> aLondon :bNature Publ. Group aLondon :bMacmillan,canfangs aOnline-Ressource1 aUrheberrechtsfreie Bände digitalisiert oder im Digitalisierungsprozess 1.1869/70 - 8.187300i1869/7010i1873 aRepr.: New York, NY : Johnson. aUngezählte Beil.: The genome directory; The yeast genome directory; Suppl.; Produktschau für Deutschland; Science in Spain; Science in Latin America; Nature net guide; Nature jobs; Science & technology networks in Scandinavia; Nature outlook; Nature insight; Nature publishing index. a418.2002,[1]=Nr. 6893 teils fälschlich als Vol. 417 bez.; Periodizität: wöchentl. bMünchencMünchener Digitalisierungszentrumd20087|20082013||||||nDigital. Ausg.: München : Münchener Digitalisierungszentrum, 2008-2013 aLangzeitarchivierung durch die Bayerische Staatsbibliothek a85640SF3!Volltext00Ds0(DE-588)4041421-80(DE-576)2090448372gndaNaturwissenschaften01Af2gndaZeitschrift0 5DE-10110Ds0(DE-588)4041421-80(DE-576)2090448372gndaNaturwissenschaften11Af2gndaZeitschrift1 5DE-101 aLondon4dbp08aSuppl. ---> [Nature publishing index ... / Global]08aBeil. ---> European product review08aBeil. ---> Labscene UK08aBeil. ---> [Nature publishing index ... / Global]08iDruckausg.aNaturedLondon : Macmillan Publishers Limited, part of Springer Nature, 1869x0028-0836w(DE-576)014473941w(DE-600)120714-308iOnline-Ausg.aNaturedLondon [u.a.] : Nature Publ. Group, 1869hOnline-Ressourcex1476-4687w(DE-576)079718426w(DE-600)1413423-800iDaraus hervorgeg. u. darin aufgeg.a [Nature <London> / Physical sciences]00iDaraus hervorgeg. u. darin aufgeg.a [Nature <London> / New biology]00iDaraus hervorgeg. u. darin aufgeg.a [Nature <London> / Friday edition]00iDaraus hervorgeg. u. darin aufgeg.a [Nature <London> / New biology]40uhttp://opacplus.bsb-muenchen.de/title/120714-3xLangzeitarchivierung ; urheberrechtsfreie BändezKostenfrei alzar bcofz ctextcftcmg dld ddm dla dztrvaZS 0001bZeitschriftenkTechnikkHandwerk und Gewerbe. Verschiedene TechnologienkZeitschriften020881583XrvaTA 1000bReferateblätter und ZeitschriftenkAllgemeine NaturwissenschaftkReferateblätter und Zeitschriften0329105892rvaUA 1000bReferateblätter und ZeitschriftenkPhysikkReferateblätter und Zeitschriften0329175343rvaWA 15000bZeitschriftenkBiologiekReferateorgane und ZeitschriftenkZeitschriften0206662238 0000 xxxxxcx a22 zn 4500 0001 781141168 0003 DE-576 0004 40001324X 0005 20170119163306 0008 140123||||||||||||||||ger||||||| 0852 aLFER 0852 1mn900 08564 uhttp://opacplus.bsb-muenchen.de/title/120714-3.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
00618nM2.01200024 h001 AC01556832002a19960701003 20160826004 20171015025zZDB-1293564-5026 OBVAC01556832030 z|1dcr|||||35036aGB037beng050 ||||||||d|||||052 p||||||a|||||||070 UBS070bUBS076s27310 Nature <London> / Mehrjahresausgabe331 Nature334 Elektronische Ressource335 international weekly journal of science360 [Mehrjahresausgabe]403 CD-ROM-Ausg. nebst Guide in Papierform405 1992/94(1995) -410 London412 Macmillan425b1995507 Hauptsacht. auf d. BehÉaltnis542aISSN 0028-0836652aaOptische Speicherplatte700z|700088 DNW$$bVERW$$e05088 DNW$$bVERW$$cCD-ZS-00$$d1992/94(1995)088 UBS50

View file

@ -0,0 +1 @@
01489nM2.01200024 h001 AC03437521002a19991122003 20170704105720004 20171015025a019080638025z1413423-8026 ZDB1413423-8030 a||d|||||||35036aXA-GB037beng050 ||||||||g|||||052 z||||||aw||||||058 cr||||||||||||064aaZeitschrift9(DE-588)4067488-5070 MUL070aDNB070b9001076s25078eZDB-1-NTA310 Nature <London>331 Nature334 Elektronische Ressource335 international weekly journal of science370aNature376bNATUA376aNature376aNature(London)376aNature,London,GB405 1.1869/70 - ; auch mit durchgehender Nr.-ZÉahlung406b1869/70410 London [u.a.]412 Nature Publ. Group418 aLondongMacmillanhanfangs425b1869501 Gesehen am 22.06.17523 PeriodizitÉat: wÉochentl.527z120714-3 Druckausg.:¶Nature <London>530z2109534-6 In:¶Nature.com542aISSN 1476-4687545adISSN 0028-0836652aaOnline-Ressource655euhttp://www.bibliothek.uni-regensburg.de/ezeit/?1413423xEZBA0655euhttp://www.nature.com/nature/index.htmlxVerlagA0659 aLangzeitarchivierung gewÉahrleistet : durch die Deutsche Nationalbibliothek, LZA673b(DE-588)4074335-4 London700 |500¶DNB700 |500¶ZDB700t|NAT 001z902s 4041421-8 Naturwissenschaften902f |Zeitschrift902f |Elektronische Publikation904aBOKLOW A-UBILOW A-VUWLOW A-UBWLOW A-TUW088 OMUG$$dOnline088 MEBOO088 KEBO088 HEBO$$dZugÉanglicher Bestand s. EZB - Elektronische Zeitschriftenbibliothek088 FHB088 YWELR$$d1.1869/70 - 450.2007,7173088 DEBO088 LHB088 LHB$$d1.1869 - 450.2007; 529.2016 -

File diff suppressed because it is too large Load diff

View file

@ -1,72 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<collection xmlns="info:lc/xmlns/marcxchange-v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="info:lc/xmlns/marcxchange-v2 http://www.loc.gov/standards/iso25577/marcxchange-2-0.xsd">
<collection xmlns="info:lc/xmlns/marcxchange-v2" xsi:schemaLocation="info:lc/xmlns/marcxchange-v2 http://www.loc.gov/standards/iso25577/marcxchange-2-0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<record format="MARC21" type="Bibliographic">
<leader>00000 2200000 000 </leader>
<controlfield tag="002">Aan</controlfield>
<controlfield tag="003">12345</controlfield>
<datafield tag="010" ind1="@" ind2=" ">
<datafield ind2=" " ind1="@" tag="010">
<subfield code="a">chi</subfield>
</datafield>
<datafield tag="011" ind1="@" ind2=" ">
<datafield ind2=" " ind1="@" tag="011">
<subfield code="a">2004</subfield>
<subfield code="n">2004.01</subfield>
</datafield>
<datafield tag="012" ind1="X" ind2=" ">
<datafield ind2=" " ind1="X" tag="012">
<subfield code="0">0</subfield>
</datafield>
<datafield tag="019" ind1="@" ind2=" ">
<datafield ind2=" " ind1="@" tag="019">
<subfield code="a">XB-CN</subfield>
</datafield>
<datafield tag="021" ind1="A" ind2=" ">
<datafield ind2=" " ind1="A" tag="021">
<subfield code="a">我国民事立法的回顾与展望</subfield>
<subfield code="f">History and perspective of China civil law</subfield>
<subfield code="h">柳经纬主编;</subfield>
</datafield>
<datafield tag="101" ind1="@" ind2=" ">
<datafield ind2=" " ind1="@" tag="101">
<subfield code="a">120</subfield>
<subfield code="c">PICA</subfield>
<subfield code="d">Oldenburg, IBIT Universität Oldenburg &lt;715></subfield>
<subfield code="d">Oldenburg, IBIT Universität Oldenburg &lt;715&gt;</subfield>
</datafield>
<datafield tag="101" ind1="B" ind2=" ">
<datafield ind2=" " ind1="B" tag="101">
<subfield code="0">15-01-09</subfield>
<subfield code="t">15:32:38.000</subfield>
</datafield>
<datafield tag="101" ind1="D" ind2=" ">
<datafield ind2=" " ind1="D" tag="101">
<subfield code="0">15-01-09</subfield>
<subfield code="b">9330</subfield>
<subfield code="a">0715</subfield>
</datafield>
<datafield tag="101" ind1="U" ind2=" ">
<datafield ind2=" " ind1="U" tag="101">
<subfield code="0">utf8</subfield>
</datafield>
<datafield tag="145" ind1="Z" ind2="X">
<datafield ind2="X" ind1="Z" tag="145">
<subfield code="a">$</subfield>
<subfield code="b">test$</subfield>
<subfield code="c">...</subfield>
</datafield>
<datafield tag="201" ind1="B" ind2="1">
<datafield ind2="1" ind1="B" tag="201">
<subfield code="0">15-01-09</subfield>
<subfield code="t">15:32:38.000</subfield>
</datafield>
<datafield tag="201" ind1="D" ind2="1">
<datafield ind2="1" ind1="D" tag="201">
<subfield code="0">15-01-09</subfield>
<subfield code="b">9330</subfield>
<subfield code="a">0715</subfield>
</datafield>
<datafield tag="201" ind1="U" ind2="1">
<datafield ind2="1" ind1="U" tag="201">
<subfield code="0">utf8</subfield>
</datafield>
<datafield tag="203" ind1="@" ind2="1">
<datafield ind2="1" ind1="@" tag="203">
<subfield code="0">917400194</subfield>
</datafield>
<datafield tag="208" ind1="@" ind2="1">
<datafield ind2="1" ind1="@" tag="208">
<subfield code="a">15-01-09</subfield>
<subfield code="b">z</subfield>
</datafield>
<datafield tag="209" ind1="A" ind2="1">
<datafield ind2="1" ind1="A" tag="209">
<subfield code="f">108</subfield>
<subfield code="a">401-06356/09</subfield>
<subfield code="d">g</subfield>
<subfield code="x">00</subfield>
</datafield>
</record></collection>
</record>
</collection>

View file

@ -1,68 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?>
<collection xmlns="info:lc/xmlns/marcxchange-v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="info:lc/xmlns/marcxchange-v2 http://www.loc.gov/standards/iso25577/marcxchange-2-0.xsd">
<collection xmlns="info:lc/xmlns/marcxchange-v2" xsi:schemaLocation="info:lc/xmlns/marcxchange-v2 http://www.loc.gov/standards/iso25577/marcxchange-2-0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<record format="MarcXchange" type="Bibliographic">
<leader>00000 2200000 000 </leader>
<controlfield tag="002">Aan</controlfield>
<controlfield tag="003">12345</controlfield>
<datafield tag="010" ind1="@" ind2=" ">
<datafield ind2=" " ind1="@" tag="010">
<subfield code="a">chi</subfield>
</datafield>
<datafield tag="011" ind1="@" ind2=" ">
<datafield ind2=" " ind1="@" tag="011">
<subfield code="a">2004</subfield>
<subfield code="n">2004.01</subfield>
</datafield>
<datafield tag="012" ind1="X" ind2=" ">
<datafield ind2=" " ind1="X" tag="012">
<subfield code="0">0</subfield>
</datafield>
<datafield tag="019" ind1="@" ind2=" ">
<datafield ind2=" " ind1="@" tag="019">
<subfield code="a">XB-CN</subfield>
</datafield>
<datafield tag="021" ind1="A" ind2=" ">
<datafield ind2=" " ind1="A" tag="021">
<subfield code="a">我国民事立法的回顾与展望</subfield>
<subfield code="f">History and perspective of China civil law</subfield>
<subfield code="h">柳经纬主编;</subfield>
</datafield>
<datafield tag="101" ind1="@" ind2=" ">
<datafield ind2=" " ind1="@" tag="101">
<subfield code="a">120</subfield>
<subfield code="c">PICA</subfield>
<subfield code="d">Oldenburg, IBIT Universität Oldenburg &lt;715></subfield>
<subfield code="d">Oldenburg, IBIT Universität Oldenburg &lt;715&gt;</subfield>
</datafield>
<datafield tag="101" ind1="B" ind2=" ">
<datafield ind2=" " ind1="B" tag="101">
<subfield code="0">15-01-09</subfield>
<subfield code="t">15:32:38.000</subfield>
</datafield>
<datafield tag="101" ind1="D" ind2=" ">
<datafield ind2=" " ind1="D" tag="101">
<subfield code="0">15-01-09</subfield>
<subfield code="b">9330</subfield>
<subfield code="a">0715</subfield>
</datafield>
<datafield tag="101" ind1="U" ind2=" ">
<datafield ind2=" " ind1="U" tag="101">
<subfield code="0">utf8</subfield>
</datafield>
<datafield tag="145" ind1="Z" ind2="X">
<datafield ind2="X" ind1="Z" tag="145">
<subfield code="b">test</subfield>
<subfield code="c">...</subfield>
</datafield>
<datafield tag="201" ind1="B" ind2="1">
<datafield ind2="1" ind1="B" tag="201">
<subfield code="0">15-01-09</subfield>
<subfield code="t">15:32:38.000</subfield>
</datafield>
<datafield tag="201" ind1="D" ind2="1">
<datafield ind2="1" ind1="D" tag="201">
<subfield code="0">15-01-09</subfield>
<subfield code="b">9330</subfield>
<subfield code="a">0715</subfield>
</datafield>
<datafield tag="201" ind1="U" ind2="1">
<datafield ind2="1" ind1="U" tag="201">
<subfield code="0">utf8</subfield>
</datafield>
<datafield tag="203" ind1="@" ind2="1">
<datafield ind2="1" ind1="@" tag="203">
<subfield code="0">917400194</subfield>
</datafield>
<datafield tag="208" ind1="@" ind2="1">
<datafield ind2="1" ind1="@" tag="208">
<subfield code="a">15-01-09</subfield>
<subfield code="b">z</subfield>
</datafield>
<datafield tag="209" ind1="A" ind2="1">
<datafield ind2="1" ind1="A" tag="209">
<subfield code="f">108</subfield>
<subfield code="a">401-06356/09</subfield>
<subfield code="d">g</subfield>