]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Three more validateChildNodes() added.
authorGlen Mazza <gmazza@apache.org>
Sun, 29 Aug 2004 13:27:08 +0000 (13:27 +0000)
committerGlen Mazza <gmazza@apache.org>
Sun, 29 Aug 2004 13:27:08 +0000 (13:27 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@197893 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/fo/flow/MultiSwitch.java
src/java/org/apache/fop/fo/flow/TableAndCaption.java
src/java/org/apache/fop/fo/flow/TableCaption.java

index 9c653172cdb9a69fbf4c85682876f8a16ac21d22..bc075ab7fe20cfce6a2f9e7798e21893768088c2 100644 (file)
 
 package org.apache.fop.fo.flow;
 
+// XML
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXParseException;
+
 // FOP
 import org.apache.fop.fo.FONode;
 import org.apache.fop.fo.FObj;
 
 /**
  * Class modelling the fo:multi-switch object.
- * @todo implement validateChildNode()
+ * @todo needs implementation
  */
 public class MultiSwitch extends FObj {
 
@@ -42,6 +47,28 @@ public class MultiSwitch extends FObj {
         }
     }
 
+    /**
+     * @see org.apache.fop.fo.FONode#validateChildNode(Locator, String, String)
+     * XSL Content Model: (multi-case+)
+     */
+    protected void validateChildNode(Locator loc, String nsURI, String localName) 
+        throws SAXParseException {
+        if (!(nsURI == FO_URI && localName.equals("multi-case"))) {
+            invalidChildError(loc, nsURI, localName);
+        }
+    }
+
+    /**
+     * Make sure content model satisfied, if so then tell the
+     * FOInputHandler that we are at the end of the flow.
+     * @see org.apache.fop.fo.FONode#end
+     */
+    protected void endOfNode() throws SAXParseException {
+        if (childNodes == null) {
+            missingChildElementError("(multi-case+)");
+        }
+    }
+
     /**
      * @see org.apache.fop.fo.FObj#getName()
      */
index 8538cc4f1670e3b7be6cacd21f415e41e44bc001..0229b0cb3104cd87701294cee3533bbc5fb040be 100644 (file)
 
 package org.apache.fop.fo.flow;
 
+// XML
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXParseException;
+
 // FOP
 import org.apache.fop.fo.FONode;
 import org.apache.fop.fo.FObj;
 
 /**
  * Class modelling the fo:table-and-caption property.
- * @todo implement validateChildNode()
+ * @todo needs implementation
  */
 public class TableAndCaption extends FObj {
 
     static boolean notImplementedWarningGiven = false;
 
+    /** used for FO validation */
+    private boolean tableCaptionFound = false;
+    private boolean tableFound = false;
+
     /**
      * @param parent FONode that is the parent of this object
      */
@@ -42,6 +51,49 @@ public class TableAndCaption extends FObj {
         }
     }
 
+    /**
+     * @see org.apache.fop.fo.FONode#validateChildNode(Locator, String, String)
+     * XSL Content Model: marker* table-caption? table
+     */
+    protected void validateChildNode(Locator loc, String nsURI, String localName) 
+        throws SAXParseException {
+
+            if (nsURI == FO_URI && localName.equals("marker")) {
+                if (tableCaptionFound) {
+                    nodesOutOfOrderError(loc, "fo:marker", "fo:table-caption");
+                } else if (tableFound) {
+                    nodesOutOfOrderError(loc, "fo:marker", "fo:table");
+                }
+            } else if (nsURI == FO_URI && localName.equals("table-caption")) {
+                if (tableCaptionFound) {
+                    tooManyNodesError(loc, "fo:table-caption");
+                } else if (tableFound) {
+                    nodesOutOfOrderError(loc, "fo:table-caption", "fo:table");
+                } else {
+                    tableCaptionFound = true;
+                }
+            } else if (nsURI == FO_URI && localName.equals("table")) {
+                if (tableFound) {
+                    tooManyNodesError(loc, "fo:table");
+                } else {
+                    tableFound = true;
+                }
+            } else {
+                invalidChildError(loc, nsURI, localName);
+            }
+    }
+
+    /**
+     * Make sure content model satisfied, if so then tell the
+     * FOInputHandler that we are at the end of the flow.
+     * @see org.apache.fop.fo.FONode#end
+     */
+    protected void endOfNode() throws SAXParseException {
+        if (!tableFound) {
+            missingChildElementError("marker* table-caption? table");
+        }
+    }
+
     /**
      * @see org.apache.fop.fo.FObj#getName()
      */
index cbe53a4d0ae260478bf2c8599dfadc57a64c85d8..b76577156ba1abac9aa9ddfbc5f2a1693076322d 100644 (file)
 
 package org.apache.fop.fo.flow;
 
+// XML
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXParseException;
+
 // FOP
 import org.apache.fop.fo.FONode;
 import org.apache.fop.fo.FObj;
 
 /**
  * Class modelling the fo:table-caption object.
- * @todo implement validateChildNode()
+ * @todo needs implementation
  */
 public class TableCaption extends FObj {
 
+    /** used for FO validation */
+    private boolean blockItemFound = false;
+
     static boolean notImplementedWarningGiven = false;
 
     /**
@@ -42,6 +50,34 @@ public class TableCaption extends FObj {
         }
     }
 
+    /**
+     * @see org.apache.fop.fo.FONode#validateChildNode(Locator, String, String)
+     * XSL Content Model: marker* (%block;)
+     */
+    protected void validateChildNode(Locator loc, String nsURI, String localName) 
+        throws SAXParseException {
+        if (nsURI == FO_URI && localName.equals("marker")) {
+            if (blockItemFound) {
+               nodesOutOfOrderError(loc, "fo:marker", "(%block;)");
+            }
+        } else if (!isBlockItem(nsURI, localName)) {
+            invalidChildError(loc, nsURI, localName);
+        } else {
+            blockItemFound = true;
+        }
+    }
+
+    /**
+     * Make sure content model satisfied, if so then tell the
+     * FOInputHandler that we are at the end of the flow.
+     * @see org.apache.fop.fo.FONode#end
+     */
+    protected void endOfNode() throws SAXParseException {
+        if (childNodes == null) {
+            missingChildElementError("marker* (%block;)");
+        }
+    }
+
     /**
      * @see org.apache.fop.fo.FObj#getName()
      */