Fixed bug #884: Entity declarations in input are lost at retrieval time.
authorAdam Dickmeiss <adam@indexdata.dk>
Mon, 12 Feb 2007 10:33:50 +0000 (10:33 +0000)
committerAdam Dickmeiss <adam@indexdata.dk>
Mon, 12 Feb 2007 10:33:50 +0000 (10:33 +0000)
NEWS
index/alvis.c
index/mod_dom.c
test/xslt/marc-col.xml

diff --git a/NEWS b/NEWS
index 2d48905..2eeb876 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,5 @@
+Fixed bug #884: Entity declarations in input are lost at retrieval time.
+
 Implemented new filter 'dom'. See test/xslt/dom-config*xml for examples. 
 This, like alvis, performs indexing and retrieval using XSLT. But Unlike
 alvis, it allows multiple XSLT steps to be performed and does ISO2709
index 60beaca..fad3671 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: alvis.c,v 1.11 2007-01-15 15:10:16 adam Exp $
+/* $Id: alvis.c,v 1.12 2007-02-12 10:33:51 adam Exp $
    Copyright (C) 1995-2007
    Index Data ApS
 
@@ -507,7 +507,7 @@ static int extract_split(struct filter_info *tinfo, struct recExtractCtrl *p)
                                       p /* I/O handler */,
                                       0 /* URL */, 
                                       0 /* encoding */,
-                                      XML_PARSE_XINCLUDE);
+                                      XML_PARSE_XINCLUDE|XML_PARSE_NOENT);
     }
     if (!tinfo->reader)
        return RECCTRL_EXTRACT_ERROR_GENERIC;
@@ -550,7 +550,7 @@ static int extract_full(struct filter_info *tinfo, struct recExtractCtrl *p)
        xmlDocPtr doc = xmlReadIO(ioread_ex, ioclose_ex, p /* I/O handler */,
                                  0 /* URL */,
                                  0 /* encoding */,
-                                 XML_PARSE_XINCLUDE);
+                                 XML_PARSE_XINCLUDE|XML_PARSE_NOENT);
        if (!doc)
        {
            return RECCTRL_EXTRACT_ERROR_GENERIC;
@@ -694,7 +694,7 @@ static int filter_retrieve (void *clientData, struct recRetrieveCtrl *p)
     doc = xmlReadIO(ioread_ret, ioclose_ret, p /* I/O handler */,
                    0 /* URL */,
                    0 /* encoding */,
-                   XML_PARSE_XINCLUDE);
+                   XML_PARSE_XINCLUDE|XML_PARSE_NOENT);
     if (!doc)
     {
        p->diagnostic = YAZ_BIB1_SYSTEM_ERROR_IN_PRESENTING_RECORDS;
index d42d80b..102a51a 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: mod_dom.c,v 1.1 2007-02-07 12:08:54 adam Exp $
+/* $Id: mod_dom.c,v 1.2 2007-02-12 10:33:51 adam Exp $
    Copyright (C) 1995-2007
    Index Data ApS
 
@@ -794,7 +794,8 @@ static int extract_xml_split(struct filter_info *tinfo,
                                                    p /* I/O handler */,
                                                    0 /* URL */, 
                                                    0 /* encoding */,
-                                                   XML_PARSE_XINCLUDE);
+                                                   XML_PARSE_XINCLUDE|
+                                                   XML_PARSE_NOENT);
     }
     if (!input->u.xmlreader.reader)
        return RECCTRL_EXTRACT_ERROR_GENERIC;
@@ -840,7 +841,7 @@ static int extract_xml_full(struct filter_info *tinfo,
         xmlDocPtr doc = xmlReadIO(ioread_ex, ioclose_ex, p /* I/O handler */,
                                   0 /* URL */,
                                   0 /* encoding */,
-                                  XML_PARSE_XINCLUDE);
+                                  XML_PARSE_XINCLUDE|XML_PARSE_NOENT);
         if (!doc)
         {
             return RECCTRL_EXTRACT_ERROR_GENERIC;
@@ -995,7 +996,7 @@ static int filter_retrieve (void *clientData, struct recRetrieveCtrl *p)
     doc = xmlReadIO(ioread_ret, ioclose_ret, p /* I/O handler */,
                    0 /* URL */,
                    0 /* encoding */,
-                   XML_PARSE_XINCLUDE);
+                   XML_PARSE_XINCLUDE|XML_PARSE_NOENT);
     if (!doc)
     {
        p->diagnostic = YAZ_BIB1_SYSTEM_ERROR_IN_PRESENTING_RECORDS;
index c5d527f..71e8a77 100644 (file)
@@ -1,3 +1,6 @@
+<!DOCTYPE x [
+  <!ENTITY com  "computer">
+]>
 <collection xmlns="http://www.loc.gov/MARC21/slim">
 <record xmlns="http://www.loc.gov/MARC21/slim">
   <rank>1</rank>
@@ -20,7 +23,7 @@
     <subfield code="a">Jack Collins</subfield>
   </datafield>
   <datafield tag="245" ind1="1" ind2="0">
-    <subfield code="a">How to program a computer</subfield>
+    <subfield code="a">How to program a &com;</subfield>
   </datafield>
   <datafield tag="260" ind1="1" ind2=" ">
     <subfield code="a">Penguin</subfield>