gmazza 2004/08/29 06:27:08
Modified: src/java/org/apache/fop/fo/flow MultiSwitch.java
TableAndCaption.java TableCaption.java
Log:
Three more validateChildNodes() added.
Revision Changes Path
1.15 +28 -1 xml-fop/src/java/org/apache/fop/fo/flow/MultiSwitch.java
Index: MultiSwitch.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/flow/MultiSwitch.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- MultiSwitch.java 25 Aug 2004 05:03:06 -0000 1.14
+++ MultiSwitch.java 29 Aug 2004 13:27:08 -0000 1.15
@@ -18,13 +18,18 @@
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 {
@@ -39,6 +44,28 @@
if (!notImplementedWarningGiven) {
getLogger().warn("fo:multi-switch is not yet implemented.");
notImplementedWarningGiven = true;
+ }
+ }
+
+ /**
+ * @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+)");
}
}
1.17 +53 -1 xml-fop/src/java/org/apache/fop/fo/flow/TableAndCaption.java
Index: TableAndCaption.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/flow/TableAndCaption.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- TableAndCaption.java 25 Aug 2004 05:03:06 -0000 1.16
+++ TableAndCaption.java 29 Aug 2004 13:27:08 -0000 1.17
@@ -18,18 +18,27 @@
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
*/
@@ -39,6 +48,49 @@
if (!notImplementedWarningGiven) {
getLogger().warn("fo:table-and-caption is not yet implemented.");
notImplementedWarningGiven = true;
+ }
+ }
+
+ /**
+ * @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");
}
}
1.17 +37 -1 xml-fop/src/java/org/apache/fop/fo/flow/TableCaption.java
Index: TableCaption.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/flow/TableCaption.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- TableCaption.java 25 Aug 2004 05:03:06 -0000 1.16
+++ TableCaption.java 29 Aug 2004 13:27:08 -0000 1.17
@@ -18,16 +18,24 @@
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;
/**
@@ -39,6 +47,34 @@
if (!notImplementedWarningGiven) {
getLogger().warn("fo:table-caption is not yet implemented.");
notImplementedWarningGiven = true;
+ }
+ }
+
+ /**
+ * @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;)");
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]