HTML Tidy  0.1
attrs.h
00001 #ifndef __ATTRS_H__
00002 #define __ATTRS_H__
00003 
00004 /* attrs.h -- recognize HTML attributes
00005 
00006   (c) 1998-2006 (W3C) MIT, ERCIM, Keio University
00007   See tidy.h for the copyright notice.
00008   
00009   CVS Info :
00010 
00011     $Author: arnaud02 $ 
00012     $Date: 2007/03/21 16:09:30 $ 
00013     $Revision: 1.27 $ 
00014 
00015 */
00016 
00017 #include "forward.h"
00018 
00019 /* declaration for methods that check attribute values */
00020 typedef void (AttrCheck)(TidyDocImpl* doc, Node *node, AttVal *attval);
00021 
00022 struct _Attribute
00023 {
00024     TidyAttrId  id;
00025     tmbstr      name;
00026     unsigned    versions;
00027     AttrCheck*  attrchk;
00028 
00029     struct _Attribute* next;
00030 };
00031 
00032 
00033 /*
00034  Anchor/Node linked list
00035 */
00036 
00037 struct _Anchor
00038 {
00039     struct _Anchor *next;
00040     Node *node;
00041     char *name;
00042 };
00043 
00044 typedef struct _Anchor Anchor;
00045 
00046 #if !defined(ATTRIBUTE_HASH_LOOKUP)
00047 #define ATTRIBUTE_HASH_LOOKUP 1
00048 #endif
00049 
00050 #if ATTRIBUTE_HASH_LOOKUP
00051 enum
00052 {
00053     ATTRIBUTE_HASH_SIZE=178u
00054 };
00055 
00056 struct _AttrHash
00057 {
00058     Attribute const*  attr;
00059     struct _AttrHash* next;
00060 };
00061 
00062 typedef struct _AttrHash AttrHash;
00063 #endif
00064 
00065 struct _TidyAttribImpl
00066 {
00067     /* anchor/node lookup */
00068     Anchor*    anchor_list;
00069 
00070     /* Declared literal attributes */
00071     Attribute* declared_attr_list;
00072 
00073 #if ATTRIBUTE_HASH_LOOKUP
00074     AttrHash*  hashtab[ATTRIBUTE_HASH_SIZE];
00075 #endif
00076 };
00077 
00078 typedef struct _TidyAttribImpl TidyAttribImpl;
00079 
00080 #define XHTML_NAMESPACE "http://www.w3.org/1999/xhtml"
00081 
00082 AttrCheck TY_(CheckUrl);
00083 
00084 /* public method for finding attribute definition by name */
00085 const Attribute* TY_(CheckAttribute)( TidyDocImpl* doc, Node *node, AttVal *attval );
00086 
00087 const Attribute* TY_(FindAttribute)( TidyDocImpl* doc, AttVal *attval );
00088 
00089 AttVal* TY_(GetAttrByName)( Node *node, ctmbstr name );
00090 
00091 AttVal* TY_(AddAttribute)( TidyDocImpl* doc,
00092                            Node *node, ctmbstr name, ctmbstr value );
00093 
00094 AttVal* TY_(RepairAttrValue)(TidyDocImpl* doc, Node* node, ctmbstr name, ctmbstr value);
00095 
00096 Bool TY_(IsUrl)( TidyDocImpl* doc, ctmbstr attrname );
00097 
00098 /* Bool IsBool( TidyDocImpl* doc, ctmbstr attrname ); */
00099 
00100 Bool TY_(IsScript)( TidyDocImpl* doc, ctmbstr attrname );
00101 
00102 /* may id or name serve as anchor? */
00103 Bool TY_(IsAnchorElement)( TidyDocImpl* doc, Node* node );
00104 
00105 /*
00106   In CSS1, selectors can contain only the characters A-Z, 0-9, and
00107   Unicode characters 161-255, plus dash (-); they cannot start with
00108   a dash or a digit; they can also contain escaped characters and any
00109   Unicode character as a numeric code (see next item).
00110 
00111   The backslash followed by at most four hexadecimal digits (0..9A..F)
00112   stands for the Unicode character with that number.
00113 
00114   Any character except a hexadecimal digit can be escaped to remove its
00115   special meaning, by putting a backslash in front.
00116 
00117   #508936 - CSS class naming for -clean option
00118 */
00119 Bool TY_(IsCSS1Selector)( ctmbstr buf );
00120 
00121 Bool TY_(IsValidHTMLID)(ctmbstr id);
00122 Bool TY_(IsValidXMLID)(ctmbstr id);
00123 
00124 /* removes anchor for specific node */
00125 void TY_(RemoveAnchorByNode)( TidyDocImpl* doc, Node *node );
00126 
00127 /* free all anchors */
00128 void TY_(FreeAnchors)( TidyDocImpl* doc );
00129 
00130 
00131 /* public methods for inititializing/freeing attribute dictionary */
00132 void TY_(InitAttrs)( TidyDocImpl* doc );
00133 void TY_(FreeAttrTable)( TidyDocImpl* doc );
00134 
00135 void TY_(AppendToClassAttr)( TidyDocImpl* doc, AttVal *classattr, ctmbstr classname );
00136 /*
00137  the same attribute name can't be used
00138  more than once in each element
00139 */
00140 void TY_(RepairDuplicateAttributes)( TidyDocImpl* doc, Node* node, Bool isXml );
00141 
00142 Bool TY_(IsBoolAttribute)( AttVal* attval );
00143 Bool TY_(attrIsEvent)( AttVal* attval );
00144 
00145 AttVal* TY_(AttrGetById)( Node* node, TidyAttrId id );
00146 
00147 uint TY_(NodeAttributeVersions)( Node* node, TidyAttrId id );
00148 
00149 /* 0 == TidyAttr_UNKNOWN  */
00150 #define AttrId(av) ((av) && (av)->dict ? (av)->dict->id : TidyAttr_UNKNOWN)
00151 #define AttrIsId(av, atid) ((av) && (av)->dict && ((av)->dict->id == atid))
00152 
00153 #define AttrHasValue(attr)      ((attr) && (attr)->value)
00154 #define AttrValueIs(attr, val)  (AttrHasValue(attr) && \
00155                                  TY_(tmbstrcasecmp)((attr)->value, val) == 0)
00156 #define AttrContains(attr, val) (AttrHasValue(attr) && \
00157                                  TY_(tmbsubstr)((attr)->value, val) != NULL)
00158 #define AttrVersions(attr)      ((attr) && (attr)->dict ? (attr)->dict->versions : VERS_PROPRIETARY)
00159 
00160 #define AttrsHaveSameId(a, b) (a && b && a->dict && b->dict && a->dict->id && \
00161                                b->dict->id && a->dict->id == b->dict->id)
00162 
00163 #define attrIsABBR(av)              AttrIsId( av, TidyAttr_ABBR  )
00164 #define attrIsACCEPT(av)            AttrIsId( av, TidyAttr_ACCEPT  )
00165 #define attrIsACCEPT_CHARSET(av)    AttrIsId( av, TidyAttr_ACCEPT_CHARSET  )
00166 #define attrIsACCESSKEY(av)         AttrIsId( av, TidyAttr_ACCESSKEY  )
00167 #define attrIsACTION(av)            AttrIsId( av, TidyAttr_ACTION  )
00168 #define attrIsADD_DATE(av)          AttrIsId( av, TidyAttr_ADD_DATE  )
00169 #define attrIsALIGN(av)             AttrIsId( av, TidyAttr_ALIGN  )
00170 #define attrIsALINK(av)             AttrIsId( av, TidyAttr_ALINK  )
00171 #define attrIsALT(av)               AttrIsId( av, TidyAttr_ALT  )
00172 #define attrIsARCHIVE(av)           AttrIsId( av, TidyAttr_ARCHIVE  )
00173 #define attrIsAXIS(av)              AttrIsId( av, TidyAttr_AXIS  )
00174 #define attrIsBACKGROUND(av)        AttrIsId( av, TidyAttr_BACKGROUND  )
00175 #define attrIsBGCOLOR(av)           AttrIsId( av, TidyAttr_BGCOLOR  )
00176 #define attrIsBGPROPERTIES(av)      AttrIsId( av, TidyAttr_BGPROPERTIES  )
00177 #define attrIsBORDER(av)            AttrIsId( av, TidyAttr_BORDER  )
00178 #define attrIsBORDERCOLOR(av)       AttrIsId( av, TidyAttr_BORDERCOLOR  )
00179 #define attrIsBOTTOMMARGIN(av)      AttrIsId( av, TidyAttr_BOTTOMMARGIN  )
00180 #define attrIsCELLPADDING(av)       AttrIsId( av, TidyAttr_CELLPADDING  )
00181 #define attrIsCELLSPACING(av)       AttrIsId( av, TidyAttr_CELLSPACING  )
00182 #define attrIsCHAR(av)              AttrIsId( av, TidyAttr_CHAR  )
00183 #define attrIsCHAROFF(av)           AttrIsId( av, TidyAttr_CHAROFF  )
00184 #define attrIsCHARSET(av)           AttrIsId( av, TidyAttr_CHARSET  )
00185 #define attrIsCHECKED(av)           AttrIsId( av, TidyAttr_CHECKED  )
00186 #define attrIsCITE(av)              AttrIsId( av, TidyAttr_CITE  )
00187 #define attrIsCLASS(av)             AttrIsId( av, TidyAttr_CLASS  )
00188 #define attrIsCLASSID(av)           AttrIsId( av, TidyAttr_CLASSID  )
00189 #define attrIsCLEAR(av)             AttrIsId( av, TidyAttr_CLEAR  )
00190 #define attrIsCODE(av)              AttrIsId( av, TidyAttr_CODE  )
00191 #define attrIsCODEBASE(av)          AttrIsId( av, TidyAttr_CODEBASE  )
00192 #define attrIsCODETYPE(av)          AttrIsId( av, TidyAttr_CODETYPE  )
00193 #define attrIsCOLOR(av)             AttrIsId( av, TidyAttr_COLOR  )
00194 #define attrIsCOLS(av)              AttrIsId( av, TidyAttr_COLS  )
00195 #define attrIsCOLSPAN(av)           AttrIsId( av, TidyAttr_COLSPAN  )
00196 #define attrIsCOMPACT(av)           AttrIsId( av, TidyAttr_COMPACT  )
00197 #define attrIsCONTENT(av)           AttrIsId( av, TidyAttr_CONTENT  )
00198 #define attrIsCOORDS(av)            AttrIsId( av, TidyAttr_COORDS  )
00199 #define attrIsDATA(av)              AttrIsId( av, TidyAttr_DATA  )
00200 #define attrIsDATAFLD(av)           AttrIsId( av, TidyAttr_DATAFLD  )
00201 #define attrIsDATAFORMATAS(av)      AttrIsId( av, TidyAttr_DATAFORMATAS  )
00202 #define attrIsDATAPAGESIZE(av)      AttrIsId( av, TidyAttr_DATAPAGESIZE  )
00203 #define attrIsDATASRC(av)           AttrIsId( av, TidyAttr_DATASRC  )
00204 #define attrIsDATETIME(av)          AttrIsId( av, TidyAttr_DATETIME  )
00205 #define attrIsDECLARE(av)           AttrIsId( av, TidyAttr_DECLARE  )
00206 #define attrIsDEFER(av)             AttrIsId( av, TidyAttr_DEFER  )
00207 #define attrIsDIR(av)               AttrIsId( av, TidyAttr_DIR  )
00208 #define attrIsDISABLED(av)          AttrIsId( av, TidyAttr_DISABLED  )
00209 #define attrIsENCODING(av)          AttrIsId( av, TidyAttr_ENCODING  )
00210 #define attrIsENCTYPE(av)           AttrIsId( av, TidyAttr_ENCTYPE  )
00211 #define attrIsFACE(av)              AttrIsId( av, TidyAttr_FACE  )
00212 #define attrIsFOR(av)               AttrIsId( av, TidyAttr_FOR  )
00213 #define attrIsFRAME(av)             AttrIsId( av, TidyAttr_FRAME  )
00214 #define attrIsFRAMEBORDER(av)       AttrIsId( av, TidyAttr_FRAMEBORDER  )
00215 #define attrIsFRAMESPACING(av)      AttrIsId( av, TidyAttr_FRAMESPACING  )
00216 #define attrIsGRIDX(av)             AttrIsId( av, TidyAttr_GRIDX  )
00217 #define attrIsGRIDY(av)             AttrIsId( av, TidyAttr_GRIDY  )
00218 #define attrIsHEADERS(av)           AttrIsId( av, TidyAttr_HEADERS  )
00219 #define attrIsHEIGHT(av)            AttrIsId( av, TidyAttr_HEIGHT  )
00220 #define attrIsHREF(av)              AttrIsId( av, TidyAttr_HREF  )
00221 #define attrIsHREFLANG(av)          AttrIsId( av, TidyAttr_HREFLANG  )
00222 #define attrIsHSPACE(av)            AttrIsId( av, TidyAttr_HSPACE  )
00223 #define attrIsHTTP_EQUIV(av)        AttrIsId( av, TidyAttr_HTTP_EQUIV  )
00224 #define attrIsID(av)                AttrIsId( av, TidyAttr_ID  )
00225 #define attrIsISMAP(av)             AttrIsId( av, TidyAttr_ISMAP  )
00226 #define attrIsLABEL(av)             AttrIsId( av, TidyAttr_LABEL  )
00227 #define attrIsLANG(av)              AttrIsId( av, TidyAttr_LANG  )
00228 #define attrIsLANGUAGE(av)          AttrIsId( av, TidyAttr_LANGUAGE  )
00229 #define attrIsLAST_MODIFIED(av)     AttrIsId( av, TidyAttr_LAST_MODIFIED  )
00230 #define attrIsLAST_VISIT(av)        AttrIsId( av, TidyAttr_LAST_VISIT  )
00231 #define attrIsLEFTMARGIN(av)        AttrIsId( av, TidyAttr_LEFTMARGIN  )
00232 #define attrIsLINK(av)              AttrIsId( av, TidyAttr_LINK  )
00233 #define attrIsLONGDESC(av)          AttrIsId( av, TidyAttr_LONGDESC  )
00234 #define attrIsLOWSRC(av)            AttrIsId( av, TidyAttr_LOWSRC  )
00235 #define attrIsMARGINHEIGHT(av)      AttrIsId( av, TidyAttr_MARGINHEIGHT  )
00236 #define attrIsMARGINWIDTH(av)       AttrIsId( av, TidyAttr_MARGINWIDTH  )
00237 #define attrIsMAXLENGTH(av)         AttrIsId( av, TidyAttr_MAXLENGTH  )
00238 #define attrIsMEDIA(av)             AttrIsId( av, TidyAttr_MEDIA  )
00239 #define attrIsMETHOD(av)            AttrIsId( av, TidyAttr_METHOD  )
00240 #define attrIsMULTIPLE(av)          AttrIsId( av, TidyAttr_MULTIPLE  )
00241 #define attrIsNAME(av)              AttrIsId( av, TidyAttr_NAME  )
00242 #define attrIsNOHREF(av)            AttrIsId( av, TidyAttr_NOHREF  )
00243 #define attrIsNORESIZE(av)          AttrIsId( av, TidyAttr_NORESIZE  )
00244 #define attrIsNOSHADE(av)           AttrIsId( av, TidyAttr_NOSHADE  )
00245 #define attrIsNOWRAP(av)            AttrIsId( av, TidyAttr_NOWRAP  )
00246 #define attrIsOBJECT(av)            AttrIsId( av, TidyAttr_OBJECT  )
00247 #define attrIsOnAFTERUPDATE(av)     AttrIsId( av, TidyAttr_OnAFTERUPDATE  )
00248 #define attrIsOnBEFOREUNLOAD(av)    AttrIsId( av, TidyAttr_OnBEFOREUNLOAD  )
00249 #define attrIsOnBEFOREUPDATE(av)    AttrIsId( av, TidyAttr_OnBEFOREUPDATE  )
00250 #define attrIsOnBLUR(av)            AttrIsId( av, TidyAttr_OnBLUR  )
00251 #define attrIsOnCHANGE(av)          AttrIsId( av, TidyAttr_OnCHANGE  )
00252 #define attrIsOnCLICK(av)           AttrIsId( av, TidyAttr_OnCLICK  )
00253 #define attrIsOnDATAAVAILABLE(av)   AttrIsId( av, TidyAttr_OnDATAAVAILABLE  )
00254 #define attrIsOnDATASETCHANGED(av)  AttrIsId( av, TidyAttr_OnDATASETCHANGED  )
00255 #define attrIsOnDATASETCOMPLETE(av) AttrIsId( av, TidyAttr_OnDATASETCOMPLETE  )
00256 #define attrIsOnDBLCLICK(av)        AttrIsId( av, TidyAttr_OnDBLCLICK  )
00257 #define attrIsOnERRORUPDATE(av)     AttrIsId( av, TidyAttr_OnERRORUPDATE  )
00258 #define attrIsOnFOCUS(av)           AttrIsId( av, TidyAttr_OnFOCUS  )
00259 #define attrIsOnKEYDOWN(av)         AttrIsId( av, TidyAttr_OnKEYDOWN  )
00260 #define attrIsOnKEYPRESS(av)        AttrIsId( av, TidyAttr_OnKEYPRESS  )
00261 #define attrIsOnKEYUP(av)           AttrIsId( av, TidyAttr_OnKEYUP  )
00262 #define attrIsOnLOAD(av)            AttrIsId( av, TidyAttr_OnLOAD  )
00263 #define attrIsOnMOUSEDOWN(av)       AttrIsId( av, TidyAttr_OnMOUSEDOWN  )
00264 #define attrIsOnMOUSEMOVE(av)       AttrIsId( av, TidyAttr_OnMOUSEMOVE  )
00265 #define attrIsOnMOUSEOUT(av)        AttrIsId( av, TidyAttr_OnMOUSEOUT  )
00266 #define attrIsOnMOUSEOVER(av)       AttrIsId( av, TidyAttr_OnMOUSEOVER  )
00267 #define attrIsOnMOUSEUP(av)         AttrIsId( av, TidyAttr_OnMOUSEUP  )
00268 #define attrIsOnRESET(av)           AttrIsId( av, TidyAttr_OnRESET  )
00269 #define attrIsOnROWENTER(av)        AttrIsId( av, TidyAttr_OnROWENTER  )
00270 #define attrIsOnROWEXIT(av)         AttrIsId( av, TidyAttr_OnROWEXIT  )
00271 #define attrIsOnSELECT(av)          AttrIsId( av, TidyAttr_OnSELECT  )
00272 #define attrIsOnSUBMIT(av)          AttrIsId( av, TidyAttr_OnSUBMIT  )
00273 #define attrIsOnUNLOAD(av)          AttrIsId( av, TidyAttr_OnUNLOAD  )
00274 #define attrIsPROFILE(av)           AttrIsId( av, TidyAttr_PROFILE  )
00275 #define attrIsPROMPT(av)            AttrIsId( av, TidyAttr_PROMPT  )
00276 #define attrIsRBSPAN(av)            AttrIsId( av, TidyAttr_RBSPAN  )
00277 #define attrIsREADONLY(av)          AttrIsId( av, TidyAttr_READONLY  )
00278 #define attrIsREL(av)               AttrIsId( av, TidyAttr_REL  )
00279 #define attrIsREV(av)               AttrIsId( av, TidyAttr_REV  )
00280 #define attrIsRIGHTMARGIN(av)       AttrIsId( av, TidyAttr_RIGHTMARGIN  )
00281 #define attrIsROWS(av)              AttrIsId( av, TidyAttr_ROWS  )
00282 #define attrIsROWSPAN(av)           AttrIsId( av, TidyAttr_ROWSPAN  )
00283 #define attrIsRULES(av)             AttrIsId( av, TidyAttr_RULES  )
00284 #define attrIsSCHEME(av)            AttrIsId( av, TidyAttr_SCHEME  )
00285 #define attrIsSCOPE(av)             AttrIsId( av, TidyAttr_SCOPE  )
00286 #define attrIsSCROLLING(av)         AttrIsId( av, TidyAttr_SCROLLING  )
00287 #define attrIsSELECTED(av)          AttrIsId( av, TidyAttr_SELECTED  )
00288 #define attrIsSHAPE(av)             AttrIsId( av, TidyAttr_SHAPE  )
00289 #define attrIsSHOWGRID(av)          AttrIsId( av, TidyAttr_SHOWGRID  )
00290 #define attrIsSHOWGRIDX(av)         AttrIsId( av, TidyAttr_SHOWGRIDX  )
00291 #define attrIsSHOWGRIDY(av)         AttrIsId( av, TidyAttr_SHOWGRIDY  )
00292 #define attrIsSIZE(av)              AttrIsId( av, TidyAttr_SIZE  )
00293 #define attrIsSPAN(av)              AttrIsId( av, TidyAttr_SPAN  )
00294 #define attrIsSRC(av)               AttrIsId( av, TidyAttr_SRC  )
00295 #define attrIsSTANDBY(av)           AttrIsId( av, TidyAttr_STANDBY  )
00296 #define attrIsSTART(av)             AttrIsId( av, TidyAttr_START  )
00297 #define attrIsSTYLE(av)             AttrIsId( av, TidyAttr_STYLE  )
00298 #define attrIsSUMMARY(av)           AttrIsId( av, TidyAttr_SUMMARY  )
00299 #define attrIsTABINDEX(av)          AttrIsId( av, TidyAttr_TABINDEX  )
00300 #define attrIsTARGET(av)            AttrIsId( av, TidyAttr_TARGET  )
00301 #define attrIsTEXT(av)              AttrIsId( av, TidyAttr_TEXT  )
00302 #define attrIsTITLE(av)             AttrIsId( av, TidyAttr_TITLE  )
00303 #define attrIsTOPMARGIN(av)         AttrIsId( av, TidyAttr_TOPMARGIN  )
00304 #define attrIsTYPE(av)              AttrIsId( av, TidyAttr_TYPE  )
00305 #define attrIsUSEMAP(av)            AttrIsId( av, TidyAttr_USEMAP  )
00306 #define attrIsVALIGN(av)            AttrIsId( av, TidyAttr_VALIGN  )
00307 #define attrIsVALUE(av)             AttrIsId( av, TidyAttr_VALUE  )
00308 #define attrIsVALUETYPE(av)         AttrIsId( av, TidyAttr_VALUETYPE  )
00309 #define attrIsVERSION(av)           AttrIsId( av, TidyAttr_VERSION  )
00310 #define attrIsVLINK(av)             AttrIsId( av, TidyAttr_VLINK  )
00311 #define attrIsVSPACE(av)            AttrIsId( av, TidyAttr_VSPACE  )
00312 #define attrIsWIDTH(av)             AttrIsId( av, TidyAttr_WIDTH  )
00313 #define attrIsWRAP(av)              AttrIsId( av, TidyAttr_WRAP  )
00314 #define attrIsXMLNS(av)             AttrIsId( av, TidyAttr_XMLNS  )
00315 #define attrIsXML_LANG(av)          AttrIsId( av, TidyAttr_XML_LANG  )
00316 #define attrIsXML_SPACE(av)         AttrIsId( av, TidyAttr_XML_SPACE  )
00317 
00318 
00319 /* Attribute Retrieval macros
00320 */
00321 #define attrGetHREF( nod )        TY_(AttrGetById)( nod, TidyAttr_HREF  )
00322 #define attrGetSRC( nod )         TY_(AttrGetById)( nod, TidyAttr_SRC  )
00323 #define attrGetID( nod )          TY_(AttrGetById)( nod, TidyAttr_ID  )
00324 #define attrGetNAME( nod )        TY_(AttrGetById)( nod, TidyAttr_NAME  )
00325 #define attrGetSUMMARY( nod )     TY_(AttrGetById)( nod, TidyAttr_SUMMARY  )
00326 #define attrGetALT( nod )         TY_(AttrGetById)( nod, TidyAttr_ALT  )
00327 #define attrGetLONGDESC( nod )    TY_(AttrGetById)( nod, TidyAttr_LONGDESC  )
00328 #define attrGetUSEMAP( nod )      TY_(AttrGetById)( nod, TidyAttr_USEMAP  )
00329 #define attrGetISMAP( nod )       TY_(AttrGetById)( nod, TidyAttr_ISMAP  )
00330 #define attrGetLANGUAGE( nod )    TY_(AttrGetById)( nod, TidyAttr_LANGUAGE  )
00331 #define attrGetTYPE( nod )        TY_(AttrGetById)( nod, TidyAttr_TYPE  )
00332 #define attrGetVALUE( nod )       TY_(AttrGetById)( nod, TidyAttr_VALUE  )
00333 #define attrGetCONTENT( nod )     TY_(AttrGetById)( nod, TidyAttr_CONTENT  )
00334 #define attrGetTITLE( nod )       TY_(AttrGetById)( nod, TidyAttr_TITLE  )
00335 #define attrGetXMLNS( nod )       TY_(AttrGetById)( nod, TidyAttr_XMLNS  )
00336 #define attrGetDATAFLD( nod )     TY_(AttrGetById)( nod, TidyAttr_DATAFLD  )
00337 #define attrGetWIDTH( nod )       TY_(AttrGetById)( nod, TidyAttr_WIDTH  )
00338 #define attrGetHEIGHT( nod )      TY_(AttrGetById)( nod, TidyAttr_HEIGHT  )
00339 #define attrGetFOR( nod )         TY_(AttrGetById)( nod, TidyAttr_FOR  )
00340 #define attrGetSELECTED( nod )    TY_(AttrGetById)( nod, TidyAttr_SELECTED  )
00341 #define attrGetCHECKED( nod )     TY_(AttrGetById)( nod, TidyAttr_CHECKED  )
00342 #define attrGetLANG( nod )        TY_(AttrGetById)( nod, TidyAttr_LANG  )
00343 #define attrGetTARGET( nod )      TY_(AttrGetById)( nod, TidyAttr_TARGET  )
00344 #define attrGetHTTP_EQUIV( nod )  TY_(AttrGetById)( nod, TidyAttr_HTTP_EQUIV  )
00345 #define attrGetREL( nod )         TY_(AttrGetById)( nod, TidyAttr_REL  )
00346 
00347 #define attrGetOnMOUSEMOVE( nod ) TY_(AttrGetById)( nod, TidyAttr_OnMOUSEMOVE  )
00348 #define attrGetOnMOUSEDOWN( nod ) TY_(AttrGetById)( nod, TidyAttr_OnMOUSEDOWN  )
00349 #define attrGetOnMOUSEUP( nod )   TY_(AttrGetById)( nod, TidyAttr_OnMOUSEUP  )
00350 #define attrGetOnCLICK( nod )     TY_(AttrGetById)( nod, TidyAttr_OnCLICK  )
00351 #define attrGetOnMOUSEOVER( nod ) TY_(AttrGetById)( nod, TidyAttr_OnMOUSEOVER  )
00352 #define attrGetOnMOUSEOUT( nod )  TY_(AttrGetById)( nod, TidyAttr_OnMOUSEOUT  )
00353 #define attrGetOnKEYDOWN( nod )   TY_(AttrGetById)( nod, TidyAttr_OnKEYDOWN  )
00354 #define attrGetOnKEYUP( nod )     TY_(AttrGetById)( nod, TidyAttr_OnKEYUP  )
00355 #define attrGetOnKEYPRESS( nod )  TY_(AttrGetById)( nod, TidyAttr_OnKEYPRESS  )
00356 #define attrGetOnFOCUS( nod )     TY_(AttrGetById)( nod, TidyAttr_OnFOCUS  )
00357 #define attrGetOnBLUR( nod )      TY_(AttrGetById)( nod, TidyAttr_OnBLUR  )
00358 
00359 #define attrGetBGCOLOR( nod )     TY_(AttrGetById)( nod, TidyAttr_BGCOLOR  )
00360 
00361 #define attrGetLINK( nod )        TY_(AttrGetById)( nod, TidyAttr_LINK  )
00362 #define attrGetALINK( nod )       TY_(AttrGetById)( nod, TidyAttr_ALINK  )
00363 #define attrGetVLINK( nod )       TY_(AttrGetById)( nod, TidyAttr_VLINK  )
00364 
00365 #define attrGetTEXT( nod )        TY_(AttrGetById)( nod, TidyAttr_TEXT  )
00366 #define attrGetSTYLE( nod )       TY_(AttrGetById)( nod, TidyAttr_STYLE  )
00367 #define attrGetABBR( nod )        TY_(AttrGetById)( nod, TidyAttr_ABBR  )
00368 #define attrGetCOLSPAN( nod )     TY_(AttrGetById)( nod, TidyAttr_COLSPAN  )
00369 #define attrGetFONT( nod )        TY_(AttrGetById)( nod, TidyAttr_FONT  )
00370 #define attrGetBASEFONT( nod )    TY_(AttrGetById)( nod, TidyAttr_BASEFONT  )
00371 #define attrGetROWSPAN( nod )     TY_(AttrGetById)( nod, TidyAttr_ROWSPAN  )
00372 
00373 #endif /* __ATTRS_H__ */