xml_attrfirst,
xml_attrnext, xml_attrname and xml_attrvalue.  The unfortunate similarity to xml_attrval
is, well, unfortunate, but I've written too much code that works with xml_attrval to go back and change it now.  Them's the
breaks when you design an API on the fly, I guess.
Let's do the iteration functions first; they're interesting.  The other two are boring.
| XMLAPI XML_ATTR * xml_attrfirst (XML * element)
{
   if (!element) return NULL;
   return element->attrs;
}
XMLAPI XML_ATTR * xml_attrnext (XML_ATTR * attr)
{
   if (!attr) return NULL;
   return attr->next;
}
 | 
| const char *xml_attrname  (XML_ATTR * attr) { return (attr->name);  }
const char *xml_attrvalue (XML_ATTR * attr) { return (attr->value); }
 | 
| This code and documentation are released under the terms of the GNU license. They are copyright (c) 2000-2003, Vivtek. All rights reserved except those explicitly granted under the terms of the GNU license. This presentation was created using LPML. |