When parsing XML using the FoX SAX module, attributes are returned contained within a dictionary object.
This dictionary object implements all the methods described by the SAX interfaces Attributes and Attributes2. Full documentation is available from the SAX Javadoc, but is reproduced here for ease of reference.
All of the attribute dictionary objects and functions are exported through FoX_sax - you must USE the module to enable them. The dictionary API is described here.
An attribute dictionary consists of a list of entries, one for each attribute. The entries all have the following pieces of data:
and for namespaced attributes:
In addition, the following pieces of data will be picked up from a DTD if present:
There is one derived type of interest, dictionary_t.
It is opaque - that is, it should only be manipulated through the functions described here.
getLength
type(dictionary_t), intent(in) :: dictReturns an integer with the length of the dictionary, ie the number of dictionary entries.
hasKey
type(dictionary_t), intent(in) :: dict
character(len=*), intent(in) :: keyReturns a logical value according to whether the dictionary contains an attribute named key or not.
hasKey
type(dictionary_t), intent(in) :: dict
character(len=*), intent(in) :: uri
character(len=*), intent(in) :: localnameReturns a logical value according to whether the dictionary contains an attribute with the correct URI and localname.
getQName
type(dictionary_t), intent(in) :: dict
integer, intent(in) :: iReturn the full name of the ith dictionary entry.
getValue
type(dictionary_t), intent(in)
integer, intent(in) :: iIf an integer is passed in - the value of the ith attribute.
getValue
type(dictionary_t), intent(in)
character(len=*), intent(in) :: qNameIf a single string is passed in, the value of the attribute with that name.
getValue
type(dictionary_t), intent(in)
character(len=*), intent(in) :: uri, localnameIf two strings are passed in, the value of the attribute with that uri and localname.
getURI
type(dictionary_t), intent(in)
integer, intent(in) :: iReturns a string containing the nsURI of the ith attribute.
getlocalName
type(dictionary_t), intent(in)
integer, intent(in) :: iReturns a string containing the localName of the ith attribute.
The following functions are only of interest if you are using DTDs.
getType
type(dictionary_t), intent(in)
integer, intent(in), optional :: iIf an integer is passed in, returns the type of the ith attribute.
getType
type(dictionary_t), intent(in)
character(len=*), intent(in) :: qNameIf a single string is passed in, returns the type of the attribute with that QName.
getType
type(dictionary_t), intent(in)
character(len=*), intent(in) :: uri
character(len=*), intent(in) :: localNameIf a single string is passed in, returnsthe type of the attribute with that {uri,localName}.
isDeclared
type(dictionary_t), intent(in)
integer, intent(in), optional :: iIf an integer is passed in, returns false unless the ith attribute is declared in the DTD.
isDeclared
type(dictionary_t), intent(in)
character(len=*), intent(in) :: qNameIf a single string is passed in, returns false unless the attribute with that QName is declared in the DTD.
isDeclared
type(dictionary_t), intent(in)
character(len=*), intent(in) :: uri
character(len=*), intent(in) :: localNameIf a single string is passed in, returns false unless the attribute with that {uri,localName} is declared in the DTD.
isSpecified
type(dictionary_t), intent(in)
integer, intent(in), optional :: iIf an integer is passed in, returns true unless the ith attribute is a default value from the DTD.
isSpecified
type(dictionary_t), intent(in)
character(len=*), intent(in) :: qNameIf a single string is passed in, returns true unless the attribute with that QName is a default value from the DTD.
isSpecified
type(dictionary_t), intent(in)
character(len=*), intent(in) :: uri
character(len=*), intent(in) :: localNameIf a single string is passed in, returns true unless the attribute with that {uri,localName} is a default value from the DTD.