# WXML Library

##
- Routines

### General routines

1. xml_OpenFile - Mandatory Initialization routine
2. xml_Close - Mandatory finalization routine, closes channels, etc
3. str - utility to convert reals and integers to character strings

### XML routines

1. xml_NewElement - writes an xml start tag
2. xml_AddAttribute - adds an attribute to a tag
3. xml_AddPcdata - adds text to an xml element
4. xml_AddArray - dumps the contents of an array as pcdata
5. xml_EndElement - writes an xml end tag

##
- Subroutine Guide

1. #### xml_OpenFile(filename, ind, xf)

   argument | role | type | optional | default
   --- | --- | --- | --- | ---
   filename | xml filename | character(len=*) | no |
   ind | controls indentation of output | logical | yes | .true.
   xf | xml filename | type(xmlf_t) | no |

2. #### xml_Close(filehandle)

   argument | role | type | optional | default
   --- | --- | --- | --- | ---
   xf | xml filehandle | type(xmlf_t) | no |

3. #### function str(value, format)

   argument | role | type | optional | default
   --- | --- | --- | --- | ---
   value | value to convert to string | real*8, real*4, integer, logical | no |
   format | format for reals | character(len=*) | yes | g22.12

1. #### xml_NewElement(xf, name)

   argument | role | type | optional | default
   --- | --- | --- | --- | ---
   xf | xml filehandle | type(xmlf_t) | no |
   name | name of tag to add | character(len=*) | no |

2. #### xml_AddAttribute(xf, attname, value)

   argument | role | type | optional | default
   --- | --- | --- | --- | ---
   xf | xml filehandle | type(xmlf_t) | no |
   attname | attribute name | character(len=*) | no |
   value | attribute value | character(len=*) (convert using str()) | no |

3. #### xml_AddPcdata(xf, pcdata)

   argument | role | type | optional | default
   --- | --- | --- | --- | ---
   xf | xml filehandle | type(xmlf_t) | no |
   pcdata | string to add | character(len=*) (convert numbers using str()) | no |

4. #### xml_AddArray(xf, a, format)

   argument | role | type | optional | default
   --- | --- | --- | --- | ---
   xf | xml filehandle | type(xmlf_t) | no |
   a | array (:) | integer, real, double | no |
   format | format | character(len=*) | yes | 6(i12) / 4(es20.12)

5. #### xml_EndElement(xf, name)

   argument | role | type | optional | default
   --- | --- | --- | --- | ---
   xf | xml filehandle | type(xmlf_t) | no |
   name | name of element to close | character(len=*) | no |