pure function create_tag_flat(name, attribute, attributes, attributes_stream, sanitize_attributes_value, content, indent, &
is_content_indented, is_self_closing) result(tag)
!< Return an instance of xml tag.
!<
!< Attributes are passed by array.
character(*), intent(in) :: name !< Tag name.
character(*), intent(in), optional :: attribute(1:) !< Attribute name/value pair [1:2].
character(*), intent(in), optional :: attributes(1:,1:) !< Attributes list of name/value pairs [1:2,1:].
character(*), intent(in), optional :: attributes_stream !< Attributes list of name/value pairs as single stream.
logical, intent(in), optional :: sanitize_attributes_value !< Sanitize attributes value.
character(*), intent(in), optional :: content !< Tag value.
integer(I4P), intent(in), optional :: indent !< Number of indent-white-spaces.
logical, intent(in), optional :: is_content_indented !< Activate content indentation.
logical, intent(in), optional :: is_self_closing !< The tag is self closing.
type(xml_tag) :: tag !< XML tag.
call tag%set(name=name, attribute=attribute, attributes=attributes, attributes_stream=attributes_stream, &
sanitize_attributes_value=sanitize_attributes_value, content=content, &
indent=indent, is_content_indented=is_content_indented, is_self_closing=is_self_closing)
endfunction create_tag_flat
pure function create_tag_nested(name, content, attribute, attributes, attributes_stream, sanitize_attributes_value, indent, &
is_content_indented) result(tag)
!< Return an instance of xml tag with value being a nested tag.
!<
!< Attributes are passed by array.
character(*), intent(in) :: name !< Tag name.
type(xml_tag), intent(in) :: content !< Tag value as nested tag..
character(*), intent(in), optional :: attribute(1:) !< Attribute name/value pair [1:2].
character(*), intent(in), optional :: attributes(1:,1:) !< Attributes list of name/value pairs [1:2,1:].
character(*), intent(in), optional :: attributes_stream !< Attributes list of name/value pairs as single stream.
logical, intent(in), optional :: sanitize_attributes_value !< Sanitize attributes value.
integer(I4P), intent(in), optional :: indent !< Number of indent-white-spaces.
logical, intent(in), optional :: is_content_indented !< Activate value indentation.
type(xml_tag) :: tag !< XML tag.
call tag%set(name=name, attribute=attribute, attributes=attributes, content=content%stringify(), &
sanitize_attributes_value=sanitize_attributes_value, attributes_stream=attributes_stream, indent=indent, &
is_content_indented=is_content_indented)
endfunction create_tag_nested
! public methods
pure function attributes(self) result(att_)
!< Return attributes name/value pairs as string.
class(xml_tag), intent(in) :: self !< XML tag.
character(len=:), allocatable :: att_ !< The attributes string.
integer(I4P) :: a !< Counter.
if (self%attributes_number>0) then
att_ = ''
do a=1, self%attributes_number
att_ = att_//' '//self%attribute(1, a)//'="'//self%attribute(2, a)//'"'
enddo
att_ = trim(adjustl(att_))
endif
endfunction attributes