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