<HTML><HEAD><TITLE>Xalan-C++ API Documentation</TITLE></HEAD> <BODY> <h2 align="center">Xalan-C++ API Documentation</h2> <h3 align="center">The Xalan C++ XSLT Processor Version 1.4</h3> </BODY> <!-- Generated by Doxygen 1.1.2 on Mon Sep 16 08:27:06 2002 --> <center> <a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="namespaces.html">Namespace List</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="classes.html">Alphabetical List</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> <a class="qindex" href="globals.html">File Members</a> </center> <hr><h1>XalanQName.hpp</h1><a href="XalanQName.hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 /* 00002 * The Apache Software License, Version 1.1 00003 * 00004 * 00005 * Copyright (c) 1999-2001 The Apache Software Foundation. All rights 00006 * reserved. 00007 * 00008 * Redistribution and use in source and binary forms, with or without 00009 * modification, are permitted provided that the following conditions 00010 * are met: 00011 * 00012 * 1. Redistributions of source code must retain the above copyright 00013 * notice, this list of conditions and the following disclaimer. 00014 * 00015 * 2. Redistributions in binary form must reproduce the above copyright 00016 * notice, this list of conditions and the following disclaimer in 00017 * the documentation and/or other materials provided with the 00018 * distribution. 00019 * 00020 * 3. The end-user documentation included with the redistribution, 00021 * if any, must include the following acknowledgment: 00022 * "This product includes software developed by the 00023 * Apache Software Foundation (http://www.apache.org/)." 00024 * Alternately, this acknowledgment may appear in the software itself, 00025 * if and wherever such third-party acknowledgments normally appear. 00026 * 00027 * 4. The names "Xalan" and "Apache Software Foundation" must 00028 * not be used to endorse or promote products derived from this 00029 * software without prior written permission. For written 00030 * permission, please contact apache@apache.org. 00031 * 00032 * 5. Products derived from this software may not be called "Apache", 00033 * nor may "Apache" appear in their name, without prior written 00034 * permission of the Apache Software Foundation. 00035 * 00036 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED 00037 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 00038 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00039 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR 00040 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 00041 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 00042 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 00043 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 00044 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 00045 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 00046 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 00047 * SUCH DAMAGE. 00048 * ==================================================================== 00049 * 00050 * This software consists of voluntary contributions made by many 00051 * individuals on behalf of the Apache Software Foundation and was 00052 * originally based on software copyright (c) 1999, International 00053 * Business Machines, Inc., http://www.ibm.com. For more 00054 * information on the Apache Software Foundation, please see 00055 * <http://www.apache.org/>. 00056 */ 00057 #if !defined(XALANQNAME_HEADER_GUARD_1357924680) <a name="l00058"><a class="code" href="XalanQName.hpp.html#a0">00058</a></a> #define XALANQNAME_HEADER_GUARD_1357924680 00059 00060 00061 00062 // Base header file. Must be first. 00063 #include <XPath/XPathDefinitions.hpp> 00064 00065 00066 00067 #include <deque> 00068 00069 00070 00071 #include <XalanDOM/XalanDOMString.hpp> 00072 00073 00074 00075 #include <PlatformSupport/DOMStringHelper.hpp> 00076 00077 00078 00079 #include <XPath/NameSpace.hpp> 00080 00081 00082 00083 class <a class="code" href="class_xalanelement.html">XalanElement</a>; 00084 class <a class="code" href="class_prefixresolver.html">PrefixResolver</a>; 00085 class <a class="code" href="class_xpathenvsupport.html">XPathEnvSupport</a>; 00086 00087 00088 <a name="l00101"><a class="code" href="class_xalanqname.html">00101</a></a> class XALAN_XPATH_EXPORT <a class="code" href="class_xalanqname.html">XalanQName</a> 00102 { 00103 public: 00104 00105 #if defined(XALAN_NO_NAMESPACES) 00106 typedef deque<<a class="code" href="class_namespace.html">NameSpace</a>> NamespaceVectorType; 00107 typedef deque<NamespaceVectorType> NamespacesStackType; 00108 #else <a name="l00109"><a class="code" href="class_xalanqname.html#s0">00109</a></a> typedef std::deque<<a class="code" href="class_namespace.html">NameSpace</a>> NamespaceVectorType; <a name="l00110"><a class="code" href="class_xalanqname.html#s1">00110</a></a> typedef std::deque<NamespaceVectorType> NamespacesStackType; 00111 #endif 00112 00117 explicit <a name="l00118"><a class="code" href="class_xalanqname.html#a0">00118</a></a> <a class="code" href="class_xalanqname.html#a0">XalanQName</a>() 00119 { 00120 } 00121 00122 virtual <a name="l00123"><a class="code" href="class_xalanqname.html#a1">00123</a></a> <a class="code" href="class_xalanqname.html#a1">~XalanQName</a>() 00124 { 00125 } 00126 00132 virtual const <a class="code" href="class_xalandomstring.html">XalanDOMString</a>& 00133 <a class="code" href="class_xalanqname.html#a2">getLocalPart</a>() const = 0; 00134 00140 virtual const <a class="code" href="class_xalandomstring.html">XalanDOMString</a>& 00141 <a class="code" href="class_xalanqname.html#a3">getNamespace</a>() const = 0; 00142 00148 bool <a name="l00149"><a class="code" href="class_xalanqname.html#a4">00149</a></a> <a class="code" href="class_xalanqname.html#a4">isValid</a>() const 00150 { 00151 return <a class="code" href="class_xalanqname.html#d4">isValidNCName</a>(<a class="code" href="class_xalanqname.html#a2">getLocalPart</a>()); 00152 } 00153 00159 bool <a name="l00160"><a class="code" href="class_xalanqname.html#a5">00160</a></a> <a class="code" href="class_xalanqname.html#a5">isEmpty</a>() const 00161 { 00162 return ::isEmpty(<a class="code" href="class_xalanqname.html#a3">getNamespace</a>()) &&<a class="code" href="class_xalanqname.html#a5"> ::isEmpty</a>(<a class="code" href="class_xalanqname.html#a2">getLocalPart</a>()); 00163 } 00164 00172 bool <a name="l00173"><a class="code" href="class_xalanqname.html#a6">00173</a></a> <a class="code" href="class_xalanqname.html#a6">equals</a>(const <a class="code" href="class_xalanqname.html">XalanQName</a>& theRHS) const 00174 { 00175 // Note that we do not use our member variables here. See 00176 // class QNameReference for details... 00177 return ::equals(<a class="code" href="class_xalanqname.html#a2">getLocalPart</a>(), theRHS.getLocalPart()) &&<a class="code" href="class_xalanqname.html#a6"> </a> 00178 <a class="code" href="class_xalanqname.html#a6"> ::equals</a>(<a class="code" href="class_xalanqname.html#a3">getNamespace</a>(), theRHS.getNamespace()); 00179 } 00180 00189 static const <a class="code" href="class_xalandomstring.html">XalanDOMString</a>* 00190 <a class="code" href="class_xalanqname.html#d0">getNamespaceForPrefix</a>( 00191 const NamespaceVectorType& namespaces, 00192 const <a class="code" href="class_xalandomstring.html">XalanDOMString</a>& prefix, 00193 bool reverse = true); 00194 00204 static const <a class="code" href="class_xalandomstring.html">XalanDOMString</a>* 00205 <a class="code" href="class_xalanqname.html#d0">getNamespaceForPrefix</a>( 00206 const NamespacesStackType& nsStack, 00207 const <a class="code" href="class_xalandomstring.html">XalanDOMString</a>& prefix, 00208 bool reverse = true); 00209 00218 static const <a class="code" href="class_xalandomstring.html">XalanDOMString</a>* 00219 <a class="code" href="class_xalanqname.html#d2">getPrefixForNamespace</a>( 00220 const NamespaceVectorType& namespaces, 00221 const <a class="code" href="class_xalandomstring.html">XalanDOMString</a>& uri, 00222 bool reverse = true); 00223 00233 static const <a class="code" href="class_xalandomstring.html">XalanDOMString</a>* 00234 <a class="code" href="class_xalanqname.html#d2">getPrefixForNamespace</a>( 00235 const NamespacesStackType& nsStack, 00236 const <a class="code" href="class_xalandomstring.html">XalanDOMString</a>& uri, 00237 bool reverse = true); 00238 00246 static bool 00247 <a class="code" href="class_xalanqname.html#d4">isValidNCName</a>(const <a class="code" href="class_xalandomstring.html">XalanDOMString</a>& theNCName); 00248 00257 static bool 00258 <a class="code" href="class_xalanqname.html#d4">isValidNCName</a>( 00259 const XalanDOMChar* theNCName, 00260 XalanDOMString::size_type theLength = XalanDOMString::npos); 00261 00270 static bool 00271 <a class="code" href="class_xalanqname.html#d6">isValidQName</a>(const <a class="code" href="class_xalandomstring.html">XalanDOMString</a>& theQName); 00272 00282 static bool 00283 <a class="code" href="class_xalanqname.html#d6">isValidQName</a>( 00284 const XalanDOMChar* theQName, 00285 XalanDOMString::size_type theLength = XalanDOMString::npos); 00286 00287 protected: 00288 <a name="l00289"><a class="code" href="class_xalanqname.html#q0">00289</a></a> static const <a class="code" href="class_xalandomstring.html">XalanDOMString</a> s_emptyString; 00290 }; 00291 00292 00293 00294 inline bool <a name="l00295"><a class="code" href="XalanQName.hpp.html#a1">00295</a></a> operator==( 00296 const <a class="code" href="class_xalanqname.html">XalanQName</a>& theLHS, 00297 const <a class="code" href="class_xalanqname.html">XalanQName</a>& theRHS) 00298 { 00299 return theLHS.<a class="code" href="class_xalanqname.html#a6">equals</a>(theRHS); 00300 } 00301 00302 00303 00304 inline bool <a name="l00305"><a class="code" href="XalanQName.hpp.html#a2">00305</a></a> operator!=( 00306 const <a class="code" href="class_xalanqname.html">XalanQName</a>& theLHS, 00307 const <a class="code" href="class_xalanqname.html">XalanQName</a>& theRHS) 00308 { 00309 return !(theLHS == theRHS); 00310 } 00311 00312 00313 00314 inline bool <a name="l00315"><a class="code" href="XalanQName.hpp.html#a3">00315</a></a> operator<( 00316 const <a class="code" href="class_xalanqname.html">XalanQName</a>& theLHS, 00317 const <a class="code" href="class_xalanqname.html">XalanQName</a>& theRHS) 00318 { 00319 if (theLHS.<a class="code" href="class_xalanqname.html#a3">getNamespace</a>() < theRHS.getNamespace()) 00320 { 00321 return true; 00322 } 00323 else if (<a class="code" href="DOMStringHelper.hpp.html#a64">equals</a>(theLHS.<a class="code" href="class_xalanqname.html#a3">getNamespace</a>(), theRHS.getNamespace())) 00324 { 00325 return theLHS.<a class="code" href="class_xalanqname.html#a2">getLocalPart</a>() < theRHS.getLocalPart(); 00326 } 00327 else 00328 { 00329 return false; 00330 } 00331 } 00332 00333 00334 00335 #endif // XALANQNAME_HEADER_GUARD_1357924680 </div></pre><p align="center"><a href="diagramnotes.html">Interpreting class diagrams</a></p> <p><FONT color="#000000" face="arial,helvetica,sanserif" size="-1"> <i><A href="http://www.stack.nl/~dimitri/doxygen/">Doxygen</A> and <A href="http://www.research.att.com/sw/tools/graphviz/">GraphViz</A> are used to generate this API documentation from the Xalan-C header files.</I></FONT></p> <TABLE border="0" cellpadding="0" cellspacing="0" width="820"><TR><TD bgcolor="#0086b2"><IMG height="1" src="images/dot.gif" width="1"></TD></TR></TABLE> <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="80%"> <TR> <TD WIDTH="80%" VALIGN="TOP"> <P ALIGN="CENTER"><B>Xalan-C++ XSLT Processor Version 1.4</B><BR> Copyright © 2000, 2001, 2002 The Apache Software Foundation. All Rights Reserved.</i></p> </TD> </TR> <TR> <TD WIDTH="100%"> <P ALIGN="CENTER"><IMG SRC="ApacheLogo.jpg" WIDTH="387" HEIGHT="100" ALIGN="BOTTOM" BORDER="0"> </TD> </TR> </TABLE>