Home > Support > Documentation

osrtxml.h

Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 2003-2008 by Objective Systems, Inc.
00003  *
00004  * This software is furnished under a license and may be used and copied
00005  * only in accordance with the terms of such license and with the
00006  * inclusion of the above copyright notice. This software or any other
00007  * copies thereof may not be provided or otherwise made available to any
00008  * other person. No title to and ownership of the software is hereby
00009  * transferred.
00010  *
00011  * The information in this software is subject to change without notice
00012  * and should not be construed as a commitment by Objective Systems, Inc.
00013  *
00014  * PROPRIETARY NOTICE
00015  *
00016  * This software is an unpublished work subject to a confidentiality agreement
00017  * and is protected by copyright and trade secret law.  Unauthorized copying,
00018  * redistribution or other use of this work is prohibited.
00019  *
00020  * The above notice of copyright on this source code product does not indicate
00021  * any actual or intended publication of such source code.
00022  *
00023  *****************************************************************************/
00024 
00043 #ifndef _OSRTXML_H_
00044 #define _OSRTXML_H_
00045 
00046 #define OSXMLNS12
00047 
00048 #include "rtxsrc/rtxCommon.h"
00049 #include "rtxmlsrc/rtSaxDefs.h"
00050 #include "rtxsrc/rtxDList.h"
00051 #include "rtxsrc/rtxMemBuf.h"
00052 #include "rtxmlsrc/rtXmlExternDefs.h"
00053 #include "rtxmlsrc/rtXmlErrCodes.h"
00054 #include "rtxmlsrc/rtXmlNamespace.h"
00055 
00056 /* XML specific context flags */
00057 
00058 #define OSUPCASE        0x00008000  /* convert characters to upper case */
00059 #define OSTERMSTART     0x00004000  /* term for start elem (>) needed   */
00060 #define OSEMPTYELEM     0x00002000  /* element is empty (no content)    */
00061 #define OSQUALATTR      0x00001000  /* qualified attribute              */
00062 #define OSXMLFRAG       0x00000800  /* XML fragment (not full doc)      */
00063 #define OSXMLNSSET      0x00000400  /* Indicates namespaces are set     */
00064 #define OSXMLC14N       0x00000200  /* XML canonical encode (C14N) flag */
00065 #define OSXSIATTR       0x00000100  /* add xsi ns decl to encoded msg   */
00066 
00067 typedef enum { 
00068    OSXMLUTF8, 
00069    OSXMLUTF16
00070 } OSXMLEncoding;
00071 
00072 typedef enum { 
00073    OSSOAPNONE, OSSOAPHEADER, OSSOAPBODY, OSSOAPFAULT
00074 } OSXMLSOAPMsgType;
00075 
00076 typedef enum {
00077    OSXMLBOM_NO_BOM,
00078    OSXMLBOM_UTF32_BE,
00079    OSXMLBOM_UTF32_LE,
00080    OSXMLBOM_UTF16_BE,
00081    OSXMLBOM_UTF16_LE,
00082    OSXMLBOM_UTF8
00083 } OSXMLBOM;
00084 
00085 typedef struct OSXMLFacets {
00086    int totalDigits;
00087    int fractionDigits;
00088 } OSXMLFacets;
00089 
00090 typedef struct {
00091    const OSUTF8CHAR* value;
00092    size_t length;
00093 } OSXMLStrFragment;
00094 
00095 typedef struct {
00096    OSXMLStrFragment mQName;
00097    OSXMLStrFragment mLocalName;
00098    OSXMLStrFragment mPrefix;
00099 } OSXMLNameFragments;
00100 
00101 typedef struct OSXMLItemDescr {
00102    OSXMLStrFragment localName;
00103    OSINT16 nsidx; /* namespace index */
00104 } OSXMLItemDescr;
00105 
00106 typedef OSXMLItemDescr OSXMLAttrDescr;
00107 typedef OSXMLItemDescr OSXMLElemDescr;
00108 
00109 typedef struct OSXMLElemIDRec {
00110    OSXMLElemDescr descr;
00111    OSUINT16 id;
00112 } OSXMLElemIDRec;
00113 
00114 typedef struct OSXMLGroupDesc {
00115    int row;
00116    int num;
00117    int anyCase;
00118 } OSXMLGroupDesc;
00119 
00120 typedef struct OSXSDAnyType {
00121    OSXMLSTRING value;
00122    OSRTDList attrs;
00123 } OSXSDAnyType;
00124 
00125 #define OSXMLFRAGSEQUAL(frag1,frag2) \
00126 (frag1.length==frag2.length && !memcmp(frag1.value,frag2.value,frag1.length))
00127 
00128 #define OSXMLQNAMEEQUALS(xnamefrag,qnametext) rtxUTF8StrnEqual \
00129 (xnamefrag.mQName.value, OSUTF8(qnametext), xnamefrag.mQName.length)
00130 
00131 #define OSXMLSETUTF8DECPTR(pctxt,str) \
00132 rtxInitContextBuffer (pctxt, OSRTSAFECONSTCAST (OSOCTET*, str), \
00133 OSUTF8LEN (str))
00134 
00135 #define IS_XMLNSATTR(name) \
00136 ((OSUTF8LEN(name) >= 5) && name[0] == 'x' && name[1] == 'm' && \
00137  name[2] == 'l' && name[3] == 'n' && name[4] == 's')
00138 
00139 #define IS_XSIATTR(name) \
00140 ((OSUTF8LEN(name) >= 4) && name[0] == 'x' && name[1] == 's' && \
00141  name[2] == 'i' && name[3] == ':')
00142 
00143 /*
00144  * NOTE: If a field is added to this structure, make sure to add code to 
00145  * to rtXmlInitCtxtAppInfo in rtXmlContext.c to initialize it.
00146  */
00147 typedef struct {
00148    OSFreeCtxtAppInfoPtr  pFreeFunc; /* Free function pointer            */
00149    OSResetCtxtAppInfoPtr pResetFunc;/* Reset function pointer           */
00150    OSUTF8CHAR* schemaLocation;  /* xsi:schemaLocation attribute         */
00151    OSUTF8CHAR* noNSSchemaLoc;   /* xsi:noNamespaceSchemaLocation attr   */
00152    OSUTF8CHAR* xsiTypeAttr;     /* xsi:type attribute value             */
00153    OSXMLEncoding encoding;      /* XML document encoding (ex. UTF-8)    */
00154    OSRTDList namespaceList;     /* list of OSXMLNamespace               */
00155    OSRTDList encodedNSList;     /* list of encoded OSXMLNamespace       */
00156    OSRTDList sortedAttrList;    /* list of sorted attributes            */
00157    OSXMLNSPfxLinkStack nsPfxLinkStack;
00158    OSXMLNSURITable nsURITable;
00159    OSRTMEMBUF  memBuf;          /* memory buffer for character method   */
00160    OSINT32 mSaxLevel;
00161    OSINT32 mSkipLevel;
00162    OSUINT32 maxSaxErrors;       /* maximum number of errors             */
00163    OSUINT32 errorsCnt;          /* counter of errors                    */
00164    OSUINT8 indent;              /* XML output indent                    */
00165    OSBOOL  mbCdataProcessed;    /* CDATA section was processed          */
00166    char    indentChar;          /* indent char, default is space (' ')  */
00167    OSUINT8 soapVersion;         /* SOAP version (11 or 12)              */
00168    OSXMLFacets facets;
00169    const OSUTF8CHAR* encodingStr;/* name of encoding ("UTF-8", "ISO-...")*/
00170    OSXMLBOM byteOrderMark;   
00171    struct OSXMLReader* pXmlPPReader; /* pull-parser reader object       */
00172    /* fields for encode canonical XML*/
00173    OSRTBuffer savedBuffer;
00174    OSRTFLAGS savedFlags;
00175    OSOCTET* attrsBuff;
00176    size_t attrsBuffSize;
00177    size_t attrStartPos;
00178 } OSXMLCtxtInfo;
00179 
00180 typedef enum { 
00181    OSXMLINIT, 
00182    OSXMLHEADER, 
00183    OSXMLSTART, 
00184    OSXMLATTR,
00185    OSXMLDATA, 
00186    OSXMLEND
00187 } OSXMLState;
00188 
00189 typedef struct OSXMLQName {
00190    const OSUTF8CHAR* nsPrefix;
00191    const OSUTF8CHAR* ncName;
00192 } OSXMLQName;
00193 
00194 struct OSSAXHandlerBase;
00195 
00196 typedef struct OSIntegerFmt {
00197    OSINT8 integerMaxDigits;   /* Maximum digits in integer part; 
00198                                  leading zeros will be added, if necessary. */
00199    OSBOOL signPresent;        /* Indicates, sign must present, even if value 
00200                                  is positive. */
00201 } OSIntegerFmt;
00202 
00203 typedef struct OSDecimalFmt {
00204    OSINT8 totalDigits;        /* total significiant digits */
00205    OSINT8 fractionDigits;     /* maximum signficiant digits in fraction, 
00206                                  precision */
00207    OSINT8 fractionMinDigits;  /* minimum digits in fraction, if 
00208                                  fraction digits less than this value 
00209                                  trailing zeros will be added. */
00210    OSINT8 integerMaxDigits;   /* Maximum digits in integer part; if it is 0 
00211                                  and integer part is 0 then integer part 
00212                                  will be omitted, like .3, or -.3 */
00213    OSINT8 integerMinDigits;   /* Minimum digits in integer part, leading zeros
00214                                  will be added if necessary. */
00215    OSBOOL signPresent;        /* Indicates, sign must present, even if value 
00216                                  is positive. */
00217    OSBOOL pointPresent;       /* Indicates, decimal point must present, even 
00218                                  if value's fraction is 0 */
00219    OSUINT8 nPatterns;         /* number of patterns stored in 'patterns' */
00220    const char* const* patterns; /* patterns, used to verify value format is 
00221                                  correct */
00222 } OSDecimalFmt;
00223 
00224 typedef struct OSDoubleFmt {
00225    OSINT8 totalDigits;        /* total significiant digits */
00226    OSINT8 fractionDigits;     /* maximum signficiant digits in fraction, 
00227                                  precision */
00228    OSINT8 fractionMinDigits;  /* minimum digits in fraction, if 
00229                                  fraction digits less than this value 
00230                                  trailing zeros will be added. */
00231    OSINT8 integerMaxDigits;   /* Maximum digits in integer part; if it is 0 
00232                                  and integer part is 0 then integer part 
00233                                  will be omitted, like .3, or -.3 */
00234    OSINT8 integerMinDigits;   /* Minimum digits in integer part, leading zeros
00235                                  will be added if necessary. */
00236    OSINT8 expSymbol;          /* 'E' or 'e' only; 0 if no exp is expected, 
00237                                  -1 - default ('E') */
00238    OSINT16 expMinValue;       /* Minimum exponent value. By default - -infinity */
00239    OSINT16 expMaxValue;       /* Maximum exponent value. By default - infinity */
00240    OSINT8 expDigits;          /* Total digits in exponent part; if exponent's
00241                                  value is not enough, trailing zeros will be
00242                                  added */
00243    OSBOOL signPresent;        /* Indicates, sign must present, even if value 
00244                                  is positive. */
00245    OSBOOL pointPresent;       /* Indicates, decimal point must present, even 
00246                                  if value's fraction is 0 */
00247    OSBOOL expPresent;         /* Indicates, exponent must present, even 
00248                                  if its value is 0 */
00249    OSBOOL expSignPresent;     /* Indicates, exponent sign must present, even 
00250                                  if its value is > 0 */
00251 } OSDoubleFmt;
00252 
00253 typedef struct {
00254    size_t offset;
00255    size_t length;
00256    size_t prefixLength;
00257    size_t nameLength;
00258 } OSXMLSortedAttrOffset;
00259 
00260 #define OSXMLINDENT     3
00261 
00262 #ifdef XML_UNICODE
00263 #define rtXmlErrAddStrParm rtxErrAddUniStrParm
00264 #else
00265 #define rtXmlErrAddStrParm rtxErrAddStrParm
00266 #endif
00267 
00271 typedef enum {
00272    OSXMLWSM_PRESERVE = 0,
00273    OSXMLWSM_REPLACE,
00274    OSXMLWSM_COLLAPSE
00275 } OSXMLWhiteSpaceMode;
00276 
00277 #ifdef __cplusplus
00278 extern "C" {
00279 #endif
00280 
00281 /* run-time XML function prototypes */
00282 
00289 EXTERNXML int rtXmlInitContext (OSCTXT* pctxt);
00290 
00297 EXTERNXML int rtXmlInitCtxtAppInfo (OSCTXT* pctxt);
00298 
00309 EXTERNXML int rtXmlCreateFileInputSource (OSCTXT* pctxt, const char* filepath);
00310 
00311 EXTERNXML OSBOOL rtXmlCmpQName 
00312 (const OSUTF8CHAR* qname1, const OSUTF8CHAR* name2, const OSUTF8CHAR* nsPrefix2);
00313 
00314 EXTERNXML int rtXmlGetBase64StrDecodedLen 
00315    (const OSUTF8CHAR* inpdata, size_t srcDataSize, 
00316     size_t* pNumOcts, size_t* pSrcDataLen);
00317 
00338 EXTERNXML int rtXmlDecBase64Binary (OSRTMEMBUF* pMemBuf, 
00339                                     const OSUTF8CHAR* inpdata, 
00340                                     int length);
00341 
00365 EXTERNXML int rtXmlDecBase64Str (OSCTXT* pctxt, 
00366                                  OSOCTET* pvalue, OSUINT32* pnocts, 
00367                                  OSINT32 bufsize);
00368 
00394 EXTERNXML int rtXmlDecBase64StrValue (OSCTXT* pctxt, 
00395                                       OSOCTET* pvalue, OSUINT32* pnocts, 
00396                                       size_t bufSize, size_t srcDataLen);
00397 
00419 EXTERNXML int rtXmlDecBigInt 
00420 (OSCTXT* pctxt, const OSUTF8CHAR** ppvalue);
00421 
00432 EXTERNXML int rtXmlDecBool (OSCTXT* pctxt, OSBOOL* pvalue);
00433 
00446 EXTERNXML int rtXmlDecDate (OSCTXT* pctxt, OSXSDDateTime* pvalue);
00447 
00466 EXTERNXML int rtXmlDecTime (OSCTXT* pctxt, OSXSDDateTime* pvalue);
00467 
00480 EXTERNXML int rtXmlDecDateTime (OSCTXT* pctxt, OSXSDDateTime* pvalue);
00481 
00494 EXTERNXML int rtXmlDecDecimal (OSCTXT* pctxt, OSREAL* pvalue);
00495 
00508 EXTERNXML int rtXmlDecDouble (OSCTXT* pctxt, OSREAL* pvalue);
00509 
00526 EXTERNXML int rtXmlDecDynBase64Str (OSCTXT* pctxt, OSDynOctStr* pvalue);
00527 
00543 EXTERNXML int rtXmlDecDynHexStr (OSCTXT* pctxt, OSDynOctStr* pvalue);
00544 
00558 EXTERNXML int rtXmlDecUTF8Str 
00559 (OSCTXT* pctxt, OSUTF8CHAR* outdata, size_t max_len);
00560 
00561 
00575 EXTERNXML int rtXmlDecDynUTF8Str (OSCTXT* pctxt, const OSUTF8CHAR** outdata);
00576 
00595 EXTERNXML int rtXmlDecHexBinary (OSRTMEMBUF* pMemBuf, 
00596                                  const OSUTF8CHAR* inpdata, 
00597                                  int length);
00598 
00621 EXTERNXML int rtXmlDecHexStr (OSCTXT* pctxt, 
00622                               OSOCTET* pvalue, OSUINT32* pnocts, 
00623                               OSINT32 bufsize);
00624 
00625 EXTERNXML int rtXmlDecHexStrValue (OSCTXT* pctxt,
00626    const OSUTF8CHAR* const inpdata, size_t nbytes, OSOCTET* pvalue, 
00627    OSUINT32* pnbits, OSINT32 bufsize);
00628 
00641 EXTERNXML int rtXmlDecGYear (OSCTXT* pctxt, OSXSDDateTime* pvalue);
00642 
00655 EXTERNXML int rtXmlDecGYearMonth (OSCTXT* pctxt, OSXSDDateTime* pvalue);
00656 
00669 EXTERNXML int rtXmlDecGMonth (OSCTXT* pctxt, OSXSDDateTime* pvalue);
00670 
00683 EXTERNXML int rtXmlDecGMonthDay (OSCTXT* pctxt, OSXSDDateTime* pvalue);
00684 
00697 EXTERNXML int rtXmlDecGDay (OSCTXT* pctxt, OSXSDDateTime* pvalue);
00698 
00711 EXTERNXML int rtXmlDecInt (OSCTXT* pctxt, OSINT32* pvalue);
00712 
00726 EXTERNXML int rtXmlDecInt8 (OSCTXT* pctxt, OSINT8* pvalue);
00727 
00740 EXTERNXML int rtXmlDecInt16 (OSCTXT* pctxt, OSINT16* pvalue);
00741 
00754 EXTERNXML int rtXmlDecInt64 (OSCTXT* pctxt, OSINT64* pvalue);
00755 
00768 EXTERNXML int rtXmlDecUInt (OSCTXT* pctxt, OSUINT32* pvalue);
00769 
00783 EXTERNXML int rtXmlDecUInt8 (OSCTXT* pctxt, OSUINT8* pvalue);
00784 
00797 EXTERNXML int rtXmlDecUInt16 (OSCTXT* pctxt, OSUINT16* pvalue);
00798 
00811 EXTERNXML int rtXmlDecUInt64 (OSCTXT* pctxt, OSUINT64* pvalue);
00812 
00831 EXTERNXML int rtXmlDecNSAttr
00832 (OSCTXT* pctxt, const OSUTF8CHAR* attrName, const OSUTF8CHAR* attrValue, 
00833  OSRTDList* pNSAttrs, const OSUTF8CHAR* nsTable[], OSUINT32 nsTableRowCount);
00834 
00859 EXTERNXML const OSUTF8CHAR* rtXmlDecQName 
00860 (OSCTXT* pctxt, const OSUTF8CHAR* qname, const OSUTF8CHAR** prefix);
00861 
00874 EXTERNXML int rtXmlDecXSIAttr 
00875    (OSCTXT* pctxt, const OSUTF8CHAR* attrName, const OSUTF8CHAR* attrValue);
00876 
00891 EXTERNXML int rtXmlDecXSIAttrs (OSCTXT* pctxt, const OSUTF8CHAR* const* attrs,
00892    const char* typeName);
00893 
00910 EXTERNXML int rtXmlDecXmlStr (OSCTXT* pctxt, OSXMLSTRING* outdata);
00911 
00924 EXTERNXML int rtXmlParseElementName (OSCTXT* pctxt, OSUTF8CHAR** ppName);
00925 
00938 EXTERNXML int rtXmlParseElemQName (OSCTXT* pctxt, OSXMLQName* pQName);
00939 
00965 EXTERNXML int rtXmlEncAny (OSCTXT* pctxt, OSXMLSTRING* pvalue, 
00966                            const OSUTF8CHAR* elemName, 
00967                            OSXMLNamespace* pNS);
00968 
00969 EXTERNXML int rtXmlEncAnyStr 
00970 (OSCTXT* pctxt, const OSUTF8CHAR* pvalue, 
00971  const OSUTF8CHAR* elemName, OSXMLNamespace* pNS);
00972 
00984 EXTERNXML int rtXmlEncAnyTypeValue (OSCTXT* pctxt, const OSUTF8CHAR* pvalue);
00985 
00996 EXTERNXML int rtXmlEncAnyAttr (OSCTXT* pctxt, OSRTDList* pAnyAttrList);
00997 
01012 EXTERNXML int rtXmlEncBase64Binary (OSCTXT* pctxt, OSUINT32 nocts, 
01013                                     const OSOCTET* value, 
01014                                     const OSUTF8CHAR* elemName, 
01015                                     OSXMLNamespace* pNS);
01016 
01030 EXTERNXML int rtXmlEncBase64BinaryAttr 
01031    (OSCTXT* pctxt, OSUINT32 nocts, const OSOCTET* value,
01032     const OSUTF8CHAR* attrName, size_t attrNameLen);
01033 
01045 EXTERNXML int rtXmlEncBase64StrValue (OSCTXT* pctxt, OSUINT32 nocts, 
01046                                       const OSOCTET* value);
01047 
01071 EXTERNXML int rtXmlEncBigInt (OSCTXT* pctxt, const OSUTF8CHAR* value, 
01072                               const OSUTF8CHAR* elemName, 
01073                               OSXMLNamespace* pNS);
01074 
01089 EXTERNXML int rtXmlEncBigIntAttr (OSCTXT* pctxt, const OSUTF8CHAR* value, 
01090                        const OSUTF8CHAR* attrName, size_t attrNameLen);
01091 
01105 EXTERNXML int rtXmlEncBigIntValue (OSCTXT* pctxt, const OSUTF8CHAR* value);
01106 
01124 EXTERNXML int rtXmlEncBitString (OSCTXT* pctxt, OSUINT32 nbits, 
01125                                  const OSOCTET* value, 
01126                                  const OSUTF8CHAR* elemName, 
01127                                  OSXMLNamespace* pNS);
01128 
01140 EXTERNXML int rtXmlEncBinStrValue (OSCTXT* pctxt, 
01141                                    OSUINT32 nbits, 
01142                                    const OSOCTET* data);
01143 
01158 EXTERNXML int rtXmlEncBool (OSCTXT* pctxt, OSBOOL value, 
01159                             const OSUTF8CHAR* elemName, 
01160                             OSXMLNamespace* pNS);
01161 
01172 EXTERNXML int rtXmlEncBoolValue (OSCTXT* pctxt, OSBOOL value);
01173 
01185 EXTERNXML int rtXmlEncBoolAttr (OSCTXT* pctxt, OSBOOL value, 
01186                                 const OSUTF8CHAR* attrName, 
01187                                 size_t attrNameLen);
01188 
01206 EXTERNXML int rtXmlEncDate (OSCTXT* pctxt, const OSXSDDateTime* pvalue, 
01207                             const OSUTF8CHAR* elemName,
01208                             OSXMLNamespace* pNS);
01209 
01223 EXTERNXML int rtXmlEncDateValue 
01224    (OSCTXT* pctxt, const OSXSDDateTime* pvalue);
01225 
01249 EXTERNXML int rtXmlEncTime (OSCTXT* pctxt, const OSXSDDateTime* pvalue,
01250                             const OSUTF8CHAR* elemName,
01251                             OSXMLNamespace* pNS);
01252 
01265 EXTERNXML int rtXmlEncTimeValue 
01266    (OSCTXT* pctxt, const OSXSDDateTime* pvalue);
01267 
01283 EXTERNXML int rtXmlEncDateTime (OSCTXT* pctxt, const OSXSDDateTime* pvalue,
01284                                 const OSUTF8CHAR* elemName,
01285                                 OSXMLNamespace* pNS);
01286 
01298 EXTERNXML int rtXmlEncDateTimeValue 
01299    (OSCTXT* pctxt, const OSXSDDateTime* pvalue);
01300 
01315 EXTERNXML int rtXmlEncDecimal (OSCTXT* pctxt, OSREAL value, 
01316                                const OSUTF8CHAR* elemName, 
01317                                OSXMLNamespace* pNS,
01318                                const OSDecimalFmt* pFmtSpec);
01319 
01332 EXTERNXML int rtXmlEncDecimalAttr (OSCTXT* pctxt, OSREAL value, 
01333                                    const OSUTF8CHAR* attrName, 
01334                                    size_t attrNameLen,
01335                                    const OSDecimalFmt* pFmtSpec);
01336 
01354 EXTERNXML int rtXmlEncDecimalValue (OSCTXT* pctxt, OSREAL value,
01355                                     const OSDecimalFmt* pFmtSpec,
01356                                     char* pDestBuf, size_t destBufSize);
01357 
01372 EXTERNXML int rtXmlEncDouble (OSCTXT* pctxt, OSREAL value, 
01373                               const OSUTF8CHAR* elemName, 
01374                               OSXMLNamespace* pNS,
01375                               const OSDoubleFmt* pFmtSpec);
01376 
01389 EXTERNXML int rtXmlEncDoubleAttr (OSCTXT* pctxt, OSREAL value, 
01390                                   const OSUTF8CHAR* attrName, 
01391                                   size_t attrNameLen,
01392                                   const OSDoubleFmt* pFmtSpec);
01393 
01407 EXTERNXML int rtXmlEncDoubleValue (OSCTXT* pctxt, OSREAL value,
01408                                    const OSDoubleFmt* pFmtSpec,
01409                                    int defaultPrecision);
01410 
01423 EXTERNXML int rtXmlEncEmptyElement (OSCTXT* pctxt, 
01424                                     const OSUTF8CHAR* elemName, 
01425                                     OSXMLNamespace* pNS, 
01426                                     OSRTDList* pNSAttrs, 
01427                                     OSBOOL terminate);
01428 
01438 EXTERNXML int rtXmlEncEndDocument (OSCTXT* pctxt);
01439 
01450 EXTERNXML int rtXmlEncEndElement (OSCTXT* pctxt, 
01451                                   const OSUTF8CHAR* elemName, 
01452                                   OSXMLNamespace* pNS);
01453 
01463 EXTERNXML int rtXmlEncEndSoapEnv (OSCTXT* pctxt); 
01464 
01476 EXTERNXML int rtXmlEncEndSoapElems (OSCTXT* pctxt, OSXMLSOAPMsgType msgtype); 
01477 
01492 EXTERNXML int rtXmlEncFloat (OSCTXT* pctxt, OSREAL value, 
01493                              const OSUTF8CHAR* elemName, 
01494                              OSXMLNamespace* pNS,
01495                              const OSDoubleFmt* pFmtSpec);
01496 
01509 EXTERNXML int rtXmlEncFloatAttr (OSCTXT* pctxt, OSREAL value, 
01510                                  const OSUTF8CHAR* attrName, 
01511                                  size_t attrNameLen,
01512                                  const OSDoubleFmt* pFmtSpec);
01513 
01528 EXTERNXML int rtXmlEncGYear (OSCTXT* pctxt, const OSXSDDateTime* pvalue,
01529                              const OSUTF8CHAR* elemName,
01530                              OSXMLNamespace* pNS);
01531 
01546 EXTERNXML int rtXmlEncGYearMonth (OSCTXT* pctxt, const OSXSDDateTime* pvalue,
01547                                   const OSUTF8CHAR* elemName,
01548                                   OSXMLNamespace* pNS);
01549 
01564 EXTERNXML int rtXmlEncGMonth (OSCTXT* pctxt, const OSXSDDateTime* pvalue,
01565                               const OSUTF8CHAR* elemName,
01566                               OSXMLNamespace* pNS);
01567 
01582 EXTERNXML int rtXmlEncGMonthDay (OSCTXT* pctxt, const OSXSDDateTime* pvalue,
01583                                  const OSUTF8CHAR* elemName,
01584                                  OSXMLNamespace* pNS);
01585 
01600 EXTERNXML int rtXmlEncGDay (OSCTXT* pctxt, const OSXSDDateTime* pvalue,
01601                             const OSUTF8CHAR* elemName,
01602                             OSXMLNamespace* pNS);
01603 
01615 EXTERNXML int rtXmlEncGYearValue 
01616    (OSCTXT* pctxt, const OSXSDDateTime* pvalue);
01617 
01629 EXTERNXML int rtXmlEncGYearMonthValue 
01630    (OSCTXT* pctxt, const OSXSDDateTime* pvalue);
01631 
01643 EXTERNXML int rtXmlEncGMonthValue 
01644    (OSCTXT* pctxt, const OSXSDDateTime* pvalue);
01645 
01657 EXTERNXML int rtXmlEncGMonthDayValue 
01658    (OSCTXT* pctxt, const OSXSDDateTime* pvalue);
01659 
01671 EXTERNXML int rtXmlEncGDayValue 
01672    (OSCTXT* pctxt, const OSXSDDateTime* pvalue);
01673 
01688 EXTERNXML int rtXmlEncHexBinary (OSCTXT* pctxt, OSUINT32 nocts, 
01689                                  const OSOCTET* value, 
01690                                  const OSUTF8CHAR* elemName, 
01691                                  OSXMLNamespace* pNS);
01692 
01705 EXTERNXML int rtXmlEncHexBinaryAttr 
01706    (OSCTXT* pctxt, OSUINT32 nocts, const OSOCTET* value,
01707     const OSUTF8CHAR* attrName, size_t attrNameLen);
01708 
01720 EXTERNXML int rtXmlEncHexStrValue (OSCTXT* pctxt, 
01721                                    OSUINT32 nocts, 
01722                                    const OSOCTET* data);
01723 
01734 EXTERNXML int rtXmlEncIndent (OSCTXT* pctxt);
01735 
01749 EXTERNXML int rtXmlEncInt (OSCTXT* pctxt, OSINT32 value, 
01750                            const OSUTF8CHAR* elemName, 
01751                            OSXMLNamespace* pNS);
01752 
01763 EXTERNXML int rtXmlEncIntValue (OSCTXT* pctxt, OSINT32 value);
01764 
01777 EXTERNXML int rtXmlEncIntAttr (OSCTXT* pctxt, OSINT32 value, 
01778                                const OSUTF8CHAR* attrName, 
01779                                size_t attrNameLen);
01780 
01796 EXTERNXML int rtXmlEncIntPattern (OSCTXT* pctxt, OSINT32 value, 
01797                                   const OSUTF8CHAR* elemName, 
01798                                   OSXMLNamespace* pNS, 
01799                                   const OSUTF8CHAR* pattern);
01800 
01801 EXTERNXML int rtXmlEncIntPatternValue (OSCTXT* pctxt, OSINT32 value, 
01802                                        const OSUTF8CHAR* pattern);
01803 
01818 EXTERNXML int rtXmlEncInt64 (OSCTXT* pctxt, OSINT64 value, 
01819                              const OSUTF8CHAR* elemName, 
01820                              OSXMLNamespace* pNS);
01821 
01833 EXTERNXML int rtXmlEncInt64Value (OSCTXT* pctxt, OSINT64 value);
01834 
01848 EXTERNXML int rtXmlEncInt64Attr (OSCTXT* pctxt, OSINT64 value, 
01849                                  const OSUTF8CHAR* attrName, 
01850                                  size_t attrNameLen);
01851 
01870 EXTERNXML int rtXmlEncNamedBits
01871 (OSCTXT* pctxt, const OSBitMapItem* pBitMap, OSUINT32 nbits, 
01872  const OSOCTET* pvalue, const OSUTF8CHAR* elemName, OSXMLNamespace* pNS);
01873 
01874 EXTERNXML int rtXmlEncNamedBitsValue
01875 (OSCTXT* pctxt, const OSBitMapItem* pBitMap, OSUINT32 nbits, 
01876  const OSOCTET* pvalue);
01877 
01891 EXTERNXML int rtXmlEncNSAttrs (OSCTXT* pctxt, OSRTDList* pNSAttrs);
01892 
01902 EXTERNXML int rtxPrintNSAttrs (const char* name, const OSRTDList data);
01903 
01920 EXTERNXML int rtXmlEncReal10 
01921 (OSCTXT *pctxt, const OSUTF8CHAR *pvalue, const OSUTF8CHAR* elemName, 
01922  OSXMLNamespace* pNS);
01923 
01937 EXTERNXML int rtXmlEncSoapArrayTypeAttr 
01938 (OSCTXT* pctxt, const OSUTF8CHAR* name, const OSUTF8CHAR* value, 
01939  size_t itemCount);
01940 
01941 EXTERNXML int rtXmlEncSoapArrayTypeAttr2 
01942 (OSCTXT* pctxt, const OSUTF8CHAR* name, size_t nameLen, 
01943  const OSUTF8CHAR* value, size_t valueLen, size_t itemCount);
01944 
01956 EXTERNXML int rtXmlEncStartDocument (OSCTXT* pctxt);
01957 
01968 EXTERNXML int rtXmlEncBOM (OSCTXT* pctxt);
01981 EXTERNXML int rtXmlEncStartElement (OSCTXT* pctxt, 
01982                                     const OSUTF8CHAR* elemName, 
01983                                     OSXMLNamespace* pNS,
01984                                     OSRTDList* pNSAttrs, 
01985                                     OSBOOL terminate);
01986 
01996 EXTERNXML int rtXmlEncStartSoapEnv (OSCTXT* pctxt); 
01997 
02009 EXTERNXML int rtXmlEncStartSoapElems 
02010 (OSCTXT* pctxt, OSXMLSOAPMsgType msgtype); 
02011 
02025 EXTERNXML int rtXmlEncString (OSCTXT* pctxt, 
02026                               OSXMLSTRING* pxmlstr, 
02027                               const OSUTF8CHAR* elemName, 
02028                               OSXMLNamespace* pNS);
02029 
02039 EXTERNXML int rtXmlEncStringValue (OSCTXT* pctxt, const OSUTF8CHAR* value);
02040 
02051 EXTERNXML int rtXmlEncStringValue2 
02052    (OSCTXT* pctxt, const OSUTF8CHAR* value, size_t valueLen);
02053 
02064 EXTERNXML int rtXmlEncTermStartElement (OSCTXT* pctxt);
02065 
02081 EXTERNXML int rtXmlEncUnicodeStr (OSCTXT* pctxt, 
02082                                   const OSUNICHAR* value, 
02083                                   OSUINT32 nchars, 
02084                                   const OSUTF8CHAR* elemName, 
02085                                   OSXMLNamespace* pNS);
02086 
02098 EXTERNXML int rtXmlEncUTF8Attr (OSCTXT* pctxt, 
02099                                 const OSUTF8CHAR* name, 
02100                                 const OSUTF8CHAR* value);
02101 
02115 EXTERNXML int rtXmlEncUTF8Attr2 (OSCTXT* pctxt, 
02116                                  const OSUTF8CHAR* name, size_t nameLen, 
02117                                  const OSUTF8CHAR* value, size_t valueLen);
02118 
02132 EXTERNXML int rtXmlEncUTF8Str (OSCTXT* pctxt, 
02133                                const OSUTF8CHAR* value,
02134                                const OSUTF8CHAR* elemName, 
02135                                OSXMLNamespace* pNS);
02136 
02150 EXTERNXML int rtXmlEncUInt (OSCTXT* pctxt, OSUINT32 value, 
02151                             const OSUTF8CHAR* elemName, 
02152                             OSXMLNamespace* pNS);
02153 
02165 EXTERNXML int rtXmlEncUIntValue (OSCTXT* pctxt, OSUINT32 value);
02166 
02179 EXTERNXML int rtXmlEncUIntAttr (OSCTXT* pctxt, OSUINT32 value, 
02180                                 const OSUTF8CHAR* attrName, 
02181                                 size_t attrNameLen);
02182 
02198 EXTERNXML int rtXmlEncUInt64 (OSCTXT* pctxt, OSUINT64 value, 
02199                               const OSUTF8CHAR* elemName, 
02200                               OSXMLNamespace* pNS);
02201 
02214 EXTERNXML int rtXmlEncUInt64Value (OSCTXT* pctxt, OSUINT64 value);
02215 
02229 EXTERNXML int rtXmlEncUInt64Attr (OSCTXT* pctxt, OSUINT64 value, 
02230                                   const OSUTF8CHAR* attrName, 
02231                                   size_t attrNameLen);
02232 
02252 EXTERNXML int rtXmlEncXSIAttrs (OSCTXT* pctxt, OSBOOL needXSI);
02253 
02264 EXTERNXML int rtXmlEncXSITypeAttr (OSCTXT* pctxt, const OSUTF8CHAR* value);
02265 
02276 EXTERNXML int rtXmlFreeInputSource (OSCTXT* pctxt);
02277 
02278 EXTERNXML OSBOOL rtXmlStrCmpAsc (const OSUTF8CHAR* text1, const char* text2);
02279 
02280 EXTERNXML OSBOOL rtXmlStrnCmpAsc (const OSUTF8CHAR* text1, 
02281                                   const char* text2, size_t len);
02282 
02283 #define rtXmlFinalizeMemBuf(pMemBuf) do { \
02284 (pMemBuf)->pctxt->buffer.data = (pMemBuf)->buffer + (pMemBuf)->startidx; \
02285 (pMemBuf)->pctxt->buffer.size =                                      \
02286 ((pMemBuf)->usedcnt - (pMemBuf)->startidx);                          \
02287 (pMemBuf)->pctxt->buffer.dynamic = FALSE;                            \
02288 (pMemBuf)->pctxt->buffer.byteIndex = 0;                              \
02289 rtxMemBufReset (pMemBuf);                                            \
02290 } while(0)
02291 
02314 EXTERNXML int rtXmlSetEncBufPtr 
02315 (OSCTXT* pctxt, OSOCTET* bufaddr, size_t bufsiz);
02316 
02325 #define rtXmlGetEncBufPtr(pctxt) (pctxt)->buffer.data
02326 
02332 #define rtXmlGetEncBufLen(pctxt) (pctxt)->buffer.byteIndex
02333 
02334 
02342 EXTERNXML int rtXmlGetIndent (OSCTXT* pctxt);
02343 
02344 
02353 EXTERNXML OSBOOL rtXmlGetWriteBOM (OSCTXT* pctxt);
02354 
02363 EXTERNXML int rtXmlGetIndentChar (OSCTXT* pctxt);
02376 EXTERNXML int rtXmlPrepareContext (OSCTXT* pctxt);
02377 
02386 EXTERNXML int rtXmlSetEncC14N (OSCTXT* pctxt, OSBOOL value);
02387 
02398 EXTERNXML int rtXmlSetEncXSINamespace (OSCTXT* pctxt, OSBOOL value);
02399 
02400 EXTERNXML int rtXmlSetDigitsFacets 
02401    (OSCTXT* pctxt, int totalDigits, int fractionDigits);
02402 
02413 EXTERNXML int rtXmlSetEncDocHdr (OSCTXT* pctxt, OSBOOL value);
02414 
02424 EXTERNXML int rtXmlSetEncodingStr 
02425 (OSCTXT* pctxt, const OSUTF8CHAR* encodingStr);
02426 
02442 EXTERNXML int rtXmlSetFormatting (OSCTXT* pctxt, OSBOOL doFormatting);
02443 
02452 EXTERNXML int rtXmlSetIndent (OSCTXT* pctxt, OSUINT8 indent);
02453 
02462 EXTERNXML int rtXmlSetIndentChar (OSCTXT* pctxt, char indentChar);
02463 
02474 EXTERNXML void rtXmlSetNamespacesSet (OSCTXT* pctxt, OSBOOL value);
02475 
02485 EXTERNXML int rtXmlSetNSPrefixLinks (OSCTXT* pctxt, OSRTDList* pNSAttrs);
02486 
02498 EXTERNXML int rtXmlSetSchemaLocation 
02499 (OSCTXT* pctxt, const OSUTF8CHAR* schemaLocation);
02500 
02512 EXTERNXML int rtXmlSetNoNSSchemaLocation 
02513 (OSCTXT* pctxt, const OSUTF8CHAR* schemaLocation);
02514 
02525 EXTERNXML int rtXmlSetXSITypeAttr (OSCTXT* pctxt, const OSUTF8CHAR* xsiType);
02526 
02535 EXTERNXML int rtXmlSetWriteBOM (OSCTXT* pctxt, OSBOOL write);
02536 
02537 #include "rtxmlsrc/rtXmlNamespace.h"
02538 
02552 EXTERNXML int rtXmlMatchHexStr 
02553 (OSCTXT* pctxt, size_t minLength, size_t maxLength);
02554 
02568 EXTERNXML int rtXmlMatchBase64Str 
02569 (OSCTXT* pctxt, size_t minLength, size_t maxLength);
02570 
02582 EXTERNXML int rtXmlMatchDate (OSCTXT* pctxt);
02583 
02595 EXTERNXML int rtXmlMatchTime (OSCTXT* pctxt);
02596 
02608 EXTERNXML int rtXmlMatchDateTime (OSCTXT* pctxt);
02609 
02621 EXTERNXML int rtXmlMatchGYear (OSCTXT* pctxt);
02622 
02634 EXTERNXML int rtXmlMatchGYearMonth (OSCTXT* pctxt);
02635 
02647 EXTERNXML int rtXmlMatchGMonth (OSCTXT* pctxt);
02648 
02660 EXTERNXML int rtXmlMatchGMonthDay (OSCTXT* pctxt);
02661 
02673 EXTERNXML int rtXmlMatchGDay (OSCTXT* pctxt);
02674 
02687 EXTERNXML OSUTF8CHAR* rtXmlNewQName 
02688 (OSCTXT* pctxt, const OSUTF8CHAR* localName, const OSUTF8CHAR* prefix);
02689 
02699 EXTERNXML OSBOOL rtXmlCmpBase64Str (OSUINT32 nocts1, 
02700                                     const OSOCTET* data1,
02701                                     const OSUTF8CHAR* data2);
02702 
02712 EXTERNXML OSBOOL rtXmlCmpHexStr (OSUINT32 nocts1, 
02713                                  const OSOCTET* data1,
02714                                  const OSUTF8CHAR* data2);
02715 
02716 EXTERNXML OSBOOL rtXmlCmpHexChar (OSUTF8CHAR ch, OSOCTET hexval);
02717 
02718 EXTERNXML int rtSaxGetAttributeID (const OSUTF8CHAR* attrName,
02719                                    size_t nAttr, 
02720                                    const OSUTF8CHAR* attrNames[],
02721                                    OSUINT32 attrPresent[]);
02722 
02735 EXTERNXML const OSUTF8CHAR* rtSaxGetAttrValue 
02736 (const OSUTF8CHAR* attrName, const OSUTF8CHAR* const* attrs);
02737 
02753 EXTERNXML OSINT16 rtSaxGetElemID 
02754 (OSINT16* pState, OSINT16 prevElemIdx, const OSUTF8CHAR* localName, 
02755 #ifdef OSXMLNS12
02756  OSINT32 nsidx, /* namespace index */
02757 #endif
02758 const OSSAXElemTableRec idtab[], const OSINT16* fstab, 
02759  OSINT16 fstabRows, OSINT16 fstabCols);
02760 
02776 EXTERNXML OSINT16 rtSaxGetElemID8 
02777 (OSINT16* pState, OSINT16 prevElemIdx, const OSUTF8CHAR* localName, 
02778 #ifdef OSXMLNS12
02779  OSINT32 nsidx, /* namespace index */
02780 #endif
02781  const OSSAXElemTableRec idtab[], const OSINT8* fstab, 
02782  OSINT16 fstabRows, OSINT16 fstabCols);
02783 
02784 EXTERNXML OSINT16 rtSaxFindElemID 
02785 (OSINT16* pState, OSINT16 prevElemIdx, const OSUTF8CHAR* localName, 
02786 #ifdef OSXMLNS12
02787  OSINT32 nsidx, /* namespace index */
02788 #endif
02789  const OSSAXElemTableRec idtab[], const OSINT16* fstab,
02790  OSINT16 fstabRows, OSINT16 fstabCols);
02791 
02792 EXTERNXML OSINT16 rtSaxFindElemID8 
02793 (OSINT16* pState, OSINT16 prevElemIdx, const OSUTF8CHAR* localName, 
02794 #ifdef OSXMLNS12
02795  OSINT32 nsidx, /* namespace index */
02796 #endif
02797  const OSSAXElemTableRec idtab[], const OSINT8* fstab,
02798  OSINT16 fstabRows, OSINT16 fstabCols);
02799 
02808 EXTERNXML OSBOOL rtSaxHasXMLNSAttrs (const OSUTF8CHAR* const* attrs);
02809 
02817 EXTERNXML OSBOOL rtSaxIsEmptyBuffer (OSCTXT* pctxt);
02818 
02819 EXTERNXML OSINT16 rtSaxLookupElemID 
02820 (OSCTXT* pctxt, OSINT16* pState, OSINT16 prevElemIdx,
02821  const OSUTF8CHAR* localName, const OSUTF8CHAR* qName,
02822 #ifdef OSXMLNS12
02823  OSINT32 nsidx, /* namespace index */
02824 #endif
02825  const OSSAXElemTableRec idtab[], const OSINT16* fstab,
02826  OSINT16 fstabRows, OSINT16 fstabCols);
02827 
02828 EXTERNXML OSINT16 rtSaxLookupElemID8 
02829 (OSCTXT* pctxt, OSINT16* pState, OSINT16 prevElemIdx,
02830  const OSUTF8CHAR* localName, const OSUTF8CHAR* qName,
02831 #ifdef OSXMLNS12
02832  OSINT32 nsidx, /* namespace index */
02833 #endif
02834  const OSSAXElemTableRec idtab[], const OSINT8* fstab,
02835  OSINT16 fstabRows, OSINT16 fstabCols);
02836 
02848 EXTERNXML int rtSaxStrListParse 
02849 (OSCTXT* pctxt, OSRTMEMBUF *pMemBuf, OSRTDList* pvalue);
</