You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by db...@apache.org on 2001/11/27 00:13:17 UTC

cvs commit: xml-xalan/c/src/XPath XalanQNameByValue.cpp XalanQNameByValue.hpp

dbertoni    01/11/26 15:13:17

  Modified:    c/src/XPath XalanQNameByValue.cpp XalanQNameByValue.hpp
  Log:
  Made constructor more flexible.
  
  Revision  Changes    Path
  1.3       +22 -12    xml-xalan/c/src/XPath/XalanQNameByValue.cpp
  
  Index: XalanQNameByValue.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XalanQNameByValue.cpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XalanQNameByValue.cpp	2001/09/26 20:58:46	1.2
  +++ XalanQNameByValue.cpp	2001/11/26 23:13:17	1.3
  @@ -145,14 +145,14 @@
   {
   	ElementPrefixResolverProxy	theProxy(namespaceContext, envSupport, domSupport);
   
  -	resolvePrefix(qname, theProxy);
  +	resolvePrefix(qname, &theProxy);
   }
   
   
   
   XalanQNameByValue::XalanQNameByValue(
   			const XalanDOMString&	qname,
  -			const PrefixResolver&	theResolver) :
  +			const PrefixResolver*	theResolver) :
   	m_namespace(),
   	m_localpart()
   {
  @@ -222,13 +222,17 @@
   void
   XalanQNameByValue::resolvePrefix(
   			const XalanDOMString&	qname,
  -			const PrefixResolver&	theResolver)
  +			const PrefixResolver*	theResolver)
   {
   	const XalanDOMString::size_type		indexOfNSSep = indexOf(qname, XalanUnicode::charColon);
   	const XalanDOMString::size_type		theLength = length(qname);
   
  -	if(indexOfNSSep < theLength)
  +	if(indexOfNSSep >= theLength)
   	{
  +		m_localpart = qname;
  +	}
  +	else
  +	{
   		const XalanDOMString	prefix = substring(qname, 0, indexOfNSSep);
   
   		if(::equals(prefix, DOMServices::s_XMLString))
  @@ -240,10 +244,17 @@
   		{
   			return;
   		}
  +		else if (theResolver == 0)
  +		{
  +			throw XSLException(
  +				TranscodeFromLocalCodePage("Unable to resolve prefix '") +
  +				prefix +
  +				TranscodeFromLocalCodePage("'"));
  +		}
   		else
   		{
   			const XalanDOMString* const		theNamespace =
  -				theResolver.getNamespaceForPrefix(prefix);
  +				theResolver->getNamespaceForPrefix(prefix);
   
   			if (theNamespace != 0)
   			{
  @@ -253,13 +264,12 @@
   
   		if(0 == length(m_namespace))
   		{
  -			throw XSLException(TranscodeFromLocalCodePage("Prefix must resolve to a namespace: ") + prefix);
  +			throw XSLException(
  +				TranscodeFromLocalCodePage("The prefix '") +
  +				 prefix +
  +				TranscodeFromLocalCodePage("' must resolve to a namespace."));
   		}
  -	}
  -	else
  -	{
  -		// $$$ ToDo: error or warning...
  -	}
   
  -	m_localpart = indexOfNSSep == theLength ? qname : substring(qname, indexOfNSSep + 1);
  +		m_localpart = substring(qname, indexOfNSSep + 1);
  +	}
   }
  
  
  
  1.3       +2 -2      xml-xalan/c/src/XPath/XalanQNameByValue.hpp
  
  Index: XalanQNameByValue.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XalanQNameByValue.hpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XalanQNameByValue.hpp	2001/09/14 20:04:46	1.2
  +++ XalanQNameByValue.hpp	2001/11/26 23:13:17	1.3
  @@ -154,7 +154,7 @@
   	 */
   	XalanQNameByValue(
   			const XalanDOMString&	qname,
  -			const PrefixResolver&	theResolver);
  +			const PrefixResolver*	theResolver = 0);
   
   	virtual
   	~XalanQNameByValue();
  @@ -217,7 +217,7 @@
   	void
   	resolvePrefix(
   			const XalanDOMString&	qname,
  -			const PrefixResolver&	theResolver);
  +			const PrefixResolver*	theResolver);
   
   	XalanDOMString	m_namespace;
   
  
  
  

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