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