fixes for MarcXchange XML writing

This commit is contained in:
Jörg Prante 2022-12-02 17:05:52 +01:00
parent 216031848e
commit dfefc49fee
15 changed files with 193 additions and 163 deletions

View file

@ -1,5 +1,5 @@
group = org.xbib group = org.xbib
name = marc name = marc
version = 2.9.8 version = 2.9.9
org.gradle.warning.mode = ALL org.gradle.warning.mode = ALL

View file

@ -18,7 +18,7 @@ package org.xbib.marc;
public class LightweightMarcRecordAdapter extends MarcRecordAdapter { public class LightweightMarcRecordAdapter extends MarcRecordAdapter {
public LightweightMarcRecordAdapter(MarcRecordListener marcRecordListener) { public LightweightMarcRecordAdapter(MarcRecordListener marcRecordListener) {
super(marcRecordListener, false); super(marcRecordListener, null);
this.builder = Marc.builder().lightweightRecord(); this.builder = Marc.builder().lightweightRecord();
} }

View file

@ -52,6 +52,7 @@ import java.io.UncheckedIOException;
import java.net.URL; import java.net.URL;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.Comparator;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.LinkedList; import java.util.LinkedList;
@ -664,7 +665,7 @@ public final class Marc {
private boolean isLightweightRecord; private boolean isLightweightRecord;
private boolean isStableFieldOrder; private Comparator<String> comparator;
private Pattern keyPattern; private Pattern keyPattern;
@ -1131,8 +1132,8 @@ public final class Marc {
return this; return this;
} }
public Marc.Builder stableFieldOrder() { public Marc.Builder comparator(Comparator<String> comparator) {
this.isStableFieldOrder = true; this.comparator = comparator;
return this; return this;
} }
@ -1141,7 +1142,7 @@ public final class Marc {
* @return MARC record * @return MARC record
*/ */
public MarcRecord buildRecord() { public MarcRecord buildRecord() {
return new MarcRecord(format, type, recordLabel, marcFieldList, isLightweightRecord, isStableFieldOrder); return new MarcRecord(format, type, recordLabel, marcFieldList, isLightweightRecord, comparator);
} }
/** /**

View file

@ -23,6 +23,7 @@ import org.xbib.marc.label.RecordLabel;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet; import java.util.HashSet;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.LinkedList; import java.util.LinkedList;
@ -63,13 +64,14 @@ public class MarcRecord implements Map<String, Object> {
* @param recordLabel the record label * @param recordLabel the record label
* @param marcFields the MARC field * @param marcFields the MARC field
* @param lightweight true if MARC record fields should not be entered into the underlying hash map. * @param lightweight true if MARC record fields should not be entered into the underlying hash map.
* @param comparator a tag comparator for the underlying map
*/ */
public MarcRecord(String format, public MarcRecord(String format,
String type, String type,
RecordLabel recordLabel, RecordLabel recordLabel,
List<MarcField> marcFields, List<MarcField> marcFields,
boolean lightweight, boolean lightweight,
boolean stable) { Comparator<String> comparator) {
this.format = format; this.format = format;
this.type = type; this.type = type;
this.recordLabel = recordLabel; this.recordLabel = recordLabel;
@ -77,7 +79,7 @@ public class MarcRecord implements Map<String, Object> {
throw new NullPointerException("record label must not be null"); throw new NullPointerException("record label must not be null");
} }
this.marcFields = marcFields; this.marcFields = marcFields;
this.delegate = lightweight ? Map.of() : createMapFromMarcFields(stable); this.delegate = lightweight ? Map.of() : createMapFromMarcFields(comparator);
} }
/** /**
@ -371,7 +373,11 @@ public class MarcRecord implements Map<String, Object> {
} }
public void rebuildMap() { public void rebuildMap() {
this.delegate = createMapFromMarcFields(true); this.delegate = createMapFromMarcFields(Comparator.naturalOrder());
}
public void rebuildFields(Comparator<MarcField> comparator) {
this.marcFields.sort(comparator);
} }
@Override @Override
@ -451,8 +457,8 @@ public class MarcRecord implements Map<String, Object> {
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private Map<String, Object> createMapFromMarcFields(boolean stable) { private Map<String, Object> createMapFromMarcFields(Comparator<String> comparator) {
Map<String, Object> map = stable ? new TreeMap<>() : new LinkedHashMap<>(); Map<String, Object> map = comparator!= null ? new TreeMap<>(comparator) : new LinkedHashMap<>();
if (marcFields == null) { if (marcFields == null) {
return map; return map;
} }

View file

@ -17,6 +17,8 @@ package org.xbib.marc;
import org.xbib.marc.label.RecordLabel; import org.xbib.marc.label.RecordLabel;
import java.util.Comparator;
/** /**
* The Marc record adapter collects Marc field events, collects them in a Marc builder, * The Marc record adapter collects Marc field events, collects them in a Marc builder,
* and sends collected records to a Marc record listener. This is very handy for * and sends collected records to a Marc record listener. This is very handy for
@ -28,15 +30,13 @@ public class MarcRecordAdapter implements MarcListener {
protected Marc.Builder builder; protected Marc.Builder builder;
private boolean isStableFieldOrder; private Comparator<String> comparator;
public MarcRecordAdapter(MarcRecordListener marcRecordListener, boolean isStableFieldOrder) { public MarcRecordAdapter(MarcRecordListener marcRecordListener, Comparator<String> comparator) {
this.marcRecordListener = marcRecordListener; this.marcRecordListener = marcRecordListener;
this.builder = Marc.builder(); this.builder = Marc.builder();
this.isStableFieldOrder = isStableFieldOrder; this.comparator = comparator;
if (isStableFieldOrder) { this.builder.comparator(comparator);
this.builder.stableFieldOrder();
}
} }
@Override @Override
@ -64,9 +64,7 @@ public class MarcRecordAdapter implements MarcListener {
public void endRecord() { public void endRecord() {
marcRecordListener.record(builder.buildRecord()); marcRecordListener.record(builder.buildRecord());
builder = Marc.builder(); builder = Marc.builder();
if (isStableFieldOrder) { builder.comparator(comparator);
builder.stableFieldOrder();
}
} }
@Override @Override

View file

@ -15,6 +15,7 @@
*/ */
package org.xbib.marc.xml; package org.xbib.marc.xml;
import java.util.Comparator;
import java.util.HashSet; import java.util.HashSet;
import org.xbib.marc.MarcField; import org.xbib.marc.MarcField;
import org.xbib.marc.MarcListener; import org.xbib.marc.MarcListener;
@ -85,7 +86,7 @@ public class MarcContentHandler
private final Set<String> validNamespaces; private final Set<String> validNamespaces;
private boolean isStableFieldOrder; private Comparator<String> comparator;
public MarcContentHandler() { public MarcContentHandler() {
this.recordCounter = new AtomicInteger(); this.recordCounter = new AtomicInteger();
@ -166,8 +167,8 @@ public class MarcContentHandler
return this; return this;
} }
public MarcContentHandler setStableFieldOrder(boolean stableFieldOrder) { public MarcContentHandler setComparator(Comparator<String> comparator) {
this.isStableFieldOrder = stableFieldOrder; this.comparator = comparator;
return this; return this;
} }
@ -254,7 +255,7 @@ public class MarcContentHandler
} else { } else {
MarcRecord marcRecord = new MarcRecord(getFormat(), getType(), MarcRecord marcRecord = new MarcRecord(getFormat(), getType(),
RecordLabel.builder().from(label).build(), RecordLabel.builder().from(label).build(),
marcFieldList, false, isStableFieldOrder); marcFieldList, false, comparator);
marcRecordListener.record(marcRecord); marcRecordListener.record(marcRecord);
} }
} }

