neilg 2002/12/06 16:20:56
Modified: java/src/org/apache/xerces/impl/dv/dtd DTDDVFactoryImpl.java
Added: java/src/org/apache/xerces/impl/dv/dtd
XML11DTDDVFactoryImpl.java
XML11IDDatatypeValidator.java
XML11IDREFDatatypeValidator.java
XML11NMTOKENDatatypeValidator.java
Log:
to properly support XML 1.1 in DTD datatype validation code, it is necessary to
implement a new factory which calls out specific XML 1.1 validators for NMTOKEN,
NMTOKENS, ID, IDREF, and IDREFS
Revision Changes Path
1.4 +3 -2
xml-xerces/java/src/org/apache/xerces/impl/dv/dtd/DTDDVFactoryImpl.java
Index: DTDDVFactoryImpl.java
===================================================================
RCS file:
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dv/dtd/DTDDVFactoryImpl.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DTDDVFactoryImpl.java 16 May 2002 18:25:53 -0000 1.3
+++ DTDDVFactoryImpl.java 7 Dec 2002 00:20:55 -0000 1.4
@@ -114,4 +114,5 @@
}//createBuiltInTypes()
-}//SchemaDVFactory
+}// DTDDVFactoryImpl
+
1.1
xml-xerces/java/src/org/apache/xerces/impl/dv/dtd/XML11DTDDVFactoryImpl.java
Index: XML11DTDDVFactoryImpl.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
*
* Copyright (c) 2001, 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) 2001, 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.dv.dtd;
import org.apache.xerces.impl.dv.DTDDVFactory;
import org.apache.xerces.impl.dv.DatatypeValidator;
import java.util.Hashtable;
import java.util.Enumeration;
/**
* the factory to create/return built-in XML 1.1 DVs and create user-defined DVs
*
* @author Neil Graham, IBM
*
* @version $Id: XML11DTDDVFactoryImpl.java,v 1.1 2002/12/07 00:20:55 neilg Exp $
*/
public class XML11DTDDVFactoryImpl extends DTDDVFactoryImpl {
static Hashtable fXML11BuiltInTypes = new Hashtable();
/**
* return a dtd type of the given name
* This will call the super class if and only if it does not
* recognize the passed-in name.
*
* @param name the name of the datatype
* @return the datatype validator of the given name
*/
public DatatypeValidator getBuiltInDV(String name) {
if(fXML11BuiltInTypes.get(name) != null) {
return (DatatypeValidator)fXML11BuiltInTypes.get(name);
}
return (DatatypeValidator)fBuiltInTypes.get(name);
}
/**
* get all built-in DVs, which are stored in a hashtable keyed by the name
* New XML 1.1 datatypes are inserted.
*
* @return a hashtable which contains all datatypes
*/
public Hashtable getBuiltInTypes() {
Hashtable toReturn = (Hashtable)fBuiltInTypes.clone();
Enumeration xml11Keys = fXML11BuiltInTypes.keys();
while (xml11Keys.hasMoreElements()) {
Object key = xml11Keys.nextElement();
toReturn.put(key, fXML11BuiltInTypes.get(key));
}
return toReturn;
}
static {
fXML11BuiltInTypes.put("XML11ID", new XML11IDDatatypeValidator());
DatatypeValidator dvTemp = new XML11IDREFDatatypeValidator();
fXML11BuiltInTypes.put("XML11IDREF", dvTemp);
fXML11BuiltInTypes.put("XML11IDREFS", new ListDatatypeValidator(dvTemp));
dvTemp = new XML11NMTOKENDatatypeValidator();
fXML11BuiltInTypes.put("XML11NMTOKEN", dvTemp);
fXML11BuiltInTypes.put("XML11NMTOKENS", new ListDatatypeValidator(dvTemp));
} // <clinit>
}//XML11DTDDVFactoryImpl
1.1
xml-xerces/java/src/org/apache/xerces/impl/dv/dtd/XML11IDDatatypeValidator.java
Index: XML11IDDatatypeValidator.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.dv.dtd;
import org.apache.xerces.impl.dv.*;
import org.apache.xerces.util.XML11Char;
/**
* <P>IDDatatypeValidator - ID represents the ID attribute
* type from XML 1.1 Recommendation. The value space
* of ID is the set of all strings that match the
* NCName production and have been used in an XML
* document. The lexical space of ID is the set of all
* strings that match the NCName production.</P>
* <P>The value space of ID is scoped to a specific
* instance document.</P>
* <P>The following constraint applies:
* An ID must not appear more than once in an XML
* document as a value of this type; i.e., ID values
* must uniquely identify the elements which bear
* them.</P>
*
* @author Jeffrey Rodriguez, IBM
* @author Sandy Gao, IBM
* @author Neil Graham, IBM
*
* @version $Id: XML11IDDatatypeValidator.java,v 1.1 2002/12/07 00:20:55 neilg Exp $
*/
public class XML11IDDatatypeValidator extends IDDatatypeValidator {
// construct an ID datatype validator
public XML11IDDatatypeValidator() {
super();
}
/**
* Checks that "content" string is valid ID value.
* If invalid a Datatype validation exception is thrown.
*
* @param content the string value that needs to be validated
* @param context the validation context
* @throws InvalidDatatypeException if the content is
* invalid according to the rules for the validators
* @see InvalidDatatypeValueException
*/
public void validate(String content, ValidationContext context) throws
InvalidDatatypeValueException {
//Check if is valid key-[81] EncName ::= [A-Za-z] ([A-Za-z0-9._] | '-')*
if (!XML11Char.isXML11ValidName(content)) {
throw new InvalidDatatypeValueException("IDInvalid", new
Object[]{content});
}
if (context.isIdDeclared(content)) {
throw new InvalidDatatypeValueException("IDNotUnique", new
Object[]{content});
}
context.addId(content);
}
}
1.1
xml-xerces/java/src/org/apache/xerces/impl/dv/dtd/XML11IDREFDatatypeValidator.java
Index: XML11IDREFDatatypeValidator.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.dv.dtd;
import org.apache.xerces.impl.dv.*;
import org.apache.xerces.util.XML11Char;
/**
* <P>IDREFDatatypeValidator - represents the IDREFS
* attribute type from XML 1.1 recommendation. The
* Value Space of IDREF is the set of all strings
* that match the NCName production and have been
* used in an XML Document as the value of an element
* or attribute of Type ID. The Lexical space of
* IDREF is the set of strings that match the NCName
* production.</P>
* <P>The Value space of IDREF is scoped to a specific
* instance document</P>
*
* @author Jeffrey Rodriguez, IBM
* @author Sandy Gao, IBM
* @author Neil Graham, IBM
*
* @version $Id: XML11IDREFDatatypeValidator.java,v 1.1 2002/12/07 00:20:55 neilg
Exp $
*/
public class XML11IDREFDatatypeValidator extends IDREFDatatypeValidator {
// construct an IDREF datatype validator
public XML11IDREFDatatypeValidator() {
super();
}
/**
* Checks that "content" string is valid IDREF value.
* If invalid a Datatype validation exception is thrown.
*
* @param content the string value that needs to be validated
* @param context the validation context
* @throws InvalidDatatypeException if the content is
* invalid according to the rules for the validators
* @see InvalidDatatypeValueException
*/
public void validate(String content, ValidationContext context) throws
InvalidDatatypeValueException {
//Check if is valid key-[81] EncName ::= [A-Za-z] ([A-Za-z0-9._] | '-')*
if (!XML11Char.isXML11ValidName(content)) {
throw new InvalidDatatypeValueException("IDREFInvalid", new
Object[]{content});
}
context.addIdRef(content);
}
}
1.1
xml-xerces/java/src/org/apache/xerces/impl/dv/dtd/XML11NMTOKENDatatypeValidator.java
Index: XML11NMTOKENDatatypeValidator.java
===================================================================
/*
:q
* 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.dv.dtd;
import org.apache.xerces.impl.dv.*;
import org.apache.xerces.util.XML11Char;
/**
* NMTOKEN datatype validator for NMTokens from XML 1.1.
*
* @author Jeffrey Rodriguez, IBM
* @author Sandy Gao, IBM
* @author Neil Graham, IBM
*
* @version $Id: XML11NMTOKENDatatypeValidator.java,v 1.1 2002/12/07 00:20:55 neilg
Exp $
*/
public class XML11NMTOKENDatatypeValidator extends NMTOKENDatatypeValidator {
// construct a NMTOKEN datatype validator
public XML11NMTOKENDatatypeValidator() {
super();
}
/**
* Checks that "content" string is valid NMTOKEN value.
* If invalid a Datatype validation exception is thrown.
*
* @param content the string value that needs to be validated
* @param context the validation context
* @throws InvalidDatatypeException if the content is
* invalid according to the rules for the validators
* @see InvalidDatatypeValueException
*/
public void validate(String content, ValidationContext context) throws
InvalidDatatypeValueException {
if (!XML11Char.isXML11ValidNmtoken(content)) {
throw new InvalidDatatypeValueException("NMTOKENInvalid", new
Object[]{content});
}
}
} // class XML11NMTOKENDatatypeValidator
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]