fix for converting MAB XML to JSON, add optional trim

This commit is contained in:
Jörg Prante 2018-01-06 00:29:39 +01:00
parent 7fe42850dc
commit bacf451818
11 changed files with 1373 additions and 880 deletions

View file

@ -1,6 +1,6 @@
group = org.xbib
name = marc
version = 1.0.18
version = 1.0.19
xbib-content.version = 1.0.7
xbib-bibliographic-character-sets.version = 1.0.0

View file

@ -184,20 +184,25 @@ public class MarcRecord extends LinkedHashMap<String, Object> {
indicators.put(indicator, new LinkedHashMap<>());
}
Map<String, Object> subfields = (Map<String, Object>) indicators.get(indicator);
for (MarcField.Subfield subfield : marcField.getSubfields()) {
String code = subfield.getId();
code = code.replace(' ', '_');
Object subfieldValue = subfields.get(code);
if (subfieldValue instanceof List) {
List<String> list = (List<String>) subfieldValue;
list.add(subfield.getValue());
} else if (subfieldValue instanceof String) {
List<String> list = new LinkedList<>();
list.add((String) subfieldValue);
list.add(subfield.getValue());
subfields.put(code, list);
} else {
subfields.put(code, subfield.getValue());
// we may have values instead of subfields, even on non-control fields. See MAB
if (marcField.getValue() != null && !marcField.getValue().isEmpty()) {
repeatMap.put(Integer.toString(repeat), marcField.getValue());
} else {
for (MarcField.Subfield subfield : marcField.getSubfields()) {
String code = subfield.getId();
code = code.replace(' ', '_');
Object subfieldValue = subfields.get(code);
if (subfieldValue instanceof List) {
List<String> list = (List<String>) subfieldValue;
list.add(subfield.getValue());
} else if (subfieldValue instanceof String) {
List<String> list = new LinkedList<>();
list.add((String) subfieldValue);
list.add(subfield.getValue());
subfields.put(code, list);
} else {
subfields.put(code, subfield.getValue());
}
}
}
} else {

View file

@ -34,6 +34,10 @@ public class MabXMLContentHandler extends MarcContentHandler implements MabXMLCo
private Set<String> validNamespaces = new HashSet<>(Collections.singletonList(MABXML_NAMESPACE));
public MabXMLContentHandler() {
setTrim(true);
}
@Override
protected String getDefaultFormat() {
return "MabXML";
@ -122,7 +126,8 @@ public class MabXMLContentHandler extends MarcContentHandler implements MabXMLCo
break;
}
case FELD: {
MarcField marcField = stack.pop().value(content.toString()).build();
String s = content.toString();
MarcField marcField = stack.pop().value(trim ? s.trim() : s).build();
if (marcValueTransformers != null) {
marcField = marcValueTransformers.transformValue(marcField);
}
@ -130,7 +135,8 @@ public class MabXMLContentHandler extends MarcContentHandler implements MabXMLCo
break;
}
case UF: {
stack.peek().subfieldValue(content.toString());
String s = content.toString();
stack.peek().subfieldValue(trim ? s.trim() : s);
break;
}
default:

View file

@ -73,6 +73,8 @@ public class MarcContentHandler
protected MarcValueTransformers marcValueTransformers;
protected boolean trim = false;
private MarcFieldTransformers marcFieldTransformers;
private boolean isCollection = false;
@ -136,6 +138,11 @@ public class MarcContentHandler
return this;
}
public MarcContentHandler setTrim(boolean trim) {
this.trim = trim;
return this;
}
@Override
public void beginCollection() {
// early setup of MARC listener, even before beginRecord(format, type), it works only
@ -357,7 +364,8 @@ public class MarcContentHandler
break;
}
case SUBFIELD: {
stack.peek().subfieldValue(content.toString());
String s = content.toString();
stack.peek().subfieldValue(trim ? s.trim() : s);
break;
}
default: {

View file

@ -65,6 +65,7 @@ public class MarcRoundTripTest {
.writeCollection();
}
// compare both to expected file structure
assertThat(file, CompareMatcher.isIdenticalTo(getClass().getResource(s + ".xml").openStream()));
assertThat(file2, CompareMatcher.isIdenticalTo(getClass().getResource(s + ".xml").openStream()));
}

View file

@ -0,0 +1,77 @@
package org.xbib.marc.dialects.mab;
import static org.junit.Assert.assertThat;
import static org.xbib.helper.StreamMatcher.assertStream;
import org.junit.Test;
import org.xbib.marc.Marc;
import org.xbib.marc.dialects.mab.xml.MabXMLContentHandler;
import org.xbib.marc.json.MarcJsonWriter;
import org.xbib.marc.xml.MarcContentHandler;
import org.xbib.marc.xml.MarcXchangeWriter;
import org.xml.sax.InputSource;
import org.xmlunit.matchers.CompareMatcher;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
/**
*
*/
public class MabXmlTest {
@Test
public void testMabXml2MarcXchangeExample() throws Exception {
String s = "mabxml-example.xml";
File file = File.createTempFile(s + ".", ".xml");
file.deleteOnExit();
FileOutputStream out = new FileOutputStream(file);
try (InputStream in = getClass().getResourceAsStream(s);
MarcXchangeWriter writer = new MarcXchangeWriter(out, true)
.setFormat("MARC21")
.setType("Bibliographic")) {
writer.startDocument();
writer.beginCollection();
Marc.builder()
.setInputStream(in)
.setCharset(StandardCharsets.UTF_8)
.setContentHandler(new MabXMLContentHandler()
.addNamespace("http://www.ddb.de/professionell/mabxml/mabxml-1.xsd")
.setFormat("MabXML")
.setType("h")
.setMarcListener(writer))
.build().xmlReader().parse(new InputSource(in));
writer.endCollection();
writer.endDocument();
}
assertThat(file, CompareMatcher.isIdenticalTo(getClass().getResource(s + ".xml").openStream()));
}
@Test
public void testMabXml2JsonExample() throws Exception {
String s = "mabxml-example.xml";
ByteArrayOutputStream out = new ByteArrayOutputStream();
try (InputStream in = getClass().getResourceAsStream(s);
MarcJsonWriter writer = new MarcJsonWriter(out,
10, MarcJsonWriter.Style.ELASTICSEARCH_BULK)
.setIndex("testindex", "testtype")) {
MarcContentHandler contentHandler = new MabXMLContentHandler()
.addNamespace("http://www.ddb.de/professionell/mabxml/mabxml-1.xsd")
.setFormat("MabXML")
.setType("h")
.setMarcListener(writer);
Marc marc = Marc.builder()
.setInputStream(in)
.setCharset(StandardCharsets.UTF_8)
.setContentHandler(contentHandler)
.build();
marc.xmlReader().parse(new InputSource(in));
}
assertStream(s, getClass().getResource(s + ".jsonl").openStream(),
new ByteArrayInputStream(out.toByteArray()));
}
}

View file

@ -22,6 +22,7 @@ import org.xbib.marc.Marc;
import org.xbib.marc.MarcXchangeConstants;
import org.xmlunit.matchers.CompareMatcher;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.StringWriter;
import java.nio.charset.StandardCharsets;
@ -42,6 +43,7 @@ public class MarcXMLTest extends Assert {
String s = "zdb-oai-marc.xml";
InputStream in = getClass().getResourceAsStream(s);
StringWriter sw = new StringWriter();
//FileWriter sw = new FileWriter(s + "-marcxchange.xml");
try (MarcXchangeWriter writer = new MarcXchangeWriter(sw, true)
.setFormat("MARC21")
.setType("Bibliographic")) {
@ -54,6 +56,7 @@ public class MarcXMLTest extends Assert {
.setFormat("MarcXML")
.setType("Bibliographic")
.addNamespace("http://www.loc.gov/MARC21/slim")
.setTrim(true)
.setMarcListener(writer))
.build()
.xmlReader().parse();

View file

@ -0,0 +1,137 @@
<?xml version="1.0" encoding="UTF-8"?>
<datei xmlns="http://www.ddb.de/professionell/mabxml/mabxml-1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ddb.de/professionell/mabxml/mabxml-1.xsd http://files.d-nb.de/standards/formate/mabxml-1.xsd">
<datensatz mabVersion="M2.0" status="n" typ="h" xmlns="http://www.ddb.de/professionell/mabxml/mabxml-1.xsd">
<feld ind=" " nr="001">(FR-PaOEC)6bee255b-ar</feld>
<feld ind="a" nr="002">20171208</feld>
<feld ind=" " nr="004">20171208</feld>
<feld ind=" " nr="020">(FR-PaOEC)6bee255b-ar<61>OECD</feld>
<feld ind=" " nr="025">6bee255b-ar</feld>
<feld ind=" " nr="030">a|zuc||||||37</feld>
<feld ind="b" nr="037">ara</feld>
<feld ind=" " nr="050">||||||||g|||||</feld>
<feld ind=" " nr="051">m|||||||</feld>
<feld ind=" " nr="070">OECD</feld>
<feld ind="a" nr="070">HBZ</feld>
<feld ind="e" nr="078">
<uf code="a">ZDB-164-UNL</uf>
<uf code="a">ZDB-164-UNL-ebook</uf>
</feld>
<feld ind="b" nr="200">OHCHR</feld>
<feld ind=" " nr="331"/>
<feld ind=" " nr="334">Elektronische Ressource</feld>
<feld ind=" " nr="359">OHCHR</feld>
<feld ind=" " nr="410">New York</feld>
<feld ind=" " nr="412">United Nations</feld>
<feld ind="a" nr="425">2017</feld>
<feld ind=" " nr="433">75 p.</feld>
<feld ind="a" nr="540">ISBN 9789210579391</feld>
<feld ind="a" nr="552">10.18356/6bee255b-ar</feld>
<feld ind="a" nr="652">
<uf code="a">Online-Ressource</uf>
</feld>
<feld ind="e" nr="655">
<uf code="u">http://dx.doi.org/10.18356/6bee255b-ar</uf>
<uf code="x">Resolving-System</uf>
</feld>
<feld ind=" " nr="775">
<uf code="i">Parallelausgabe</uf>
<uf code="t">Human Rights and Traditional Justice Systems in Africa</uf>
<uf code="z">9789210579377</uf>
</feld>
</datensatz>
<datensatz mabVersion="M2.0" status="n" typ="h" xmlns="http://www.ddb.de/professionell/mabxml/mabxml-1.xsd">
<feld ind=" " nr="001">(FR-PaOEC)6f8029f6-es</feld>
<feld ind="a" nr="002">20171208</feld>
<feld ind=" " nr="004">20171208</feld>
<feld ind=" " nr="020">(FR-PaOEC)6f8029f6-es<65>OECD</feld>
<feld ind=" " nr="025">6f8029f6-es</feld>
<feld ind=" " nr="030">a|zuc||||||37</feld>
<feld ind="b" nr="037">spa</feld>
<feld ind=" " nr="050">||||||||g|||||</feld>
<feld ind=" " nr="051">s|||||||</feld>
<feld ind=" " nr="070">OECD</feld>
<feld ind="a" nr="070">HBZ</feld>
<feld ind="e" nr="078">
<uf code="a">ZDB-164-UNL</uf>
<uf code="a">ZDB-164-UNL-ebook</uf>
</feld>
<feld ind="b" nr="200">ECLAC</feld>
<feld ind=" " nr="331">Pol<EFBFBD>itica Industrial Rural y Fortalecimiento de Cadenas de Valor</feld>
<feld ind=" " nr="334">Elektronische Ressource</feld>
<feld ind=" " nr="359">ECLAC</feld>
<feld ind=" " nr="410">New York</feld>
<feld ind=" " nr="412">United Nations</feld>
<feld ind="a" nr="425">2017</feld>
<feld ind=" " nr="433">240 p.</feld>
<feld ind=" " nr="451">ECLAC Books ; no.145</feld>
<feld ind="a" nr="452">2411-9385</feld>
<feld ind="a" nr="540">ISBN 9789210585897</feld>
<feld ind="a" nr="552">10.18356/6f8029f6-es</feld>
<feld ind="a" nr="652">
<uf code="a">Online-Ressource</uf>
</feld>
<feld ind="e" nr="655">
<uf code="u">http://dx.doi.org/10.18356/6f8029f6-es</uf>
<uf code="x">Resolving-System</uf>
</feld>
</datensatz>
<datensatz mabVersion="M2.0" status="n" typ="h" xmlns="http://www.ddb.de/professionell/mabxml/mabxml-1.xsd">
<feld ind=" " nr="001">(FR-PaOEC)c78e1213-ar</feld>
<feld ind="a" nr="002">20171208</feld>
<feld ind=" " nr="004">20171208</feld>
<feld ind=" " nr="020">(FR-PaOEC)c78e1213-ar<61>OECD</feld>
<feld ind=" " nr="025">c78e1213-ar</feld>
<feld ind=" " nr="030">a|zuc||||||37</feld>
<feld ind="b" nr="037">ara</feld>
<feld ind=" " nr="050">||||||||g|||||</feld>
<feld ind=" " nr="051">m|||||||</feld>
<feld ind=" " nr="070">OECD</feld>
<feld ind="a" nr="070">HBZ</feld>
<feld ind="e" nr="078">
<uf code="a">ZDB-164-UNL</uf>
<uf code="a">ZDB-164-UNL-ebook</uf>
</feld>
<feld ind="b" nr="200">DESA</feld>
<feld ind=" " nr="331">2017</feld>
<feld ind=" " nr="334">Elektronische Ressource</feld>
<feld ind=" " nr="359">DESA</feld>
<feld ind=" " nr="410">New York</feld>
<feld ind=" " nr="412">United Nations</feld>
<feld ind="a" nr="425">2017</feld>
<feld ind=" " nr="433">62 p.</feld>
<feld ind="a" nr="540">ISBN 9789213617182</feld>
<feld ind="a" nr="552">10.18356/c78e1213-ar</feld>
<feld ind="a" nr="652">
<uf code="a">Online-Ressource</uf>
</feld>
<feld ind="e" nr="655">
<uf code="u">http://dx.doi.org/10.18356/c78e1213-ar</uf>
<uf code="x">Resolving-System</uf>
</feld>
<feld ind=" " nr="775">
<uf code="i">Parallelausgabe</uf>
<uf code="t">, 2017 </uf>
<uf code="z">9789213617205</uf>
</feld>
<feld ind=" " nr="775">
<uf code="i">Parallelausgabe</uf>
<uf code="t">2017 </uf>
<uf code="z">9789213617199</uf>
</feld>
<feld ind=" " nr="775">
<uf code="i">Parallelausgabe</uf>
<uf code="t">The Sustainable Development Goals Report 2017</uf>
<uf code="z">9789213617151</uf>
</feld>
<feld ind=" " nr="775">
<uf code="i">Parallelausgabe</uf>
<uf code="t">Informe de los Objetivos de Desarrollo Sostenible 2017</uf>
<uf code="z">9789213617175</uf>
</feld>
<feld ind=" " nr="775">
<uf code="i">Parallelausgabe</uf>
<uf code="t">Rapport sur les Objectifs de D<>eveloppement Durable 2017</uf>
<uf code="z">9789213617168</uf>
</feld>
</datensatz>
</datei>

View file

@ -0,0 +1,6 @@
{"index":{"_index":"testindex","_type":"testtype","_id":"(FR-PaOEC)6bee255b-ar"}}
{"_FORMAT":"MabXML","_TYPE":"h","_LEADER":"00000 1000000 000 ","001":["(FR-PaOEC)6bee255b-ar"],"002":["20171208"],"004":["20171208"],"020":["(FR-PaOEC)6bee255b-ar<61>OECD"],"025":["6bee255b-ar"],"030":["a|zuc||||||37"],"037":["ara"],"050":["||||||||g|||||"],"051":["m|||||||"],"070":["OECD","HBZ"],"078":[{"e":[{"a":["ZDB-164-UNL","ZDB-164-UNL-ebook"]}]}],"200":["OHCHR"],"331":[{"_":[]}],"334":["Elektronische Ressource"],"359":["OHCHR"],"410":["New York"],"412":["United Nations"],"425":["2017"],"433":["75 p."],"540":["ISBN 9789210579391"],"552":["10.18356/6bee255b-ar"],"652":[{"a":[{"a":"Online-Ressource"}]}],"655":[{"e":[{"u":"http://dx.doi.org/10.18356/6bee255b-ar"},{"x":"Resolving-System"}]}],"775":[{"_":[{"i":"Parallelausgabe"},{"t":"Human Rights and Traditional Justice Systems in Africa"},{"z":"9789210579377"}]}]}
{"index":{"_index":"testindex","_type":"testtype","_id":"(FR-PaOEC)6f8029f6-es"}}
{"_FORMAT":"MabXML","_TYPE":"h","_LEADER":"00000 1000000 000 ","001":["(FR-PaOEC)6f8029f6-es"],"002":["20171208"],"004":["20171208"],"020":["(FR-PaOEC)6f8029f6-es<65>OECD"],"025":["6f8029f6-es"],"030":["a|zuc||||||37"],"037":["spa"],"050":["||||||||g|||||"],"051":["s|||||||"],"070":["OECD","HBZ"],"078":[{"e":[{"a":["ZDB-164-UNL","ZDB-164-UNL-ebook"]}]}],"200":["ECLAC"],"331":["Pol<6F>itica Industrial Rural y Fortalecimiento de Cadenas de Valor"],"334":["Elektronische Ressource"],"359":["ECLAC"],"410":["New York"],"412":["United Nations"],"425":["2017"],"433":["240 p."],"451":["ECLAC Books ; no.145"],"452":["2411-9385"],"540":["ISBN 9789210585897"],"552":["10.18356/6f8029f6-es"],"652":[{"a":[{"a":"Online-Ressource"}]}],"655":[{"e":[{"u":"http://dx.doi.org/10.18356/6f8029f6-es"},{"x":"Resolving-System"}]}]}
{"index":{"_index":"testindex","_type":"testtype","_id":"(FR-PaOEC)c78e1213-ar"}}
{"_FORMAT":"MabXML","_TYPE":"h","_LEADER":"00000 1000000 000 ","001":["(FR-PaOEC)c78e1213-ar"],"002":["20171208"],"004":["20171208"],"020":["(FR-PaOEC)c78e1213-ar<61>OECD"],"025":["c78e1213-ar"],"030":["a|zuc||||||37"],"037":["ara"],"050":["||||||||g|||||"],"051":["m|||||||"],"070":["OECD","HBZ"],"078":[{"e":[{"a":["ZDB-164-UNL","ZDB-164-UNL-ebook"]}]}],"200":["DESA"],"331":["2017"],"334":["Elektronische Ressource"],"359":["DESA"],"410":["New York"],"412":["United Nations"],"425":["2017"],"433":["62 p."],"540":["ISBN 9789213617182"],"552":["10.18356/c78e1213-ar"],"652":[{"a":[{"a":"Online-Ressource"}]}],"655":[{"e":[{"u":"http://dx.doi.org/10.18356/c78e1213-ar"},{"x":"Resolving-System"}]}],"775":[{"_":[{"i":"Parallelausgabe"},{"t":", 2017"},{"z":"9789213617205"}]},{"_":[{"i":"Parallelausgabe"},{"t":"2017"},{"z":"9789213617199"}]},{"_":[{"i":"Parallelausgabe"},{"t":"The Sustainable Development Goals Report 2017"},{"z":"9789213617151"}]},{"_":[{"i":"Parallelausgabe"},{"t":"Informe de los Objetivos de Desarrollo Sostenible 2017"},{"z":"9789213617175"}]},{"_":[{"i":"Parallelausgabe"},{"t":"Rapport sur les Objectifs de D<>eveloppement Durable 2017"},{"z":"9789213617168"}]}]}

View file

@ -0,0 +1,250 @@
<?xml version="1.0" encoding="UTF-8"?>
<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 1000000 000 </leader>
<controlfield tag="001">(FR-PaOEC)6bee255b-ar</controlfield>
<controlfield tag="002">20171208</controlfield>
<controlfield tag="004">20171208</controlfield>
<datafield ind2=" " ind1=" " tag="020">
<subfield code="a">(FR-PaOEC)6bee255b-ar<61>OECD</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="025">
<subfield code="a">6bee255b-ar</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="030">
<subfield code="a">a|zuc||||||37</subfield>
</datafield>
<datafield ind2=" " ind1="b" tag="037">
<subfield code="a">ara</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="050">
<subfield code="a">||||||||g|||||</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="051">
<subfield code="a">m|||||||</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="070">
<subfield code="a">OECD</subfield>
</datafield>
<datafield ind2=" " ind1="a" tag="070">
<subfield code="a">HBZ</subfield>
</datafield>
<datafield ind2=" " ind1="e" tag="078">
<subfield code="a">ZDB-164-UNL</subfield>
<subfield code="a">ZDB-164-UNL-ebook</subfield>
</datafield>
<datafield ind2=" " ind1="b" tag="200">
<subfield code="a">OHCHR</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="331"></datafield>
<datafield ind2=" " ind1=" " tag="334">
<subfield code="a">Elektronische Ressource</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="359">
<subfield code="a">OHCHR</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="410">
<subfield code="a">New York</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="412">
<subfield code="a">United Nations</subfield>
</datafield>
<datafield ind2=" " ind1="a" tag="425">
<subfield code="a">2017</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="433">
<subfield code="a">75 p.</subfield>
</datafield>
<datafield ind2=" " ind1="a" tag="540">
<subfield code="a">ISBN 9789210579391</subfield>
</datafield>
<datafield ind2=" " ind1="a" tag="552">
<subfield code="a">10.18356/6bee255b-ar</subfield>
</datafield>
<datafield ind2=" " ind1="a" tag="652">
<subfield code="a">Online-Ressource</subfield>
</datafield>
<datafield ind2=" " ind1="e" tag="655">
<subfield code="u">http://dx.doi.org/10.18356/6bee255b-ar</subfield>
<subfield code="x">Resolving-System</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="775">
<subfield code="i">Parallelausgabe</subfield>
<subfield code="t">Human Rights and Traditional Justice Systems in Africa</subfield>
<subfield code="z">9789210579377</subfield>
</datafield>
</record>
<record format="MARC21" type="Bibliographic">
<leader>00000 1000000 000 </leader>
<controlfield tag="001">(FR-PaOEC)6f8029f6-es</controlfield>
<controlfield tag="002">20171208</controlfield>
<controlfield tag="004">20171208</controlfield>
<datafield ind2=" " ind1=" " tag="020">
<subfield code="a">(FR-PaOEC)6f8029f6-es<65>OECD</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="025">
<subfield code="a">6f8029f6-es</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="030">
<subfield code="a">a|zuc||||||37</subfield>
</datafield>
<datafield ind2=" " ind1="b" tag="037">
<subfield code="a">spa</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="050">
<subfield code="a">||||||||g|||||</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="051">
<subfield code="a">s|||||||</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="070">
<subfield code="a">OECD</subfield>
</datafield>
<datafield ind2=" " ind1="a" tag="070">
<subfield code="a">HBZ</subfield>
</datafield>
<datafield ind2=" " ind1="e" tag="078">
<subfield code="a">ZDB-164-UNL</subfield>
<subfield code="a">ZDB-164-UNL-ebook</subfield>
</datafield>
<datafield ind2=" " ind1="b" tag="200">
<subfield code="a">ECLAC</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="331">
<subfield code="a">Pol<EFBFBD>itica Industrial Rural y Fortalecimiento de Cadenas de Valor</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="334">
<subfield code="a">Elektronische Ressource</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="359">
<subfield code="a">ECLAC</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="410">
<subfield code="a">New York</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="412">
<subfield code="a">United Nations</subfield>
</datafield>
<datafield ind2=" " ind1="a" tag="425">
<subfield code="a">2017</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="433">
<subfield code="a">240 p.</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="451">
<subfield code="a">ECLAC Books ; no.145</subfield>
</datafield>
<datafield ind2=" " ind1="a" tag="452">
<subfield code="a">2411-9385</subfield>
</datafield>
<datafield ind2=" " ind1="a" tag="540">
<subfield code="a">ISBN 9789210585897</subfield>
</datafield>
<datafield ind2=" " ind1="a" tag="552">
<subfield code="a">10.18356/6f8029f6-es</subfield>
</datafield>
<datafield ind2=" " ind1="a" tag="652">
<subfield code="a">Online-Ressource</subfield>
</datafield>
<datafield ind2=" " ind1="e" tag="655">
<subfield code="u">http://dx.doi.org/10.18356/6f8029f6-es</subfield>
<subfield code="x">Resolving-System</subfield>
</datafield>
</record>
<record format="MARC21" type="Bibliographic">
<leader>00000 1000000 000 </leader>
<controlfield tag="001">(FR-PaOEC)c78e1213-ar</controlfield>
<controlfield tag="002">20171208</controlfield>
<controlfield tag="004">20171208</controlfield>
<datafield ind2=" " ind1=" " tag="020">
<subfield code="a">(FR-PaOEC)c78e1213-ar<61>OECD</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="025">
<subfield code="a">c78e1213-ar</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="030">
<subfield code="a">a|zuc||||||37</subfield>
</datafield>
<datafield ind2=" " ind1="b" tag="037">
<subfield code="a">ara</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="050">
<subfield code="a">||||||||g|||||</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="051">
<subfield code="a">m|||||||</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="070">
<subfield code="a">OECD</subfield>
</datafield>
<datafield ind2=" " ind1="a" tag="070">
<subfield code="a">HBZ</subfield>
</datafield>
<datafield ind2=" " ind1="e" tag="078">
<subfield code="a">ZDB-164-UNL</subfield>
<subfield code="a">ZDB-164-UNL-ebook</subfield>
</datafield>
<datafield ind2=" " ind1="b" tag="200">
<subfield code="a">DESA</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="331">
<subfield code="a">2017</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="334">
<subfield code="a">Elektronische Ressource</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="359">
<subfield code="a">DESA</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="410">
<subfield code="a">New York</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="412">
<subfield code="a">United Nations</subfield>
</datafield>
<datafield ind2=" " ind1="a" tag="425">
<subfield code="a">2017</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="433">
<subfield code="a">62 p.</subfield>
</datafield>
<datafield ind2=" " ind1="a" tag="540">
<subfield code="a">ISBN 9789213617182</subfield>
</datafield>
<datafield ind2=" " ind1="a" tag="552">
<subfield code="a">10.18356/c78e1213-ar</subfield>
</datafield>
<datafield ind2=" " ind1="a" tag="652">
<subfield code="a">Online-Ressource</subfield>
</datafield>
<datafield ind2=" " ind1="e" tag="655">
<subfield code="u">http://dx.doi.org/10.18356/c78e1213-ar</subfield>
<subfield code="x">Resolving-System</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="775">
<subfield code="i">Parallelausgabe</subfield>
<subfield code="t">, 2017</subfield>
<subfield code="z">9789213617205</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="775">
<subfield code="i">Parallelausgabe</subfield>
<subfield code="t">2017</subfield>
<subfield code="z">9789213617199</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="775">
<subfield code="i">Parallelausgabe</subfield>
<subfield code="t">The Sustainable Development Goals Report 2017</subfield>
<subfield code="z">9789213617151</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="775">
<subfield code="i">Parallelausgabe</subfield>
<subfield code="t">Informe de los Objetivos de Desarrollo Sostenible 2017</subfield>
<subfield code="z">9789213617175</subfield>
</datafield>
<datafield ind2=" " ind1=" " tag="775">
<subfield code="i">Parallelausgabe</subfield>
<subfield code="t">Rapport sur les Objectifs de D<>eveloppement Durable 2017</subfield>
<subfield code="z">9789213617168</subfield>
</datafield>
</record>
</collection>