View file

@ -343,7 +343,7 @@ public class MarcXchangeWriter extends MarcContentHandler implements Flushable,
if (exception != null) { if (exception != null) {
return; return;
} }
if (field.isControl() && field.getValue() != null) { if (field.isControl()) {
Iterator<Attribute> attrs = Iterator<Attribute> attrs =
Collections.singletonList(eventFactory.createAttribute(TAG_ATTRIBUTE, Collections.singletonList(eventFactory.createAttribute(TAG_ATTRIBUTE,
transform(field.getTag()))).iterator(); transform(field.getTag()))).iterator();
@ -351,6 +351,12 @@ public class MarcXchangeWriter extends MarcContentHandler implements Flushable,
String value = field.getValue(); String value = field.getValue();
if (value != null && !value.isEmpty()) { if (value != null && !value.isEmpty()) {
xmlEventConsumer.add(eventFactory.createCharacters(transform(value))); xmlEventConsumer.add(eventFactory.createCharacters(transform(value)));
} else {
// the control field is disguised as a data field, try lookup value in first subfield of " "
value = field.getFirstSubfieldValue(" ");
if (value != null && !value.isEmpty()) {
xmlEventConsumer.add(eventFactory.createCharacters(transform(value)));
}
} }
xmlEventConsumer.add(eventFactory.createEndElement(CONTROLFIELD_ELEMENT, namespaces)); xmlEventConsumer.add(eventFactory.createEndElement(CONTROLFIELD_ELEMENT, namespaces));
} else if (!field.isEmpty()) { } else if (!field.isEmpty()) {
@ -369,9 +375,9 @@ public class MarcXchangeWriter extends MarcContentHandler implements Flushable,
// "There is one restriction. A special mode (identifier length = 0) of ISO 2709 operates with // "There is one restriction. A special mode (identifier length = 0) of ISO 2709 operates with
// data fields without subfields. In the MarcXchange schema subfields are required, // data fields without subfields. In the MarcXchange schema subfields are required,
// i.e. identifier length = 0 is not supported." // i.e. identifier length = 0 is not supported."
// We support it! A subfield ID of length 0 will be substituted by "a" // But we support it! A subfield ID of length 0 will be substituted by blank (" ").
if (code.isEmpty()) { if (code.isEmpty()) {
code = "a"; code = " ";
} }
List<Attribute> subfieldattrs = new LinkedList<>(); List<Attribute> subfieldattrs = new LinkedList<>();
subfieldattrs.add(eventFactory.createAttribute(CODE_ATTRIBUTE, transform(code))); subfieldattrs.add(eventFactory.createAttribute(CODE_ATTRIBUTE, transform(code)));
@ -382,9 +388,9 @@ public class MarcXchangeWriter extends MarcContentHandler implements Flushable,
} }
String value = field.getValue(); String value = field.getValue();
if (value != null && !value.isEmpty()) { if (value != null && !value.isEmpty()) {
// if we have data in a datafield, create subfield "a" with data // if we have data in a datafield, create subfield blank (" ") with data
attrs = new LinkedList<>(); attrs = new LinkedList<>();
attrs.add(eventFactory.createAttribute(CODE_ATTRIBUTE, "a")); attrs.add(eventFactory.createAttribute(CODE_ATTRIBUTE, " "));
xmlEventConsumer.add(eventFactory.createStartElement(SUBFIELD_ELEMENT, attrs.iterator(), namespaces)); xmlEventConsumer.add(eventFactory.createStartElement(SUBFIELD_ELEMENT, attrs.iterator(), namespaces));
xmlEventConsumer.add(eventFactory.createCharacters(transform(value))); xmlEventConsumer.add(eventFactory.createCharacters(transform(value)));
xmlEventConsumer.add(eventFactory.createEndElement(SUBFIELD_ELEMENT, namespaces)); xmlEventConsumer.add(eventFactory.createEndElement(SUBFIELD_ELEMENT, namespaces));
@ -444,7 +450,6 @@ public class MarcXchangeWriter extends MarcContentHandler implements Flushable,
if (xmlEventConsumer instanceof XMLEventWriter) { if (xmlEventConsumer instanceof XMLEventWriter) {
((XMLEventWriter) xmlEventConsumer).flush(); ((XMLEventWriter) xmlEventConsumer).flush();
} }
afterRecord();
} catch (XMLStreamException e) { } catch (XMLStreamException e) {
handleException(new IOException(e)); handleException(new IOException(e));
} finally { } finally {

View file

@ -131,7 +131,6 @@ public class MarcToModsTest {
} }
}); });
transformer.transform(source, streamResult); transformer.transform(source, streamResult);
marcInputStream.close();
xslInputStream.close(); xslInputStream.close();
assertThat(out.toByteArray(), assertThat(out.toByteArray(),
CompareMatcher.isIdenticalTo(getClass().getResource("summerland-sax-mods.xml").openStream())); CompareMatcher.isIdenticalTo(getClass().getResource("summerland-sax-mods.xml").openStream()));
@ -178,7 +177,6 @@ public class MarcToModsTest {
} }
}); });
transformer.transform(source, streamResult); transformer.transform(source, streamResult);
marcInputStream.close();
xslInputStream.close(); xslInputStream.close();
assertThat(out.toByteArray(), assertThat(out.toByteArray(),
CompareMatcher.isIdenticalTo(getClass().getResource("summerland-dom-mods.xml").openStream())); CompareMatcher.isIdenticalTo(getClass().getResource("summerland-dom-mods.xml").openStream()));

