gmazza 2005/03/04 20:52:06
Modified: src/java/org/apache/fop/fo FONode.java
src/java/org/apache/fop/fo/flow BlockContainer.java
InlineContainer.java ListItemBody.java
ListItemLabel.java MultiToggle.java
Log:
Validation added for five more FO's.
Revision Changes Path
1.56 +3 -1 xml-fop/src/java/org/apache/fop/fo/FONode.java
Index: FONode.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/FONode.java,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -r1.55 -r1.56
--- FONode.java 5 Mar 2005 00:32:25 -0000 1.55
+++ FONode.java 5 Mar 2005 04:52:06 -0000 1.56
@@ -185,7 +185,9 @@
}
/**
- *
+ * Primarily used for making final content model validation checks
+ * and/or informing the FOEventHandler that the end of this FO
+ * has been reached.
*/
protected void endOfNode() throws FOPException {
// do nothing by default
1.36 +31 -1
xml-fop/src/java/org/apache/fop/fo/flow/BlockContainer.java
Index: BlockContainer.java
===================================================================
RCS file:
/home/cvs/xml-fop/src/java/org/apache/fop/fo/flow/BlockContainer.java,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- BlockContainer.java 17 Jan 2005 21:47:05 -0000 1.35
+++ BlockContainer.java 5 Mar 2005 04:52:06 -0000 1.36
@@ -18,12 +18,15 @@
package org.apache.fop.fo.flow;
+import org.xml.sax.Locator;
+
import org.apache.fop.apps.FOPException;
import org.apache.fop.datatypes.Length;
import org.apache.fop.datatypes.Numeric;
import org.apache.fop.fo.FONode;
import org.apache.fop.fo.FObj;
import org.apache.fop.fo.PropertyList;
+import org.apache.fop.fo.ValidationException;
import org.apache.fop.fo.properties.CommonAbsolutePosition;
import org.apache.fop.fo.properties.CommonBorderPaddingBackground;
import org.apache.fop.fo.properties.CommonMarginBlock;
@@ -32,7 +35,6 @@
/**
* Class modelling the fo:block-container object.
- * @todo implement validateChildNode()
*/
public class BlockContainer extends FObj {
// The value of properties relevant for fo:block-container.
@@ -59,6 +61,9 @@
private Numeric zIndex;
// End of property values
+ /** used for FO validation */
+ private boolean blockItemFound = false;
+
/**
* @param parent FONode that is the parent of this object
*/
@@ -102,9 +107,34 @@
}
/**
+ * @see org.apache.fop.fo.FONode#validateChildNode(Locator, String,
String)
+ * XSL Content Model: marker* (%block;)+
+ * But: "In addition an fo:block-container that does not generate an
+ * absolutely positioned area may have a sequence of zero or more
+ * fo:markers as its initial children."
+ * @todo - implement above restriction if possible
+ */
+ protected void validateChildNode(Locator loc, String nsURI, String
localName)
+ throws ValidationException {
+ 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;
+ }
+ }
+
+ /**
* @see org.apache.fop.fo.FONode#endOfNode
*/
protected void endOfNode() throws FOPException {
+ if (!blockItemFound) {
+ missingChildElementError("marker* (%block;)+");
+ }
+
getFOEventHandler().endBlockContainer(this);
}
1.26 +32 -1
xml-fop/src/java/org/apache/fop/fo/flow/InlineContainer.java
Index: InlineContainer.java
===================================================================
RCS file:
/home/cvs/xml-fop/src/java/org/apache/fop/fo/flow/InlineContainer.java,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- InlineContainer.java 24 Dec 2004 12:06:26 -0000 1.25
+++ InlineContainer.java 5 Mar 2005 04:52:06 -0000 1.26
@@ -22,12 +22,15 @@
import java.util.ArrayList;
import java.util.List;
+import org.xml.sax.Locator;
+
import org.apache.fop.apps.FOPException;
import org.apache.fop.datatypes.Length;
import org.apache.fop.datatypes.Numeric;
import org.apache.fop.fo.FONode;
import org.apache.fop.fo.FObj;
import org.apache.fop.fo.PropertyList;
+import org.apache.fop.fo.ValidationException;
import org.apache.fop.fo.properties.CommonBorderPaddingBackground;
import org.apache.fop.fo.properties.CommonMarginInline;
import org.apache.fop.fo.properties.CommonRelativePosition;
@@ -38,7 +41,6 @@
/**
* Class modelling the fo:inline-container object.
- * @todo implement validateChildNode()
*/
public class InlineContainer extends FObj {
// The value of properties relevant for fo:inline-container.
@@ -65,6 +67,9 @@
private int writingMode;
// End of property values
+ /** used for FO validation */
+ private boolean blockItemFound = false;
+
/**
* @param parent FONode that is the parent of this object
*/
@@ -107,6 +112,32 @@
}
/**
+ * @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 ValidationException {
+ 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;
+ }
+ }
+
+ /**
+ * @see org.apache.fop.fo.FONode#endOfNode
+ */
+ protected void endOfNode() throws FOPException {
+ if (!blockItemFound) {
+ missingChildElementError("marker* (%block;)+");
+ }
+ }
+
+ /**
* Return the "id" property.
*/
public String getId() {
1.23 +1 -4 xml-fop/src/java/org/apache/fop/fo/flow/ListItemBody.java
Index: ListItemBody.java
===================================================================
RCS file:
/home/cvs/xml-fop/src/java/org/apache/fop/fo/flow/ListItemBody.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- ListItemBody.java 5 Mar 2005 04:10:36 -0000 1.22
+++ ListItemBody.java 5 Mar 2005 04:52:06 -0000 1.23
@@ -23,14 +23,13 @@
import org.apache.fop.apps.FOPException;
import org.apache.fop.fo.FONode;
import org.apache.fop.fo.FObj;
-import org.apache.fop.fo.ValidationException;
import org.apache.fop.fo.PropertyList;
+import org.apache.fop.fo.ValidationException;
import org.apache.fop.fo.properties.CommonAccessibility;
import org.apache.fop.fo.properties.KeepProperty;
/**
* Class modelling the fo:list-item-body object.
- * @todo implement validateChildNode()
*/
public class ListItemBody extends FObj {
// The value of properties relevant for fo:list-item-body.
@@ -84,8 +83,6 @@
}
/**
- * Make sure content model satisfied, if so then tell the
- * FOEventHandler that we are at the end of the flow.
* @see org.apache.fop.fo.FONode#endOfNode
*/
protected void endOfNode() throws FOPException {
1.31 +27 -0
xml-fop/src/java/org/apache/fop/fo/flow/ListItemLabel.java
Index: ListItemLabel.java
===================================================================
RCS file:
/home/cvs/xml-fop/src/java/org/apache/fop/fo/flow/ListItemLabel.java,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- ListItemLabel.java 28 Oct 2004 10:00:21 -0000 1.30
+++ ListItemLabel.java 5 Mar 2005 04:52:06 -0000 1.31
@@ -18,10 +18,13 @@
package org.apache.fop.fo.flow;
+import org.xml.sax.Locator;
+
import org.apache.fop.apps.FOPException;
import org.apache.fop.fo.FONode;
import org.apache.fop.fo.FObj;
import org.apache.fop.fo.PropertyList;
+import org.apache.fop.fo.ValidationException;
import org.apache.fop.fo.properties.CommonAccessibility;
import org.apache.fop.fo.properties.KeepProperty;
@@ -36,6 +39,9 @@
private KeepProperty keepTogether;
// End of property values
+ /** used for FO validation */
+ private boolean blockItemFound = false;
+
/**
* @param parent FONode that is the parent of this object
*/
@@ -61,9 +67,30 @@
}
/**
+ * @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 ValidationException {
+ 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;
+ }
+ }
+
+ /**
* @see org.apache.fop.fo.FONode#endOfNode
*/
protected void endOfNode() throws FOPException {
+ if (!blockItemFound) {
+ missingChildElementError("marker* (%block;)+");
+ }
+
getFOEventHandler().endListLabel();
}
1.17 +14 -4 xml-fop/src/java/org/apache/fop/fo/flow/MultiToggle.java
Index: MultiToggle.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/flow/MultiToggle.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- MultiToggle.java 28 Oct 2004 10:00:21 -0000 1.16
+++ MultiToggle.java 5 Mar 2005 04:52:06 -0000 1.17
@@ -19,15 +19,18 @@
package org.apache.fop.fo.flow;
// FOP
+import org.xml.sax.Locator;
+
import org.apache.fop.apps.FOPException;
import org.apache.fop.fo.FONode;
import org.apache.fop.fo.FObj;
import org.apache.fop.fo.PropertyList;
+import org.apache.fop.fo.ValidationException;
import org.apache.fop.fo.properties.CommonAccessibility;
+
/**
* Class modelling the fo:multi-toggle property.
- * @todo implement validateChildNode()
*/
public class MultiToggle extends FObj {
// The value of properties relevant for fo:multi-toggle.
@@ -56,9 +59,16 @@
commonAccessibility = pList.getAccessibilityProps();
// prSwitchTo = pList.get(PR_SWITCH_TO);
- if (!notImplementedWarningGiven) {
- getLogger().warn("fo:multi-toggle is not yet implemented.");
- notImplementedWarningGiven = true;
+ }
+
+ /**
+ * @see org.apache.fop.fo.FONode#validateChildNode(Locator, String,
String)
+ * XSL Content Model: (#PCDATA|%inline;|%block;)*
+ */
+ protected void validateChildNode(Locator loc, String nsURI, String
localName)
+ throws ValidationException {
+ if (!isBlockOrInlineItem(nsURI, localName)) {
+ invalidChildError(loc, nsURI, localName);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]