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]