View file

@ -16,6 +16,7 @@
package org.xbib.marc; package org.xbib.marc;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertFalse;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.xbib.marc.transformer.value.MarcValueTransformers; import org.xbib.marc.transformer.value.MarcValueTransformers;
@ -24,16 +25,33 @@ import org.xmlunit.matchers.CompareMatcher;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.InputStream; import java.io.InputStream;
import java.io.StringWriter;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.text.Normalizer; import java.text.Normalizer;
import java.util.Map;
import java.util.TreeMap;
import java.util.zip.GZIPInputStream; import java.util.zip.GZIPInputStream;
public class MarcXchangeWriterTest { public class MarcXchangeWriterTest {
@Test
public void simpleMarcRecordWrite() throws Exception {
Map<String, Object> map = new TreeMap<>(Map.of("001", "123",
"100", Map.of("_", Map.of("a", "Hello World"))));
MarcRecord marcRecord = MarcRecord.from(map);
StringWriter stringWriter = new StringWriter();
try (MarcXchangeWriter writer = new MarcXchangeWriter(stringWriter)) {
writer.startDocument();
writer.record(marcRecord);
writer.endDocument();
}
assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><record xmlns=\"info:lc/xmlns/marcxchange-v2\" format=\"MARC21\" 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\" type=\"Bibliographic\"><leader>00000 0000000 000 </leader><datafield ind2=\" \" ind1=\" \" tag=\"100\"><subfield code=\"a\">Hello World</subfield></datafield><controlfield tag=\"001\">123</controlfield></record>", stringWriter.toString());
}
@Test @Test
public void splitMarcXchange() throws Exception { public void splitMarcXchange() throws Exception {
String s = "IRMARC8.bin"; String s = "IRMARC8.bin";
InputStream inputStream = getClass().getResource("/org/xbib/marc//" + s).openStream(); InputStream inputStream = getClass().getResource("/org/xbib/marc/" + s).openStream();
MarcValueTransformers marcValueTransformers = new MarcValueTransformers(); MarcValueTransformers marcValueTransformers = new MarcValueTransformers();
marcValueTransformers.setMarcValueTransformer(value -> Normalizer.normalize(value, Normalizer.Form.NFC)); marcValueTransformers.setMarcValueTransformer(value -> Normalizer.normalize(value, Normalizer.Form.NFC));
// fileNamePattern, splitSize, bufferSize, compress, indent // fileNamePattern, splitSize, bufferSize, compress, indent
@ -61,7 +79,7 @@ public class MarcXchangeWriterTest {
@Test @Test
public void splitMarcXchangeCompressed() throws Exception { public void splitMarcXchangeCompressed() throws Exception {
String s = "IRMARC8.bin"; String s = "IRMARC8.bin";
InputStream inputStream = getClass().getResource("/org/xbib/marc//" + s).openStream(); InputStream inputStream = getClass().getResource("/org/xbib/marc/" + s).openStream();
MarcValueTransformers marcValueTransformers = new MarcValueTransformers(); MarcValueTransformers marcValueTransformers = new MarcValueTransformers();
marcValueTransformers.setMarcValueTransformer(value -> Normalizer.normalize(value, Normalizer.Form.NFC)); marcValueTransformers.setMarcValueTransformer(value -> Normalizer.normalize(value, Normalizer.Form.NFC));
// fileNamePattern, splitSize, bufferSize, compress, indent // fileNamePattern, splitSize, bufferSize, compress, indent

View file

@ -43,8 +43,11 @@ import org.xml.sax.InputSource;
import org.xmlunit.matchers.CompareMatcher; import org.xmlunit.matchers.CompareMatcher;
import java.io.InputStream; import java.io.InputStream;
import java.io.StringWriter; import java.io.StringWriter;
import java.io.Writer;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.regex.Pattern; import java.util.regex.Pattern;
public class MabTest { public class MabTest {
@ -158,6 +161,9 @@ public class MabTest {
assertNull(writer.getException()); assertNull(writer.getException());
} }
sw.close(); sw.close();
//try (Writer writer = Files.newBufferedWriter(Paths.get("HT016424175-combined.xml"))) {
// writer.write(sw.toString());
//}
assertStream(s, new ByteArrayInputStream(outputStream.toByteArray()), assertStream(s, new ByteArrayInputStream(outputStream.toByteArray()),
getClass().getResource("HT016424175.xml.combined.txt").openStream()); getClass().getResource("HT016424175.xml.combined.txt").openStream());
assertThat(sw.toString(), assertThat(sw.toString(),

View file

@ -39,6 +39,7 @@ import org.xbib.marc.xml.MarcContentHandler;
import java.io.InputStream; import java.io.InputStream;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.text.Normalizer; import java.text.Normalizer;
import java.util.Comparator;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -65,7 +66,7 @@ public class MarcJsonWriterTest {
.setType(MarcXchangeConstants.BIBLIOGRAPHIC_TYPE) .setType(MarcXchangeConstants.BIBLIOGRAPHIC_TYPE)
) { ) {
Marc.builder() Marc.builder()
.stableFieldOrder() .comparator(Comparator.naturalOrder())
.setInputStream(inputStream) .setInputStream(inputStream)
.setCharset(Charset.forName("ANSEL")) .setCharset(Charset.forName("ANSEL"))
.setMarcListener(writer) .setMarcListener(writer)
@ -92,7 +93,7 @@ public class MarcJsonWriterTest {
try (MarcJsonWriter writer = new MarcJsonWriter(outputStream) try (MarcJsonWriter writer = new MarcJsonWriter(outputStream)
) { ) {
Marc.builder() Marc.builder()
.stableFieldOrder() .comparator(Comparator.naturalOrder())
.setFormat(MarcXchangeConstants.MARCXCHANGE_FORMAT) .setFormat(MarcXchangeConstants.MARCXCHANGE_FORMAT)
.setType(MarcXchangeConstants.BIBLIOGRAPHIC_TYPE) .setType(MarcXchangeConstants.BIBLIOGRAPHIC_TYPE)
.setInputStream(inputStream) .setInputStream(inputStream)
@ -125,7 +126,7 @@ public class MarcJsonWriterTest {
.setType(MarcXchangeConstants.BIBLIOGRAPHIC_TYPE) .setType(MarcXchangeConstants.BIBLIOGRAPHIC_TYPE)
.setInputStream(inputStream) .setInputStream(inputStream)
.setCharset(Charset.forName("ANSEL")) .setCharset(Charset.forName("ANSEL"))
.setMarcListener(new MarcRecordAdapter(writer, true)) .setMarcListener(new MarcRecordAdapter(writer, Comparator.naturalOrder()))
.build() .build()
.writeCollection(); .writeCollection();
} }
@ -146,7 +147,7 @@ public class MarcJsonWriterTest {
contentHandler.addNamespace("http://www.ddb.de/professionell/mabxml/mabxml-1.xsd"); contentHandler.addNamespace("http://www.ddb.de/professionell/mabxml/mabxml-1.xsd");
contentHandler.setFormat("MARC21"); contentHandler.setFormat("MARC21");
contentHandler.setType("Bibliographic"); contentHandler.setType("Bibliographic");
contentHandler.setMarcListener(new MarcRecordAdapter(writer, true)); contentHandler.setMarcListener(new MarcRecordAdapter(writer, Comparator.naturalOrder()));
Marc.builder() Marc.builder()
.setInputStream(inputStream) .setInputStream(inputStream)
.setContentHandler(contentHandler) .setContentHandler(contentHandler)

View file

@ -1,232 +1,228 @@
<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"> <record format="MARC21" type="Bibliographic">
<leader>00860vM2.01200024 000h</leader> <leader>00860vM2.01200024 000h</leader>
<datafield tag="LDR" ind1=" " ind2=" "> <datafield ind2=" " ind1=" " tag="LDR">
<subfield code="a">00860vM2.01200024------h</subfield> <subfield code=" ">00860vM2.01200024------h</subfield>
</datafield> </datafield>
<datafield tag="FMT" ind1=" " ind2=" "> <datafield ind2=" " ind1=" " tag="FMT">
<subfield code="a">MH</subfield> <subfield code=" ">MH</subfield>
</datafield> </datafield>
<datafield tag="001" ind1=" " ind2="1"> <controlfield tag="001"></controlfield>
<subfield code="a">HT004330420</subfield> <controlfield tag="002"></controlfield>
<datafield ind2=" " ind1=" " tag="030">
<subfield code=" ">a|1uc||||||17</subfield>
</datafield> </datafield>
<datafield tag="002" ind1="a" ind2="1"> <datafield ind2=" " ind1=" " tag="050">
<subfield code="a">19921110</subfield> <subfield code=" ">a|||||||||||||</subfield>
</datafield> </datafield>
<datafield tag="030" ind1=" " ind2=" "> <datafield ind2=" " ind1=" " tag="051">
<subfield code="a">a|1uc||||||17</subfield> <subfield code=" ">s|||||||</subfield>
</datafield> </datafield>
<datafield tag="050" ind1=" " ind2=" "> <datafield ind2="1" ind1=" " tag="070">
<subfield code="a">a|||||||||||||</subfield>
</datafield>
<datafield tag="051" ind1=" " ind2=" ">
<subfield code="a">s|||||||</subfield>
</datafield>
<datafield tag="070" ind1=" " ind2="1">
<subfield code="a">292</subfield> <subfield code="a">292</subfield>
</datafield> </datafield>
<datafield tag="080" ind1=" " ind2="1"> <datafield ind2="1" ind1=" " tag="080">
<subfield code="a">60</subfield> <subfield code="a">60</subfield>
</datafield> </datafield>
<datafield tag="100" ind1=" " ind2="1"> <datafield ind2="1" ind1=" " tag="100">
<subfield code="p">Aselmeier, Ulrich</subfield> <subfield code="p">Aselmeier, Ulrich</subfield>
<subfield code="9">(DE-588)108129330</subfield> <subfield code="9">(DE-588)108129330</subfield>
</datafield> </datafield>
<datafield tag="104" ind1="a" ind2="1"> <datafield ind2="1" ind1="a" tag="104">
<subfield code="p">Vogel, Günter</subfield> <subfield code="p">Vogel, Günter</subfield>
<subfield code="9">(DE-588)104707070</subfield> <subfield code="9">(DE-588)104707070</subfield>
</datafield> </datafield>
<datafield tag="105" ind1=" " ind2="1"> <datafield ind2="1" ind1=" " tag="105">
<subfield code="p">Vogel, W.</subfield> <subfield code="p">Vogel, W.</subfield>
</datafield> </datafield>
<datafield tag="105" ind1=" " ind2="1"> <datafield ind2="1" ind1=" " tag="105">
<subfield code="p">Vogel, Gunther</subfield> <subfield code="p">Vogel, Gunther</subfield>
</datafield> </datafield>
<datafield tag="331" ind1=" " ind2="1"> <datafield ind2="1" ind1=" " tag="331">
<subfield code="a">Handlungshilfen zur Unterrichtsplanung</subfield> <subfield code="a">Handlungshilfen zur Unterrichtsplanung</subfield>
</datafield> </datafield>
<datafield tag="335" ind1=" " ind2="1"> <datafield ind2="1" ind1=" " tag="335">
<subfield code="a">Grundlagen und Beispiele aus sach- und schülerorientierter Sicht</subfield> <subfield code="a">Grundlagen und Beispiele aus sach- und schülerorientierter Sicht</subfield>
</datafield> </datafield>
<datafield tag="359" ind1=" " ind2="1"> <datafield ind2="1" ind1=" " tag="359">
<subfield code="a">Ulrich Aselmeier ; Günter Vogel</subfield> <subfield code="a">Ulrich Aselmeier ; Günter Vogel</subfield>
</datafield> </datafield>
<datafield tag="410" ind1=" " ind2="1"> <datafield ind2="1" ind1=" " tag="410">
<subfield code="a">Rheinfelden [u.a.]</subfield> <subfield code="a">Rheinfelden [u.a.]</subfield>
</datafield> </datafield>
<datafield tag="412" ind1=" " ind2="1"> <datafield ind2="1" ind1=" " tag="412">
<subfield code="a">Schäuble</subfield> <subfield code="a">Schäuble</subfield>
</datafield> </datafield>
<datafield tag="425" ind1="a" ind2="1"> <datafield ind2="1" ind1="a" tag="425">
<subfield code="a">1992</subfield> <subfield code="a">1992</subfield>
</datafield> </datafield>
<datafield tag="433" ind1=" " ind2="1"> <datafield ind2="1" ind1=" " tag="433">
<subfield code="a">135 S. : graph. Darst.</subfield> <subfield code="a">135 S. : graph. Darst.</subfield>
</datafield> </datafield>
<datafield tag="830" ind1=" " ind2="0"> <datafield ind2="0" ind1=" " tag="830">
<subfield code="t">Gesellschaft, Erziehung und Bildung : Beiträge zu einer neuen Lernkultur ; 6</subfield> <subfield code="t">Gesellschaft, Erziehung und Bildung : Beiträge zu einer neuen Lernkultur ; 6</subfield>
<subfield code="w">HT003704070</subfield> <subfield code="w">HT003704070</subfield>
<subfield code="v">6 = 23 [d. Gesamtw.]</subfield> <subfield code="v">6 = 23 [d. Gesamtw.]</subfield>
<subfield code="n">6</subfield> <subfield code="n">6</subfield>
</datafield> </datafield>
<datafield tag="830" ind1=" " ind2="0"> <datafield ind2="0" ind1=" " tag="830">
<subfield code="t">Gesellschaft, Erziehung und Bildung ; 23</subfield> <subfield code="t">Gesellschaft, Erziehung und Bildung ; 23</subfield>
<subfield code="w">HT003575299</subfield> <subfield code="w">HT003575299</subfield>
<subfield code="v">23 : Beiträge zu einer neuen Lernkultur ; 6</subfield> <subfield code="v">23 : Beiträge zu einer neuen Lernkultur ; 6</subfield>
<subfield code="n">23</subfield> <subfield code="n">23</subfield>
</datafield> </datafield>
<datafield tag="540" ind1="a" ind2="1"> <datafield ind2="1" ind1="a" tag="540">
<subfield code="a">3-87718-583-5</subfield> <subfield code="a">3-87718-583-5</subfield>
<subfield code="b">kart. : ca. DM 48.00 (freier Pr.)</subfield> <subfield code="b">kart. : ca. DM 48.00 (freier Pr.)</subfield>
</datafield> </datafield>
<datafield tag="700" ind1="l" ind2="1"> <datafield ind2="1" ind1="l" tag="700">
<subfield code="a">120</subfield> <subfield code="a">120</subfield>
</datafield> </datafield>
<datafield tag="689" ind1="0" ind2="0"> <datafield ind2="0" ind1="0" tag="689">
<subfield code="s">Unterrichtsplanung</subfield> <subfield code="s">Unterrichtsplanung</subfield>
<subfield code="9">(DE-588)4117301-6</subfield> <subfield code="9">(DE-588)4117301-6</subfield>
</datafield> </datafield>
<datafield tag="689" ind1="0" ind2="1"> <datafield ind2="1" ind1="0" tag="689">
<subfield code="s">Sekundarstufe</subfield> <subfield code="s">Sekundarstufe</subfield>
<subfield code="9">(DE-588)4077347-4</subfield> <subfield code="9">(DE-588)4077347-4</subfield>
</datafield> </datafield>
<datafield tag="SYS" ind1=" " ind2=" "> <datafield ind2=" " ind1=" " tag="SYS">
<subfield code="a">006488301</subfield> <subfield code=" ">006488301</subfield>
</datafield> </datafield>
<datafield tag="LOW" ind1=" " ind2="1"> <datafield ind2="1" ind1=" " tag="LOW">
<subfield code="a">DE-Bi10</subfield> <subfield code="a">DE-Bi10</subfield>
</datafield> </datafield>
<datafield tag="LOW" ind1=" " ind2="1"> <datafield ind2="1" ind1=" " tag="LOW">
<subfield code="a">U0001</subfield> <subfield code="a">U0001</subfield>
</datafield> </datafield>
<datafield tag="LOW" ind1=" " ind2="1"> <datafield ind2="1" ind1=" " tag="LOW">
<subfield code="a">R0001</subfield> <subfield code="a">R0001</subfield>
</datafield> </datafield>
<datafield tag="LOW" ind1=" " ind2="1"> <datafield ind2="1" ind1=" " tag="LOW">
<subfield code="a">B0001</subfield> <subfield code="a">B0001</subfield>
</datafield> </datafield>
<datafield tag="LOW" ind1=" " ind2="1"> <datafield ind2="1" ind1=" " tag="LOW">
<subfield code="a">L0001</subfield> <subfield code="a">L0001</subfield>
</datafield> </datafield>
<datafield tag="LOW" ind1=" " ind2="1"> <datafield ind2="1" ind1=" " tag="LOW">
<subfield code="a">M1054</subfield> <subfield code="a">M1054</subfield>
</datafield> </datafield>
<datafield tag="LOW" ind1=" " ind2="1"> <datafield ind2="1" ind1=" " tag="LOW">
<subfield code="a">M0001</subfield> <subfield code="a">M0001</subfield>
</datafield> </datafield>
<datafield tag="952" ind1=" " ind2="1"> <datafield ind2="1" ind1=" " tag="952">
<subfield code="s">Lehrplanung</subfield> <subfield code="s">Lehrplanung</subfield>
</datafield> </datafield>
<datafield tag="952" ind1=" " ind2="1"> <datafield ind2="1" ind1=" " tag="952">
<subfield code="s">Unterricht</subfield> <subfield code="s">Unterricht</subfield>
<subfield code="x">Planung</subfield> <subfield code="x">Planung</subfield>
</datafield> </datafield>
<datafield tag="952" ind1=" " ind2="1"> <datafield ind2="1" ind1=" " tag="952">
<subfield code="s">Secondary School</subfield> <subfield code="s">Secondary School</subfield>
</datafield> </datafield>
<datafield tag="952" ind1=" " ind2="1"> <datafield ind2="1" ind1=" " tag="952">
<subfield code="s">Sekundarbereich</subfield> <subfield code="s">Sekundarbereich</subfield>
</datafield> </datafield>
<datafield tag="952" ind1=" " ind2="1"> <datafield ind2="1" ind1=" " tag="952">
<subfield code="s">Sekundarschule</subfield> <subfield code="s">Sekundarschule</subfield>
</datafield> </datafield>
<datafield tag="952" ind1=" " ind2="1"> <datafield ind2="1" ind1=" " tag="952">
<subfield code="s">Schuljahr 5-13</subfield> <subfield code="s">Schuljahr 5-13</subfield>
</datafield> </datafield>
<datafield tag="952" ind1=" " ind2="1"> <datafield ind2="1" ind1=" " tag="952">
<subfield code="s">Schuljahr 5-12</subfield> <subfield code="s">Schuljahr 5-12</subfield>
</datafield> </datafield>
<datafield tag="088" ind1=" " ind2=" "> <datafield ind2=" " ind1=" " tag="088">
<subfield code="a">Bi 10</subfield> <subfield code="a">Bi 10</subfield>
<subfield code="b">00078080</subfield> <subfield code="b">00078080</subfield>
<subfield code="c">IGX Asel</subfield> <subfield code="c">IGX Asel</subfield>
<subfield code="e">ILL Ausleihe</subfield> <subfield code="e">ILL Ausleihe</subfield>
</datafield> </datafield>
<datafield tag="088" ind1=" " ind2=" "> <datafield ind2=" " ind1=" " tag="088">
<subfield code="a">290</subfield> <subfield code="a">290</subfield>
<subfield code="b">00000001</subfield> <subfield code="b">00000001</subfield>
<subfield code="c">Bg 14187</subfield> <subfield code="c">Bg 14187</subfield>
<subfield code="e">ILL Ausleihe</subfield> <subfield code="e">ILL Ausleihe</subfield>
</datafield> </datafield>
<datafield tag="088" ind1=" " ind2=" "> <datafield ind2=" " ind1=" " tag="088">
<subfield code="a">290</subfield> <subfield code="a">290</subfield>
<subfield code="b">00012012</subfield> <subfield code="b">00012012</subfield>
<subfield code="c">PCA 430/67</subfield> <subfield code="c">PCA 430/67</subfield>
<subfield code="e">keine ILL</subfield> <subfield code="e">keine ILL</subfield>
</datafield> </datafield>
<datafield tag="088" ind1=" " ind2=" "> <datafield ind2=" " ind1=" " tag="088">
<subfield code="a">294</subfield> <subfield code="a">294</subfield>
<subfield code="b">00000014</subfield> <subfield code="b">00000014</subfield>
<subfield code="c">MVA7096</subfield> <subfield code="c">MVA7096</subfield>
<subfield code="e">ILL Ausleihe</subfield> <subfield code="e">ILL Ausleihe</subfield>
</datafield> </datafield>
<datafield tag="088" ind1=" " ind2=" "> <datafield ind2=" " ind1=" " tag="088">
<subfield code="a">51</subfield> <subfield code="a">51</subfield>
<subfield code="b">00000000</subfield> <subfield code="b">00000000</subfield>
<subfield code="c">IGX 112</subfield> <subfield code="c">IGX 112</subfield>
<subfield code="e">ILL Ausleihe</subfield> <subfield code="e">ILL Ausleihe</subfield>
</datafield> </datafield>
<datafield tag="088" ind1=" " ind2=" "> <datafield ind2=" " ind1=" " tag="088">
<subfield code="a">6</subfield> <subfield code="a">6</subfield>
<subfield code="b">00000040</subfield> <subfield code="b">00000040</subfield>
<subfield code="c">3D 90391</subfield> <subfield code="c">3D 90391</subfield>
<subfield code="e">ILL Ausleihe</subfield> <subfield code="e">ILL Ausleihe</subfield>
</datafield> </datafield>
<datafield tag="088" ind1=" " ind2=" "> <datafield ind2=" " ind1=" " tag="088">
<subfield code="a">6/123</subfield> <subfield code="a">6/123</subfield>
<subfield code="b">00004040</subfield> <subfield code="b">00004040</subfield>
<subfield code="c">ERZ XG2 9A</subfield> <subfield code="c">ERZ XG2 9A</subfield>
<subfield code="e">ILL Ausleihe</subfield> <subfield code="e">ILL Ausleihe</subfield>
</datafield> </datafield>
<datafield tag="088" ind1=" " ind2=" "> <datafield ind2=" " ind1=" " tag="088">
<subfield code="a">929</subfield> <subfield code="a">929</subfield>
<subfield code="b">00000000</subfield> <subfield code="b">00000000</subfield>
<subfield code="c">94/3507</subfield> <subfield code="c">94/3507</subfield>
<subfield code="e">ILL Ausleihe</subfield> <subfield code="e">ILL Ausleihe</subfield>
</datafield> </datafield>
<datafield tag="088" ind1=" " ind2=" "> <datafield ind2=" " ind1=" " tag="088">
<subfield code="a">708</subfield> <subfield code="a">708</subfield>
<subfield code="b">00</subfield> <subfield code="b">00</subfield>
<subfield code="c">IGX/ASE</subfield> <subfield code="c">IGX/ASE</subfield>
<subfield code="e">Normalausleihe</subfield> <subfield code="e">Normalausleihe</subfield>
</datafield> </datafield>
<datafield tag="088" ind1=" " ind2=" "> <datafield ind2=" " ind1=" " tag="088">
<subfield code="a">467</subfield> <subfield code="a">467</subfield>
<subfield code="b">63</subfield> <subfield code="b">63</subfield>
<subfield code="c">63TML2274</subfield> <subfield code="c">63TML2274</subfield>
<subfield code="e">Ausleihbar</subfield> <subfield code="e">Ausleihbar</subfield>
</datafield> </datafield>
<datafield tag="088" ind1=" " ind2=" "> <datafield ind2=" " ind1=" " tag="088">
<subfield code="a">467</subfield> <subfield code="a">467</subfield>
<subfield code="b">63</subfield> <subfield code="b">63</subfield>
<subfield code="c">63TML2274+1</subfield> <subfield code="c">63TML2274+1</subfield>
<subfield code="e">Ausleihbar</subfield> <subfield code="e">Ausleihbar</subfield>
</datafield> </datafield>
<datafield tag="088" ind1=" " ind2=" "> <datafield ind2=" " ind1=" " tag="088">
<subfield code="a">Kob 7</subfield> <subfield code="a">Kob 7</subfield>
<subfield code="b">FRHKO</subfield> <subfield code="b">FRHKO</subfield>
<subfield code="c">93/3202</subfield> <subfield code="c">93/3202</subfield>
<subfield code="e">ausleihbar 4 Wo</subfield> <subfield code="e">ausleihbar 4 Wo</subfield>
</datafield> </datafield>
<datafield tag="088" ind1=" " ind2=" "> <datafield ind2=" " ind1=" " tag="088">
<subfield code="a">Lan 1</subfield> <subfield code="a">Lan 1</subfield>
<subfield code="b">FRHLD</subfield> <subfield code="b">FRHLD</subfield>
<subfield code="c">gru 92-58</subfield> <subfield code="c">gru 92-58</subfield>
<subfield code="e">ausleihbar 4 Wo</subfield> <subfield code="e">ausleihbar 4 Wo</subfield>
</datafield> </datafield>
<datafield tag="088" ind1=" " ind2=" "> <datafield ind2=" " ind1=" " tag="088">
<subfield code="a">465</subfield> <subfield code="a">465</subfield>
<subfield code="b">E11</subfield> <subfield code="b">E11</subfield>
<subfield code="c">IGX2455</subfield> <subfield code="c">IGX2455</subfield>
<subfield code="e">Ausleihbestand</subfield> <subfield code="e">Ausleihbestand</subfield>
</datafield> </datafield>
<datafield tag="088" ind1=" " ind2=" "> <datafield ind2=" " ind1=" " tag="088">
<subfield code="a">464</subfield> <subfield code="a">464</subfield>
<subfield code="b">D01</subfield> <subfield code="b">D01</subfield>
<subfield code="c">IGX2112_d</subfield> <subfield code="c">IGX2112_d</subfield>
<subfield code="e">Ausleihbestand</subfield> <subfield code="e">Ausleihbestand</subfield>
</datafield> </datafield>
<datafield tag="088" ind1=" " ind2=" "> <datafield ind2=" " ind1=" " tag="088">
<subfield code="a">1116</subfield> <subfield code="a">1116</subfield>
<subfield code="b">X0001</subfield> <subfield code="b">X0001</subfield>
<subfield code="c">Ndk ASE</subfield> <subfield code="c">Ndk ASE</subfield>

File diff suppressed because one or more lines are too long

View file

@ -6,60 +6,60 @@
<controlfield tag="002">20171208</controlfield> <controlfield tag="002">20171208</controlfield>
<controlfield tag="004">20171208</controlfield> <controlfield tag="004">20171208</controlfield>
<datafield ind2=" " ind1=" " tag="020"> <datafield ind2=" " ind1=" " tag="020">
<subfield code="a">(FR-PaOEC)6bee255b-ar<61>OECD</subfield> <subfield code=" ">(FR-PaOEC)6bee255b-ar<61>OECD</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="025"> <datafield ind2=" " ind1=" " tag="025">
<subfield code="a">6bee255b-ar</subfield> <subfield code=" ">6bee255b-ar</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="030"> <datafield ind2=" " ind1=" " tag="030">
<subfield code="a">a|zuc||||||37</subfield> <subfield code=" ">a|zuc||||||37</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1="b" tag="037"> <datafield ind2=" " ind1="b" tag="037">
<subfield code="a">ara</subfield> <subfield code=" ">ara</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="050"> <datafield ind2=" " ind1=" " tag="050">
<subfield code="a">||||||||g|||||</subfield> <subfield code=" ">||||||||g|||||</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="051"> <datafield ind2=" " ind1=" " tag="051">
<subfield code="a">m|||||||</subfield> <subfield code=" ">m|||||||</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="070"> <datafield ind2=" " ind1=" " tag="070">
<subfield code="a">OECD</subfield> <subfield code=" ">OECD</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1="a" tag="070"> <datafield ind2=" " ind1="a" tag="070">
<subfield code="a">HBZ</subfield> <subfield code=" ">HBZ</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1="e" tag="078"> <datafield ind2=" " ind1="e" tag="078">
<subfield code="a">ZDB-164-UNL</subfield> <subfield code="a">ZDB-164-UNL</subfield>
<subfield code="a">ZDB-164-UNL-ebook</subfield> <subfield code="a">ZDB-164-UNL-ebook</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1="b" tag="200"> <datafield ind2=" " ind1="b" tag="200">
<subfield code="a">OHCHR</subfield> <subfield code=" ">OHCHR</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="331"></datafield> <datafield ind2=" " ind1=" " tag="331"></datafield>
<datafield ind2=" " ind1=" " tag="334"> <datafield ind2=" " ind1=" " tag="334">
<subfield code="a">Elektronische Ressource</subfield> <subfield code=" ">Elektronische Ressource</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="359"> <datafield ind2=" " ind1=" " tag="359">
<subfield code="a">OHCHR</subfield> <subfield code=" ">OHCHR</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="410"> <datafield ind2=" " ind1=" " tag="410">
<subfield code="a">New York</subfield> <subfield code=" ">New York</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="412"> <datafield ind2=" " ind1=" " tag="412">
<subfield code="a">United Nations</subfield> <subfield code=" ">United Nations</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1="a" tag="425"> <datafield ind2=" " ind1="a" tag="425">
<subfield code="a">2017</subfield> <subfield code=" ">2017</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="433"> <datafield ind2=" " ind1=" " tag="433">
<subfield code="a">75 p.</subfield> <subfield code=" ">75 p.</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1="a" tag="540"> <datafield ind2=" " ind1="a" tag="540">
<subfield code="a">ISBN 9789210579391</subfield> <subfield code=" ">ISBN 9789210579391</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1="a" tag="552"> <datafield ind2=" " ind1="a" tag="552">
<subfield code="a">10.18356/6bee255b-ar</subfield> <subfield code=" ">10.18356/6bee255b-ar</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1="a" tag="652"> <datafield ind2=" " ind1="a" tag="652">
<subfield code="a">Online-Ressource</subfield> <subfield code="a">Online-Ressource</subfield>
@ -80,68 +80,68 @@
<controlfield tag="002">20171208</controlfield> <controlfield tag="002">20171208</controlfield>
<controlfield tag="004">20171208</controlfield> <controlfield tag="004">20171208</controlfield>
<datafield ind2=" " ind1=" " tag="020"> <datafield ind2=" " ind1=" " tag="020">
<subfield code="a">(FR-PaOEC)6f8029f6-es<65>OECD</subfield> <subfield code=" ">(FR-PaOEC)6f8029f6-es<65>OECD</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="025"> <datafield ind2=" " ind1=" " tag="025">
<subfield code="a">6f8029f6-es</subfield> <subfield code=" ">6f8029f6-es</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="030"> <datafield ind2=" " ind1=" " tag="030">
<subfield code="a">a|zuc||||||37</subfield> <subfield code=" ">a|zuc||||||37</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1="b" tag="037"> <datafield ind2=" " ind1="b" tag="037">
<subfield code="a">spa</subfield> <subfield code=" ">spa</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="050"> <datafield ind2=" " ind1=" " tag="050">
<subfield code="a">||||||||g|||||</subfield> <subfield code=" ">||||||||g|||||</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="051"> <datafield ind2=" " ind1=" " tag="051">
<subfield code="a">s|||||||</subfield> <subfield code=" ">s|||||||</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="070"> <datafield ind2=" " ind1=" " tag="070">
<subfield code="a">OECD</subfield> <subfield code=" ">OECD</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1="a" tag="070"> <datafield ind2=" " ind1="a" tag="070">
<subfield code="a">HBZ</subfield> <subfield code=" ">HBZ</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1="e" tag="078"> <datafield ind2=" " ind1="e" tag="078">
<subfield code="a">ZDB-164-UNL</subfield> <subfield code="a">ZDB-164-UNL</subfield>
<subfield code="a">ZDB-164-UNL-ebook</subfield> <subfield code="a">ZDB-164-UNL-ebook</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1="b" tag="200"> <datafield ind2=" " ind1="b" tag="200">
<subfield code="a">ECLAC</subfield> <subfield code=" ">ECLAC</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="331"> <datafield ind2=" " ind1=" " tag="331">
<subfield code="a">Pol<EFBFBD>itica Industrial Rural y Fortalecimiento de Cadenas de Valor</subfield> <subfield code=" ">Pol<EFBFBD>itica Industrial Rural y Fortalecimiento de Cadenas de Valor</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="334"> <datafield ind2=" " ind1=" " tag="334">
<subfield code="a">Elektronische Ressource</subfield> <subfield code=" ">Elektronische Ressource</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="359"> <datafield ind2=" " ind1=" " tag="359">
<subfield code="a">ECLAC</subfield> <subfield code=" ">ECLAC</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="410"> <datafield ind2=" " ind1=" " tag="410">
<subfield code="a">New York</subfield> <subfield code=" ">New York</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="412"> <datafield ind2=" " ind1=" " tag="412">
<subfield code="a">United Nations</subfield> <subfield code=" ">United Nations</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1="a" tag="425"> <datafield ind2=" " ind1="a" tag="425">
<subfield code="a">2017</subfield> <subfield code=" ">2017</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="433"> <datafield ind2=" " ind1=" " tag="433">
<subfield code="a">240 p.</subfield> <subfield code=" ">240 p.</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="451"> <datafield ind2=" " ind1=" " tag="451">
<subfield code="a">ECLAC Books ; no.145</subfield> <subfield code=" ">ECLAC Books ; no.145</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1="a" tag="452"> <datafield ind2=" " ind1="a" tag="452">
<subfield code="a">2411-9385</subfield> <subfield code=" ">2411-9385</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1="a" tag="540"> <datafield ind2=" " ind1="a" tag="540">
<subfield code="a">ISBN 9789210585897</subfield> <subfield code=" ">ISBN 9789210585897</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1="a" tag="552"> <datafield ind2=" " ind1="a" tag="552">
<subfield code="a">10.18356/6f8029f6-es</subfield> <subfield code=" ">10.18356/6f8029f6-es</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1="a" tag="652"> <datafield ind2=" " ind1="a" tag="652">
<subfield code="a">Online-Ressource</subfield> <subfield code="a">Online-Ressource</subfield>
@ -157,62 +157,62 @@
<controlfield tag="002">20171208</controlfield> <controlfield tag="002">20171208</controlfield>
<controlfield tag="004">20171208</controlfield> <controlfield tag="004">20171208</controlfield>
<datafield ind2=" " ind1=" " tag="020"> <datafield ind2=" " ind1=" " tag="020">
<subfield code="a">(FR-PaOEC)c78e1213-ar<61>OECD</subfield> <subfield code=" ">(FR-PaOEC)c78e1213-ar<61>OECD</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="025"> <datafield ind2=" " ind1=" " tag="025">
<subfield code="a">c78e1213-ar</subfield> <subfield code=" ">c78e1213-ar</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="030"> <datafield ind2=" " ind1=" " tag="030">
<subfield code="a">a|zuc||||||37</subfield> <subfield code=" ">a|zuc||||||37</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1="b" tag="037"> <datafield ind2=" " ind1="b" tag="037">
<subfield code="a">ara</subfield> <subfield code=" ">ara</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="050"> <datafield ind2=" " ind1=" " tag="050">
<subfield code="a">||||||||g|||||</subfield> <subfield code=" ">||||||||g|||||</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="051"> <datafield ind2=" " ind1=" " tag="051">
<subfield code="a">m|||||||</subfield> <subfield code=" ">m|||||||</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="070"> <datafield ind2=" " ind1=" " tag="070">
<subfield code="a">OECD</subfield> <subfield code=" ">OECD</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1="a" tag="070"> <datafield ind2=" " ind1="a" tag="070">
<subfield code="a">HBZ</subfield> <subfield code=" ">HBZ</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1="e" tag="078"> <datafield ind2=" " ind1="e" tag="078">
<subfield code="a">ZDB-164-UNL</subfield> <subfield code="a">ZDB-164-UNL</subfield>
<subfield code="a">ZDB-164-UNL-ebook</subfield> <subfield code="a">ZDB-164-UNL-ebook</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1="b" tag="200"> <datafield ind2=" " ind1="b" tag="200">
<subfield code="a">DESA</subfield> <subfield code=" ">DESA</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="331"> <datafield ind2=" " ind1=" " tag="331">
<subfield code="a">2017</subfield> <subfield code=" ">2017</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="334"> <datafield ind2=" " ind1=" " tag="334">
<subfield code="a">Elektronische Ressource</subfield> <subfield code=" ">Elektronische Ressource</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="359"> <datafield ind2=" " ind1=" " tag="359">
<subfield code="a">DESA</subfield> <subfield code=" ">DESA</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="410"> <datafield ind2=" " ind1=" " tag="410">
<subfield code="a">New York</subfield> <subfield code=" ">New York</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="412"> <datafield ind2=" " ind1=" " tag="412">
<subfield code="a">United Nations</subfield> <subfield code=" ">United Nations</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1="a" tag="425"> <datafield ind2=" " ind1="a" tag="425">
<subfield code="a">2017</subfield> <subfield code=" ">2017</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="433"> <datafield ind2=" " ind1=" " tag="433">
<subfield code="a">62 p.</subfield> <subfield code=" ">62 p.</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1="a" tag="540"> <datafield ind2=" " ind1="a" tag="540">
<subfield code="a">ISBN 9789213617182</subfield> <subfield code=" ">ISBN 9789213617182</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1="a" tag="552"> <datafield ind2=" " ind1="a" tag="552">
<subfield code="a">10.18356/c78e1213-ar</subfield> <subfield code=" ">10.18356/c78e1213-ar</subfield>
</datafield> </datafield>
<datafield ind2=" " ind1="a" tag="652"> <datafield ind2=" " ind1="a" tag="652">
<subfield code="a">Online-Ressource</subfield> <subfield code="a">Online-Ressource</subfield>

View file

@ -25,7 +25,7 @@
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="250"> <datafield ind2=" " ind1=" " tag="250">
<subfield code="a">1st ed.</subfield> <subfield code="a">1st ed.</subfield>
<subfield code="a"> </subfield> <subfield code=" "> </subfield>
</datafield> </datafield>
<datafield ind2=" " ind1=" " tag="260"> <datafield ind2=" " ind1=" " tag="260">
<subfield code="a">New York :</subfield> <subfield code="a">New York :</subfield>