forked from pool/libxml2
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/libxml2?expand=0&rev=9a3202d62ca076111a62e7c4f5465882
82 lines
3.6 KiB
Diff
82 lines
3.6 KiB
Diff
--- libxml2-2.7.7/valid.c.orig 2010-07-14 20:53:09.000000000 +0200
|
|
+++ libxml2-2.7.7/valid.c 2010-07-14 21:59:41.708128513 +0200
|
|
@@ -6469,10 +6469,16 @@ xmlValidateRef(xmlRefPtr ref, xmlValidCt
|
|
} else if (attr->atype == XML_ATTRIBUTE_IDREF) {
|
|
id = xmlGetID(ctxt->doc, name);
|
|
if (id == NULL) {
|
|
- xmlErrValidNode(ctxt, attr->parent, XML_DTD_UNKNOWN_ID,
|
|
- "IDREF attribute %s references an unknown ID \"%s\"\n",
|
|
- attr->name, name, NULL);
|
|
- ctxt->valid = 0;
|
|
+ if (ctxt->doc->parseFlags & XML_PARSE_NOXREF) {
|
|
+ xmlErrValidWarning(ctxt, attr->parent, XML_DTD_UNKNOWN_ID,
|
|
+ "IDREF attribute %s references an unknown ID \"%s\"\n",
|
|
+ attr->name, name, NULL);
|
|
+ } else {
|
|
+ xmlErrValidNode(ctxt, attr->parent, XML_DTD_UNKNOWN_ID,
|
|
+ "IDREF attribute %s references an unknown ID \"%s\"\n",
|
|
+ attr->name, name, NULL);
|
|
+ ctxt->valid = 0;
|
|
+ }
|
|
}
|
|
} else if (attr->atype == XML_ATTRIBUTE_IDREFS) {
|
|
xmlChar *dup, *str = NULL, *cur, save;
|
|
--- libxml2-2.7.7/parser.c.orig 2010-03-15 10:11:40.000000000 +0100
|
|
+++ libxml2-2.7.7/parser.c 2010-07-14 21:53:25.903128498 +0200
|
|
@@ -14381,6 +14381,12 @@ xmlCtxtUseOptionsInternal(xmlParserCtxtP
|
|
ctxt->sax->fatalError = NULL;
|
|
options -= XML_PARSE_NOERROR;
|
|
}
|
|
+#ifdef LIBXML_VALID_ENABLED
|
|
+ if (options & XML_PARSE_NOXREF) {
|
|
+ options -= XML_PARSE_NOXREF;
|
|
+ ctxt->options |= XML_PARSE_NOXREF;
|
|
+ }
|
|
+#endif /* LIBXML_VALID_ENABLED */
|
|
#ifdef LIBXML_SAX1_ENABLED
|
|
if (options & XML_PARSE_SAX1) {
|
|
ctxt->sax->startElement = xmlSAX2StartElement;
|
|
--- libxml2-2.7.7/include/libxml/parser.h.orig 2010-03-15 11:40:03.000000000 +0100
|
|
+++ libxml2-2.7.7/include/libxml/parser.h 2010-07-14 20:39:57.161550835 +0200
|
|
@@ -1106,7 +1106,8 @@ typedef enum {
|
|
XML_PARSE_OLD10 = 1<<17,/* parse using XML-1.0 before update 5 */
|
|
XML_PARSE_NOBASEFIX = 1<<18,/* do not fixup XINCLUDE xml:base uris */
|
|
XML_PARSE_HUGE = 1<<19, /* relax any hardcoded limit from the parser */
|
|
- XML_PARSE_OLDSAX = 1<<20 /* parse using SAX2 interface from before 2.7.0 */
|
|
+ XML_PARSE_OLDSAX = 1<<20, /* parse using SAX2 interface from before 2.7.0 */
|
|
+ XML_PARSE_NOXREF = 1<<21 /* turn idref errors into warnings */
|
|
} xmlParserOption;
|
|
|
|
XMLPUBFUN void XMLCALL
|
|
--- libxml2-2.7.7/xmllint.c.orig 2010-07-14 20:31:34.000000000 +0200
|
|
+++ libxml2-2.7.7/xmllint.c 2010-07-14 20:44:16.940128662 +0200
|
|
@@ -141,6 +141,7 @@ static int oldout = 0;
|
|
#endif /* LIBXML_OUTPUT_ENABLED */
|
|
#ifdef LIBXML_VALID_ENABLED
|
|
static int valid = 0;
|
|
+static int noxref = 0;
|
|
static int postvalid = 0;
|
|
static char * dtdvalid = NULL;
|
|
static char * dtdvalidfpi = NULL;
|
|
@@ -2979,6 +2980,7 @@ static void usage(const char *name) {
|
|
printf("\t--nowrap : do not put HTML doc wrapper\n");
|
|
#ifdef LIBXML_VALID_ENABLED
|
|
printf("\t--valid : validate the document in addition to std well-formed check\n");
|
|
+ printf("\t--noxref : turn IDREF linkend errors into warnings\n");
|
|
printf("\t--postvalid : do a posteriori validation, i.e after parsing\n");
|
|
printf("\t--dtdvalid URL : do a posteriori validation against a given DTD\n");
|
|
printf("\t--dtdvalidfpi FPI : same but name the DTD with a Public Identifier\n");
|
|
@@ -3179,6 +3181,12 @@ main(int argc, char **argv) {
|
|
postvalid++;
|
|
loaddtd++;
|
|
options |= XML_PARSE_DTDLOAD;
|
|
+ } else if ((!strcmp(argv[i], "-noxref")) ||
|
|
+ (!strcmp(argv[i], "--noxref")) ||
|
|
+ (!strcmp(argv[i], "-noidref")) ||
|
|
+ (!strcmp(argv[i], "--noidref"))) {
|
|
+ noxref++;
|
|
+ options |= XML_PARSE_NOXREF;
|
|
} else if ((!strcmp(argv[i], "-dtdvalid")) ||
|
|
(!strcmp(argv[i], "--dtdvalid"))) {
|
|
i++;
|