You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by pe...@apache.org on 2001/07/06 22:28:01 UTC

cvs commit: xml-xerces/c/src/util XMLString.cpp XMLString.hpp

peiyongz    01/07/06 13:28:01

  Modified:    c/src/util XMLString.cpp XMLString.hpp
  Log:
  isValidaQName()
  
  Revision  Changes    Path
  1.25      +41 -1     xml-xerces/c/src/util/XMLString.cpp
  
  Index: XMLString.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/util/XMLString.cpp,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- XMLString.cpp	2001/07/04 14:38:19	1.24
  +++ XMLString.cpp	2001/07/06 20:27:56	1.25
  @@ -55,7 +55,7 @@
    */
   
   /*
  - * $Id: XMLString.cpp,v 1.24 2001/07/04 14:38:19 peiyongz Exp $
  + * $Id: XMLString.cpp,v 1.25 2001/07/06 20:27:56 peiyongz Exp $
    */
   
   
  @@ -697,6 +697,46 @@
       }
   
       return true;
  +}
  +
  +/**
  +  * isValidQName
  +  *
  +  * [6]  QName ::=  (Prefix ':')? LocalPart 
  +  * [7]  Prefix ::=  NCName 
  +  * [8]  LocalPart ::=  NCName 
  +  *
  +  */
  +bool XMLString::isValidQName(const XMLCh* const name)
  +{
  +    if (!name)
  +        return false;
  +
  +    int strLen = XMLString::stringLen(name);
  +    if (strLen == 0)
  +        return false;
  +
  +    int colonPos = XMLString::indexOf(name, chColon);
  +    if ((colonPos == 0) ||         // ":abcd"
  +        (colonPos == strLen-1))    // "abcd:"
  +        return false;
  +
  +    //
  +    // prefix
  +    //
  +    if (colonPos != -1)
  +    {
  +        XMLCh *prefix = new XMLCh[colonPos+1];
  +        XMLString::subString(prefix, name, 0, colonPos-1);
  +        ArrayJanitor<XMLCh> janName(prefix);
  +        if (XMLString::isValidNCName(prefix)==false)
  +            return false;
  +    }
  +
  +    //
  +    // LocalPart
  +    //
  +    return XMLString::isValidNCName(name+colonPos+1);
   }
   
   bool XMLString::isAlpha(XMLCh const theChar)
  
  
  
  1.25      +12 -0     xml-xerces/c/src/util/XMLString.hpp
  
  Index: XMLString.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/util/XMLString.hpp,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- XMLString.hpp	2001/07/04 14:38:20	1.24
  +++ XMLString.hpp	2001/07/06 20:27:57	1.25
  @@ -56,6 +56,9 @@
   
   /*
    * $Log: XMLString.hpp,v $
  + * Revision 1.25  2001/07/06 20:27:57  peiyongz
  + * isValidaQName()
  + *
    * Revision 1.24  2001/07/04 14:38:20  peiyongz
    * IDDatatypeValidator: created
    * DatatypeValidatorFactory: IDDTV enabled
  @@ -1046,6 +1049,13 @@
         * @return Returns true if name is EncName valid, otherwise false
         */
       static bool isValidEncName(const XMLCh* const name);  
  +
  +    /**
  +      * Checks whether an name is a valid QName.
  +      * @param name The string to check its QName validity
  +      * @return Returns true if name is QName valid, otherwise false
  +      */
  +    static bool isValidQName(const XMLCh* const name);  
   
       /**
         * Checks whether a character is within [a-zA-Z].
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org