neilg 2002/12/06 16:18:54
Modified: java/src/org/apache/xerces/impl/dtd DTDGrammar.java
XMLDTDProcessor.java XMLDTDValidator.java
Added: java/src/org/apache/xerces/impl/dtd XML11DTDProcessor.java
XML11DTDValidator.java
Log:
implementing XNI changes and XML 1.1 support in DTD validation code
Revision Changes Path
1.22 +26 -1 xml-xerces/java/src/org/apache/xerces/impl/dtd/DTDGrammar.java
Index: DTDGrammar.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dtd/DTDGrammar.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- DTDGrammar.java 20 Nov 2002 00:49:47 -0000 1.21
+++ DTDGrammar.java 7 Dec 2002 00:18:53 -0000 1.22
@@ -93,6 +93,8 @@
import org.apache.xerces.xni.XMLResourceIdentifier;
import org.apache.xerces.xni.XMLString;
import org.apache.xerces.xni.XNIException;
+import org.apache.xerces.xni.parser.XMLDTDSource;
+import org.apache.xerces.xni.parser.XMLDTDContentModelSource;
import org.apache.xerces.xni.grammars.Grammar;
import org.apache.xerces.xni.grammars.XMLGrammarDescription;
@@ -149,6 +151,9 @@
// Data
//
+ protected XMLDTDSource fDTDSource = null;
+ protected XMLDTDContentModelSource fDTDContentModelSource = null;
+
/** Current element index. */
protected int fCurrentElementIndex;
@@ -880,6 +885,16 @@
}
} // endDTD()
+ // sets the source of this handler
+ public void setDTDSource(XMLDTDSource source) {
+ fDTDSource = source;
+ } // setDTDSource(XMLDTDSource)
+
+ // returns the source of this handler
+ public XMLDTDSource getDTDSource() {
+ return fDTDSource;
+ } // getDTDSource(): XMLDTDSource
+
// no-op methods
/**
@@ -985,6 +1000,16 @@
//
// XMLDTDContentModelHandler methods
//
+
+ // set content model source
+ public void setDTDContentModelSource(XMLDTDContentModelSource source) {
+ fDTDContentModelSource = source;
+ }
+
+ // get content model source
+ public XMLDTDContentModelSource getDTDContentModelSource() {
+ return fDTDContentModelSource;
+ }
/**
* The start of a content model. Depending on the type of the content
1.6 +60 -6
xml-xerces/java/src/org/apache/xerces/impl/dtd/XMLDTDProcessor.java
Index: XMLDTDProcessor.java
===================================================================
RCS file:
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dtd/XMLDTDProcessor.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- XMLDTDProcessor.java 24 Sep 2002 09:39:44 -0000 1.5
+++ XMLDTDProcessor.java 7 Dec 2002 00:18:53 -0000 1.6
@@ -80,7 +80,9 @@
import org.apache.xerces.xni.parser.XMLComponentManager;
import org.apache.xerces.xni.parser.XMLConfigurationException;
import org.apache.xerces.xni.parser.XMLDTDFilter;
+import org.apache.xerces.xni.parser.XMLDTDSource;
import org.apache.xerces.xni.parser.XMLDTDContentModelFilter;
+import org.apache.xerces.xni.parser.XMLDTDContentModelSource;
import org.apache.xerces.xni.parser.XMLInputSource;
import java.util.Enumeration;
@@ -228,9 +230,15 @@
/** DTD handler. */
protected XMLDTDHandler fDTDHandler;
+ /** DTD source. */
+ protected XMLDTDSource fDTDSource;
+
/** DTD content model handler. */
protected XMLDTDContentModelHandler fDTDContentModelHandler;
+ /** DTD content model source. */
+ protected XMLDTDContentModelSource fDTDContentModelSource;
+
// grammars
/** DTD Grammar. */
@@ -478,6 +486,15 @@
fDTDHandler = dtdHandler;
} // setDTDHandler(XMLDTDHandler)
+ /**
+ * Returns the DTD handler.
+ *
+ * @return The DTD handler.
+ */
+ public XMLDTDHandler getDTDHandler() {
+ return fDTDHandler;
+ } // getDTDHandler(): XMLDTDHandler
+
//
// XMLDTDContentModelSource methods
//
@@ -491,6 +508,15 @@
fDTDContentModelHandler = dtdContentModelHandler;
} // setDTDContentModelHandler(XMLDTDContentModelHandler)
+ /**
+ * Gets the DTD content model handler.
+ *
+ * @return dtdContentModelHandler The DTD content model handler.
+ */
+ public XMLDTDContentModelHandler getDTDContentModelHandler() {
+ return fDTDContentModelHandler;
+ } // getDTDContentModelHandler(): XMLDTDContentModelHandler
+
//
// XMLDTDContentModelHandler and XMLDTDHandler methods
//
@@ -941,14 +967,14 @@
while (true) {
String nmtoken = tokenizer.nextToken();
if (type == XMLSymbols.fNMTOKENSSymbol) {
- if (!XMLChar.isValidNmtoken(nmtoken)) {
+ if (!isValidNmtoken(nmtoken)) {
ok = false;
break;
}
}
else if (type == XMLSymbols.fENTITIESSymbol ||
type == XMLSymbols.fIDREFSSymbol) {
- if (!XMLChar.isValidName(nmtoken)) {
+ if (!isValidName(nmtoken)) {
ok = false;
break;
}
@@ -966,7 +992,7 @@
type == XMLSymbols.fIDREFSymbol ||
type == XMLSymbols.fNOTATIONSymbol) {
- if (!XMLChar.isValidName(value)) {
+ if (!isValidName(value)) {
ok = false;
}
@@ -974,7 +1000,7 @@
else if (type == XMLSymbols.fNMTOKENSymbol ||
type == XMLSymbols.fENUMERATIONSymbol) {
- if (!XMLChar.isValidNmtoken(value)) {
+ if (!isValidNmtoken(value)) {
ok = false;
}
}
@@ -1275,10 +1301,31 @@
} // endDTD()
+ // sets the XMLDTDSource of this handler
+ public void setDTDSource(XMLDTDSource source ) {
+ fDTDSource = source;
+ } // setDTDSource(XMLDTDSource)
+
+ // returns the XMLDTDSource of this handler
+ public XMLDTDSource getDTDSource() {
+ return fDTDSource;
+ } // getDTDSource(): XMLDTDSource
+
//
// XMLDTDContentModelHandler methods
//
+ // sets the XMLContentModelDTDSource of this handler
+ public void setDTDContentModelSource(XMLDTDContentModelSource source ) {
+ fDTDContentModelSource = source;
+ } // setDTDContentModelSource(XMLDTDContentModelSource)
+
+ // returns the XMLDTDSource of this handler
+ public XMLDTDContentModelSource getDTDContentModelSource() {
+ return fDTDContentModelSource;
+ } // getDTDContentModelSource(): XMLDTDContentModelSource
+
+
/**
* The start of a content model. Depending on the type of the content
* model, specific methods may be called between the call to the
@@ -1581,5 +1628,12 @@
}
} // init()
-
+
+ protected boolean isValidNmtoken(String nmtoken) {
+ return XMLChar.isValidNmtoken(nmtoken);
+ } // isValidNmtoken(String): boolean
+
+ protected boolean isValidName(String name) {
+ return XMLChar.isValidName(name);
+ } // isValidName(String): boolean
} // class XMLDTDProcessor
1.41 +19 -13
xml-xerces/java/src/org/apache/xerces/impl/dtd/XMLDTDValidator.java
Index: XMLDTDValidator.java
===================================================================
RCS file:
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dtd/XMLDTDValidator.java,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -r1.40 -r1.41
--- XMLDTDValidator.java 10 Nov 2002 03:51:42 -0000 1.40
+++ XMLDTDValidator.java 7 Dec 2002 00:18:53 -0000 1.41
@@ -386,28 +386,28 @@
// attribute validators
/** Datatype validator: ID. */
- private DatatypeValidator fValID;
+ protected DatatypeValidator fValID;
/** Datatype validator: IDREF. */
- private DatatypeValidator fValIDRef;
+ protected DatatypeValidator fValIDRef;
/** Datatype validator: IDREFS. */
- private DatatypeValidator fValIDRefs;
+ protected DatatypeValidator fValIDRefs;
/** Datatype validator: ENTITY. */
- private DatatypeValidator fValENTITY;
+ protected DatatypeValidator fValENTITY;
/** Datatype validator: ENTITIES. */
- private DatatypeValidator fValENTITIES;
+ protected DatatypeValidator fValENTITIES;
/** Datatype validator: NMTOKEN. */
- private DatatypeValidator fValNMTOKEN;
+ protected DatatypeValidator fValNMTOKEN;
/** Datatype validator: NMTOKENS. */
- private DatatypeValidator fValNMTOKENS;
+ protected DatatypeValidator fValNMTOKENS;
/** Datatype validator: NOTATION. */
- private DatatypeValidator fValNOTATION;
+ protected DatatypeValidator fValNOTATION;
// to check for duplicate ID or ANNOTATION attribute declare in
// ATTLIST, and misc VCs
@@ -626,7 +626,7 @@
/** Returns the document handler */
public XMLDocumentHandler getDocumentHandler() {
return fDocumentHandler;
- } // setDocumentHandler(XMLDocumentHandler)
+ } // getDocumentHandler(): XMLDocumentHandler
//
@@ -850,7 +850,7 @@
// look at the characters again. -Ac
boolean allWhiteSpace = true;
for (int i=text.offset; i< text.offset+text.length; i++) {
- if (!XMLChar.isSpace(text.ch[i])) {
+ if (!isSpace(text.ch[i])) {
allWhiteSpace = false;
break;
}
@@ -1798,8 +1798,8 @@
} // getAttributeTypeName(XMLAttributeDecl):String
- /** intialization */
- private void init() {
+ /** initialization */
+ protected void init() {
// datatype validators
if (fValidation) {
@@ -2076,5 +2076,11 @@
fDocumentHandler.endElement(fCurrentElement, augs);
}
}
+
+ // returns whether a character is space according to the
+ // version of XML this validator supports.
+ protected boolean isSpace(int c) {
+ return XMLChar.isSpace(c);
+ } // isSpace(int): boolean
} // class XMLDTDValidator
1.1
xml-xerces/java/src/org/apache/xerces/impl/dtd/XML11DTDProcessor.java
Index: XML11DTDProcessor.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
*
* Copyright (c) 1999-2002 The Apache Software Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Xerces" and "Apache Software Foundation" must
* not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation and was
* originally based on software copyright (c) 1999, International
* Business Machines, Inc., http://www.apache.org. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.xerces.impl.dtd;
import org.apache.xerces.impl.XMLErrorReporter;
import org.apache.xerces.util.SymbolTable;
import org.apache.xerces.util.XML11Char;
import org.apache.xerces.xni.grammars.XMLGrammarPool;
import org.apache.xerces.xni.parser.XMLComponent;
import org.apache.xerces.xni.parser.XMLEntityResolver;
import org.apache.xerces.xni.parser.XMLComponentManager;
import org.apache.xerces.xni.parser.XMLDTDFilter;
/**
* This class extends XMLDTDProcessor by giving it
* the ability to parse XML 1.1 documents correctly. It can also be used
* as a DTD loader, so that XML 1.1 external subsets can
* be processed correctly (hence it's rather anomalous-appearing
* derivation from XMLDTDLoader).
*
* @author Neil Graham, IBM
*
* @version $Id: XML11DTDProcessor.java,v 1.1 2002/12/07 00:18:53 neilg Exp $
*/
public class XML11DTDProcessor extends XMLDTDLoader{
// constructors
public XML11DTDProcessor() {
super();
} // <init>()
public XML11DTDProcessor(SymbolTable symbolTable) {
super(symbolTable);
} // init(SymbolTable)
public XML11DTDProcessor(SymbolTable symbolTable,
XMLGrammarPool grammarPool) {
super(symbolTable, grammarPool);
} // init(SymbolTable, XMLGrammarPool)
XML11DTDProcessor(SymbolTable symbolTable,
XMLGrammarPool grammarPool, XMLErrorReporter errorReporter,
XMLEntityResolver entityResolver) {
super(symbolTable, grammarPool, errorReporter, entityResolver);
} // init(SymbolTable, XMLGrammarPool, XMLErrorReporter, XMLEntityResolver)
// overridden methods
protected boolean isValidNmtoken(String nmtoken) {
return XML11Char.isXML11ValidNmtoken(nmtoken);
} // isValidNmtoken(String): boolean
protected boolean isValidName(String name) {
return XML11Char.isXML11ValidName(name);
} // isValidNmtoken(String): boolean
} // class XML11DTDProcessor
1.1
xml-xerces/java/src/org/apache/xerces/impl/dtd/XML11DTDValidator.java
Index: XML11DTDValidator.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
*
* Copyright (c) 1999-2002 The Apache Software Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Xerces" and "Apache Software Foundation" must
* not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation and was
* originally based on software copyright (c) 1999, International
* Business Machines, Inc., http://www.apache.org. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.xerces.impl.dtd;
import org.apache.xerces.impl.Constants;
import org.apache.xerces.impl.dv.DatatypeValidator;
import org.apache.xerces.impl.dv.InvalidDatatypeValueException;
import org.apache.xerces.util.SymbolTable;
import org.apache.xerces.util.XML11Char;
import org.apache.xerces.xni.parser.XMLComponentManager;
/**
* This allows the validator to correctlyhandle XML 1.1
* documents.
*
* @author Neil Graham
* @version $Id: XML11DTDValidator.java,v 1.1 2002/12/07 00:18:53 neilg Exp $
*/
public class XML11DTDValidator extends XMLDTDValidator {
//
// Constants
//
protected final static String DTD_VALIDATOR_PROPERTY =
Constants.XERCES_PROPERTY_PREFIX+Constants.DTD_VALIDATOR_PROPERTY;
//
// Constructors
//
/** Default constructor. */
public XML11DTDValidator() {
super();
} // <init>()
// overridden so that this class has access to the same
// grammarBucket as the corresponding DTDProcessor
// will try and use...
public void reset(XMLComponentManager manager) {
XMLDTDValidator curr = null;
if((curr = (XMLDTDValidator)manager.getProperty(DTD_VALIDATOR_PROPERTY)) !=
null &&
curr != this) {
fGrammarBucket = curr.getGrammarBucket();
}
super.reset(manager);
} //reset(XMLComponentManager)
// returns whether a character is space according to the
// version of XML this validator supports.
protected boolean isSpace(int c) {
return XML11Char.isXML11Space(c);
} // isSpace(int): boolean
protected void init() {
if(fValidation) {
super.init();
// now overwrite some entries in parent:
try {
fValID = fDatatypeValidatorFactory.getBuiltInDV("XML11ID");
fValIDRef = fDatatypeValidatorFactory.getBuiltInDV("XML11IDREFS");
fValIDRefs = fDatatypeValidatorFactory.getBuiltInDV("XML11IDREFS");
fValNMTOKEN =
fDatatypeValidatorFactory.getBuiltInDV("XML11NMTOKENSymbol");
fValNMTOKENS =
fDatatypeValidatorFactory.getBuiltInDV("XML11NMTOKENS");
}
catch (Exception e) {
// should never happen
e.printStackTrace(System.err);
}
}
} // init()
} // class XML11DTDValidator
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]