[1967] | 1 | module m_dom_document |
---|
| 2 | |
---|
| 3 | use m_dom_types |
---|
| 4 | use m_strings |
---|
| 5 | |
---|
| 6 | private |
---|
| 7 | |
---|
| 8 | !------------------------------------------------------- |
---|
| 9 | ! METHODS FOR DOCUMENT NODES |
---|
| 10 | !------------------------------------------------------- |
---|
| 11 | public :: createDocumentNode |
---|
| 12 | public :: createDocumentFragment |
---|
| 13 | public :: createTextNode |
---|
| 14 | public :: createAttribute |
---|
| 15 | public :: createElement |
---|
| 16 | public :: createComment |
---|
| 17 | public :: createCdataSection |
---|
| 18 | |
---|
| 19 | CONTAINS |
---|
| 20 | |
---|
| 21 | !----------------------------------------------------------- |
---|
| 22 | ! METHODS FOR DOCUMENT NODES |
---|
| 23 | !----------------------------------------------------------- |
---|
| 24 | |
---|
| 25 | function createDocumentNode() |
---|
| 26 | |
---|
| 27 | type(fnode), pointer :: createDocumentNode |
---|
| 28 | |
---|
| 29 | createDocumentNode => createNode() |
---|
| 30 | createDocumentNode % nodeType = DOCUMENT_NODE |
---|
| 31 | createDocumentNode % nodeName = "#document" |
---|
| 32 | |
---|
| 33 | end function createDocumentNode |
---|
| 34 | !------------------------------------------------------------------- |
---|
| 35 | function createDocumentFragment() |
---|
| 36 | |
---|
| 37 | type(fnode), pointer :: createDocumentFragment |
---|
| 38 | |
---|
| 39 | createDocumentFragment => createNode() |
---|
| 40 | createDocumentFragment % nodeType = DOCUMENT_FRAGMENT_NODE |
---|
| 41 | createDocumentFragment % nodeName = "#document-fragment" |
---|
| 42 | |
---|
| 43 | end function createDocumentFragment |
---|
| 44 | !------------------------------------------------------------------- |
---|
| 45 | function createTextNode(data) |
---|
| 46 | |
---|
| 47 | character(len=*), intent(in) :: data |
---|
| 48 | type(fnode), pointer :: createTextNode |
---|
| 49 | |
---|
| 50 | createTextNode => createNode() |
---|
| 51 | createTextNode % nodeType = TEXT_NODE |
---|
| 52 | createTextNode % nodeName = "#text" |
---|
| 53 | createTextNode % nodeValue = data ! NB need to split this string |
---|
| 54 | ! across several nodes |
---|
| 55 | |
---|
| 56 | end function createTextNode |
---|
| 57 | |
---|
| 58 | !----------------------------------------------------------- |
---|
| 59 | |
---|
| 60 | function createAttribute(name) |
---|
| 61 | |
---|
| 62 | character(len=*), intent(in) :: name |
---|
| 63 | type(fnode), pointer :: createAttribute |
---|
| 64 | |
---|
| 65 | createAttribute => createNode() |
---|
| 66 | createAttribute % nodeName = name |
---|
| 67 | createAttribute % nodeType = ATTRIBUTE_NODE |
---|
| 68 | |
---|
| 69 | end function createAttribute |
---|
| 70 | |
---|
| 71 | !----------------------------------------------------------- |
---|
| 72 | |
---|
| 73 | function createElement(tagName) |
---|
| 74 | |
---|
| 75 | character(len=*), intent(in) :: tagName |
---|
| 76 | type(fnode), pointer :: createElement |
---|
| 77 | |
---|
| 78 | createElement => createNode() |
---|
| 79 | createElement % nodeName = tagName |
---|
| 80 | createElement % nodeType = ELEMENT_NODE |
---|
| 81 | |
---|
| 82 | end function createElement |
---|
| 83 | |
---|
| 84 | !----------------------------------------------------------- |
---|
| 85 | |
---|
| 86 | function createComment(data) |
---|
| 87 | |
---|
| 88 | character(len=*), intent(in) :: data |
---|
| 89 | type(fnode), pointer :: createComment |
---|
| 90 | |
---|
| 91 | createComment => createNode() |
---|
| 92 | createComment % nodeName = "#comment" |
---|
| 93 | createComment % nodeValue = data |
---|
| 94 | createComment % nodeType = COMMENT_NODE |
---|
| 95 | |
---|
| 96 | end function createComment |
---|
| 97 | |
---|
| 98 | !----------------------------------------------------------- |
---|
| 99 | |
---|
| 100 | function createCdataSection(data) |
---|
| 101 | |
---|
| 102 | character(len=*), intent(in) :: data |
---|
| 103 | type(fnode), pointer :: createCdataSection |
---|
| 104 | |
---|
| 105 | createCdataSection => createNode() |
---|
| 106 | createCdataSection % nodeName = "#cdata-section" |
---|
| 107 | createCdataSection % nodeValue = data |
---|
| 108 | createCdataSection % nodeType = CDATA_SECTION_NODE |
---|
| 109 | |
---|
| 110 | end function createCdataSection |
---|
| 111 | |
---|
| 112 | |
---|
| 113 | end module m_dom_document |
---|