diff --git a/runtime/indent/xml.vim b/runtime/indent/xml.vim
index ad22de1..883af98 100644
--- a/runtime/indent/xml.vim
+++ b/runtime/indent/xml.vim
@@ -1,9 +1,10 @@
 "     Language: xml
 "   Repository: https://github.com/chrisbra/vim-xml-ftplugin
-" Last Changed: Feb 04, 2019
+" Last Changed: July 27, 2019
 "   Maintainer: Christian Brabandt <cb@256bit.org>
 " Previous Maintainer:  Johannes Zellner <johannes@zellner.org>
 " Last Change:
+" 20190726 - Correctly handle non-tagged data
 " 20190204 - correctly handle wrap tags
 "            https://github.com/chrisbra/vim-xml-ftplugin/issues/5
 " 20190128 - Make sure to find previous tag
@@ -33,6 +34,8 @@
 " Attention: Parameter use_syntax_check is used by the docbk.vim indent script
 setlocal indentexpr=XmlIndentGet(v:lnum,1)
 setlocal indentkeys=o,O,*<Return>,<>>,<<>,/,{,},!^F
+" autoindent: used when the indentexpr returns -1
+setlocal autoindent
 
 if !exists('b:xml_indent_open')
     let b:xml_indent_open = '.\{-}<[:A-Z_a-z]'
@@ -103,37 +106,43 @@
         return 0
     endif
     " Find previous line with a tag (regardless whether open or closed,
-    " but always start restrict the match to a line before the current one
+    " but always restrict the match to a line before the current one
     " Note: xml declaration: <?xml version="1.0"?>
     "       won't be found, as it is not a legal tag name
-    let ptag_pattern = '\%(.\{-}<[/:A-Z_a-z]\)'. '\%(\&\%<'. line('.').'l\)'
+    let ptag_pattern = '\%(.\{-}<[/:A-Z_a-z]\)'. '\%(\&\%<'. a:lnum .'l\)'
     let ptag = search(ptag_pattern, 'bnW')
     " no previous tag
     if ptag == 0
         return 0
     endif
 
-    let syn_name = ''
+    let pline = getline(ptag)
+    let pind  = indent(ptag)
+
+    let syn_name_start = '' " Syntax element at start of line (excluding whitespace)
+    let syn_name_end = ''   " Syntax element at end of line
+    let curline = getline(a:lnum)
     if a:use_syntax_check
         let check_lnum = <SID>XmlIndentSynCheck(ptag)
         let check_alnum = <SID>XmlIndentSynCheck(a:lnum)
         if check_lnum == 0 || check_alnum == 0
             return indent(a:lnum)
         endif
-        let syn_name = synIDattr(synID(a:lnum, strlen(getline(a:lnum)) - 1, 1), 'name')
+        let syn_name_end   = synIDattr(synID(a:lnum, strlen(curline) - 1, 1), 'name')
+        let syn_name_start = synIDattr(synID(a:lnum, match(curline, '\S') + 1, 1), 'name')
     endif
 
-    if syn_name =~ 'Comment'
+    if syn_name_end =~ 'Comment' && syn_name_start =~ 'Comment'
         return <SID>XmlIndentComment(a:lnum)
+    elseif empty(syn_name_start) && empty(syn_name_end)
+        " non-xml tag content: use indent from 'autoindent'
+        return pind + shiftwidth()
     endif
 
-    let pline = getline(ptag)
-    let pind  = indent(ptag)
     " Get indent from previous tag line
     let ind = <SID>XmlIndentSum(pline, -1, pind)
-    let t_ind = ind
     " Determine indent from current line
-    let ind = <SID>XmlIndentSum(getline(a:lnum), 0, ind)
+    let ind = <SID>XmlIndentSum(curline, 0, ind)
     return ind
 endfun
 
@@ -148,7 +157,7 @@
 endfunc
 
 " return indent for a commented line,
-" the middle part might be indented on additional level
+" the middle part might be indented one additional level
 func! <SID>XmlIndentComment(lnum)
     let ptagopen = search(b:xml_indent_open, 'bnW')
     let ptagclose = search(b:xml_indent_close, 'bnW')
