-/* $Id: xmlread.c,v 1.8 2003-08-21 10:29:00 adam Exp $
+/* $Id: xmlread.c,v 1.9 2003-09-08 09:30:17 adam Exp $
Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002
Index Data Aps
#define XML_CHUNK 1024
struct user_info {
+ int full_error_info;
data1_node *d1_stack[256];
int level;
data1_handle dh;
}
if (!XML_ParseBuffer (parser, r, done))
{
- yaz_log (LOG_WARN, "%s:%d:%d:XML error: %s",
- systemId,
- XML_GetCurrentLineNumber(parser),
- XML_GetCurrentColumnNumber(parser),
- XML_ErrorString(XML_GetErrorCode(parser)));
+ if (ui->full_error_info)
+ yaz_log (LOG_WARN, "%s:%d:%d:XML error: %s",
+ systemId,
+ XML_GetCurrentLineNumber(parser),
+ XML_GetCurrentColumnNumber(parser),
+ XML_ErrorString(XML_GetErrorCode(parser)));
+ else
+ yaz_log (LOG_WARN, "%s:%d:XML error: %s",
+ systemId,
+ XML_GetCurrentLineNumber(parser),
+ XML_ErrorString(XML_GetErrorCode(parser)));
}
}
fclose (inf);
}
data1_node *zebra_read_xml (data1_handle dh,
int (*rf)(void *, char *, size_t), void *fh,
- NMEM m)
+ NMEM m,
+ int full_error_info)
{
XML_Parser parser;
struct user_info uinfo;
int done = 0;
+ uinfo.full_error_info = full_error_info;
uinfo.loglevel = LOG_DEBUG;
uinfo.level = 1;
uinfo.dh = dh;
done = 1;
if (!XML_ParseBuffer (parser, r, done))
{
- yaz_log (LOG_WARN, "%d:%d:XML error: %s",
- XML_GetCurrentLineNumber(parser),
- XML_GetCurrentColumnNumber(parser),
- XML_ErrorString(XML_GetErrorCode(parser)));
+ if (full_error_info)
+ yaz_log (LOG_WARN, "%d:%d:XML error: %s",
+ XML_GetCurrentLineNumber(parser),
+ XML_GetCurrentColumnNumber(parser),
+ XML_ErrorString(XML_GetErrorCode(parser)));
+ else
+ yaz_log (LOG_WARN, "XML error: %s",
+ XML_ErrorString(XML_GetErrorCode(parser)));
}
}
XML_ParserFree (parser);
}
struct xml_info {
- int dummy;
+ XML_Expat_Version expat_version;
+ int full_error_info; /* true if we can safely use Expat's
+ XML_GetCurrent{Line,Column}Number */
};
static void *grs_init_xml(void)
{
struct xml_info *p = (struct xml_info *) xmalloc (sizeof(*p));
+
+ p->expat_version = XML_ExpatVersionInfo();
+
+ /* determine if we can use XML_GetCurrent{Line,Column}Number */
+ p->full_error_info = 0;
+ if (p->expat_version.major > 1)
+ p->full_error_info = 1;
+ else if (p->expat_version.major == 1 && p->expat_version.minor > 95)
+ p->full_error_info = 1;
+ else if (p->expat_version.major == 1 && p->expat_version.minor == 95
+ && p->expat_version.micro >= 3)
+ p->full_error_info = 1;
return p;
}
static data1_node *grs_read_xml (struct grs_read_info *p)
{
- return zebra_read_xml (p->dh, p->readf, p->fh, p->mem);
+ struct xml_info *x = (struct xml_info *) p->clientData;
+ return zebra_read_xml (p->dh, p->readf, p->fh, p->mem, x->full_error_info);
}
static void grs_destroy_xml(void *clientData)
{
- struct sgml_getc_info *p = (struct sgml_getc_info *) clientData;
+ struct xml_info *p = (struct xml_info *) clientData;
xfree (p);
}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<metadata creator="tkl-oai" created="Wed Aug 20 14:49:04 2003" hidden="0">
+<oai_dc:dc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/">
+<dc:identifier>http://www.byplanlab.dk/index.html</dc:identifier>
+<dc:title>Dansk Byplanlaboratorium</dc:title>
+<dc:type>ORSO 06 Institutioners og foreningers hjemmesider</dc:type>
+<dc:type>BIBL 02 Opslagsværker og bibliografier</dc:type>
+<dc:type>ORSO 06 Institutioners og foreningers hjemmesider</dc:type>
+<dc:subject>2 Arkitektur. Fysisk planlægning</dc:subject>
+<dc:description xml:lang="da">Dansk Byplanlaboratorium er en selvejende uafhængig institution, stiftet i 1921, hvis formål er at fremme by- og regionplanlægningen i Danmark. Byplanlaboratoriet henvender sig til planlæggere, studerende, offentlige myndigheder og interesserede borgere, som ønsker at vide noget mere om planlægning i Danmark.Byplanlaboratoriet er med til at skabe debat om aktuelle planlægningsspørgsmål og formidle ny viden indenfor området. Det sker gennem biblioteket, forlagsvirksomhed, deltagelse i udviklingsprojekter, afholdelse af kurser, seminarer, konferencer, studierejser samt løbende deltagelse i den faglige debat.</dc:description>
+<dc:publisher>Dansk Byplanlaboratorium</dc:publisher>
+<dc:subject>20/240 Byplanlægning</dc:subject>
+<dc:subject>20/220/2207/22072 Regionplanlægning</dc:subject>
+<dc:subject>20/220/2207/22075 Kommuneplanlægning</dc:subject>
+<dc:subject>20/220/2207/22077 Lokalplanlægning</dc:subject>
+<dc:coverage xml:lang="da">Danmark</dc:coverage>
+<dc:language>dan Dansk</dc:language>
+<dc:language>eng Engelsk</dc:language>
+<dc:rights>Ubegrænset adgang</dc:rights>
+</oai_dc:dc>
+</metadata>
\ No newline at end of file