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 |
---|