You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by ca...@apache.org on 2007/06/09 14:46:19 UTC

svn commit: r545739 - /xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/AbstractStringValidator.cpp

Author: cargilld
Date: Sat Jun  9 05:46:18 2007
New Revision: 545739

URL: http://svn.apache.org/viewvc?view=rev&rev=545739
Log:
Apply base whitespace facet to enumeration values.  Patch from Gilbert Chan.

Modified:
    xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/AbstractStringValidator.cpp

Modified: xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/AbstractStringValidator.cpp
URL: http://svn.apache.org/viewvc/xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/AbstractStringValidator.cpp?view=diff&rev=545739&r1=545738&r2=545739
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/AbstractStringValidator.cpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/AbstractStringValidator.cpp Sat Jun  9 05:46:18 2007
@@ -644,10 +644,39 @@
 	return getEnumeration();
 }
 
-void AbstractStringValidator::normalizeEnumeration(MemoryManager* const)
+void AbstractStringValidator::normalizeEnumeration(MemoryManager* const manager)
 {
-    // default implementation: do nothing
-    return;
+    AbstractStringValidator *pBaseValidator = (AbstractStringValidator*) getBaseValidator();    
+
+    if (!fEnumeration || !pBaseValidator) 
+        return;
+
+    int baseFacetsDefined = pBaseValidator->getFacetsDefined();
+    if ((baseFacetsDefined & DatatypeValidator::FACET_WHITESPACE) == 0)
+        return;    
+    
+    short whiteSpace = pBaseValidator->getWSFacet();   
+            
+    if ( whiteSpace == DatatypeValidator::PRESERVE )
+    {
+        return;
+    }
+    else if ( whiteSpace == DatatypeValidator::REPLACE )
+    {
+        int enumLength = getEnumeration()->size();
+        for ( int i=0; i < enumLength; i++)
+        {
+            XMLString::replaceWS(getEnumeration()->elementAt(i), manager);
+        }
+    }
+    else if ( whiteSpace == DatatypeValidator::COLLAPSE )
+    {
+        int enumLength = getEnumeration()->size();
+        for ( int i=0; i < enumLength; i++)
+        {
+            XMLString::collapseWS(getEnumeration()->elementAt(i), manager);
+        }                
+    }   
 }
 
 void AbstractStringValidator::normalizeContent(XMLCh* const, MemoryManager* const) const



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