handling of PIs and <?sgml-declaration in entities. Daniel

* DOCBparser.c: handling of PIs and <?sgml-declaration in entities.
Daniel
diff --git a/DOCBparser.c b/DOCBparser.c
index a1a8bbf..49ea57b 100644
--- a/DOCBparser.c
+++ b/DOCBparser.c
@@ -4135,104 +4135,113 @@
  * Parse a content: comment, sub-element, reference or text.
  *
  */
-
 static void
-docbParseContent(docbParserCtxtPtr ctxt) {
+docbParseContent(docbParserCtxtPtr ctxt)
+{
     xmlChar *currentNode;
     int depth;
 
     currentNode = xmlStrdup(ctxt->name);
     depth = ctxt->nameNr;
     while (1) {
-       long cons = ctxt->nbChars;
+        long cons = ctxt->nbChars;
 
         GROW;
-       /*
-        * Our tag or one of it's parent or children is ending.
-        */
+        /*
+         * Our tag or one of it's parent or children is ending.
+         */
         if ((CUR == '<') && (NXT(1) == '/')) {
-           docbParseEndTag(ctxt);
-           if (currentNode != NULL) xmlFree(currentNode);
-           return;
+            docbParseEndTag(ctxt);
+            if (currentNode != NULL)
+                xmlFree(currentNode);
+            return;
         }
 
-       /*
-        * Has this node been popped out during parsing of
-        * the next element
-        */
+        /*
+         * Has this node been popped out during parsing of
+         * the next element
+         */
         if ((!xmlStrEqual(currentNode, ctxt->name)) &&
-           (depth >= ctxt->nameNr)) {
-           if (currentNode != NULL) xmlFree(currentNode);
-           return;
-       }
+            (depth >= ctxt->nameNr)) {
+            if (currentNode != NULL)
+                xmlFree(currentNode);
+            return;
+        }
 
-       /*
-        * Sometimes DOCTYPE arrives in the middle of the document
-        */
-       if ((CUR == '<') && (NXT(1) == '!') &&
-           (UPP(2) == 'D') && (UPP(3) == 'O') &&
-           (UPP(4) == 'C') && (UPP(5) == 'T') &&
-           (UPP(6) == 'Y') && (UPP(7) == 'P') &&
-           (UPP(8) == 'E')) {
-           if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-               ctxt->sax->error(ctxt->userData,
-                    "Misplaced DOCTYPE declaration\n");
-           ctxt->wellFormed = 0;
-           docbParseDocTypeDecl(ctxt);
-       }
+        /*
+         * Sometimes DOCTYPE arrives in the middle of the document
+         */
+        if ((CUR == '<') && (NXT(1) == '!') &&
+            (UPP(2) == 'D') && (UPP(3) == 'O') &&
+            (UPP(4) == 'C') && (UPP(5) == 'T') &&
+            (UPP(6) == 'Y') && (UPP(7) == 'P') && (UPP(8) == 'E')) {
+            if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
+                ctxt->sax->error(ctxt->userData,
+                                 "Misplaced DOCTYPE declaration\n");
+            ctxt->wellFormed = 0;
+            docbParseDocTypeDecl(ctxt);
+        }
 
-       /*
-        * First case :  a comment
-        */
-       if ((CUR == '<') && (NXT(1) == '!') &&
-                (NXT(2) == '-') && (NXT(3) == '-')) {
-           docbParseComment(ctxt);
-       }
+        /*
+         * First case :  a comment
+         */
+        if ((CUR == '<') && (NXT(1) == '!') &&
+            (NXT(2) == '-') && (NXT(3) == '-')) {
+            docbParseComment(ctxt);
+        }
+	
+        /*
+         * Second case :  a PI
+         */
+	else if ((RAW == '<') && (NXT(1) == '?')) {
+            docbParsePI(ctxt);
+        }
 
-       /*
-        * Second case :  a sub-element.
-        */
-       else if (CUR == '<') {
-           docbParseElement(ctxt);
-       }
+        /*
+         * Third case :  a sub-element.
+         */
+        else if (CUR == '<') {
+            docbParseElement(ctxt);
+        }
 
-       /*
-        * Third case : a reference. If if has not been resolved,
-        *    parsing returns it's Name, create the node 
-        */
-       else if (CUR == '&') {
-           docbParseReference(ctxt);
-       }
+        /*
+         * Fourth case : a reference. If if has not been resolved,
+         *    parsing returns it's Name, create the node 
+         */
+        else if (CUR == '&') {
+            docbParseReference(ctxt);
+        }
 
-       /*
-        * Fourth : end of the resource
-        */
-       else if (CUR == 0) {
-           docbAutoClose(ctxt, NULL);
-	   if (ctxt->nameNr == 0)
-	       break;
-       }
+        /*
+         * Fifth : end of the resource
+         */
+        else if (CUR == 0) {
+            docbAutoClose(ctxt, NULL);
+            if (ctxt->nameNr == 0)
+                break;
+        }
 
-       /*
-        * Last case, text. Note that References are handled directly.
-        */
-       else {
-           docbParseCharData(ctxt);
-       }
+        /*
+         * Last case, text. Note that References are handled directly.
+         */
+        else {
+            docbParseCharData(ctxt);
+        }
 
-       if (cons == ctxt->nbChars) {
-           if (ctxt->node != NULL) {
-               if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-                   ctxt->sax->error(ctxt->userData,
-                        "detected an error in element content\n");
-               ctxt->wellFormed = 0;
-           }
-           break;
-       }
+        if (cons == ctxt->nbChars) {
+            if (ctxt->node != NULL) {
+                if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
+                    ctxt->sax->error(ctxt->userData,
+                                     "detected an error in element content\n");
+                ctxt->wellFormed = 0;
+            }
+            break;
+        }
 
         GROW;
     }
-    if (currentNode != NULL) xmlFree(currentNode);
+    if (currentNode != NULL)
+        xmlFree(currentNode);
 }
 
 /**
@@ -4822,11 +4831,11 @@
            (NXT(2) == '-') && (NXT(3) == '-')) ||
            IS_BLANK(CUR)) {
         if ((RAW == '<') && (NXT(1) == '?')) {
-           docbParsePI(ctxt); /* TODO: SGML PIs differs */
-       } else if (IS_BLANK(CUR)) {
-           NEXT;
-       } else
-           xmlParseComment(ctxt);
+            docbParsePI(ctxt);
+        } else if (IS_BLANK(CUR)) {
+            NEXT;
+        } else
+            xmlParseComment(ctxt);
     }
 }