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]

Reply via email to