org.eclipse.wst.html.core.tests.parser.ParserTest4
Source :
<a>

<% a %>
<% b %>
</a>


StructuredDocument Regions :
[0, 3] (<a>)
[3, 5] (

)
[5, 6] (<)
[6, 8] (% )
[8, 10] (a )
[10, 11] (%)
[11, 13] (>
)
[13, 14] (<)
[14, 16] (% )
[16, 18] (b )
[18, 19] (%)
[19, 21] (>
)
[21, 25] (</a>)

Tree :
#document
--a/a@[0, 3] (<a>)@[21, 25] (</a>)
----#text(\n\n<% a %>\n<% b %>\n)@{[3, 5] (\n\n),[5, 6] (<),[6, 8] (% ),[8, 10] (a ),[10, 11] (%),[11, 13] (>\n),[13, 14] (<),[14, 16] (% ),[16, 18] (b ),[18, 19] (%),[19, 21] (>\n)}

Source :
<a>
<
<% a %>
<% b %>
</a>


StructuredDocument Regions :
[0, 3] (<a>)
[3, 4] (
)
[4, 5] (<)
[5, 6] (
)
[6, 7] (<)
[7, 9] (% )
[9, 11] (a )
[11, 12] (%)
[12, 14] (>
)
[14, 15] (<)
[15, 17] (% )
[17, 19] (b )
[19, 20] (%)
[20, 22] (>
)
[22, 26] (</a>)

Tree :
#document
--a/a@[0, 3] (<a>)@[22, 26] (</a>)
----#text(\n<\n<% a %>\n<% b %>\n)@{[3, 4] (\n),[4, 5] (<),[5, 6] (\n),[6, 7] (<),[7, 9] (% ),[9, 11] (a ),[11, 12] (%),[12, 14] (>\n),[14, 15] (<),[15, 17] (% ),[17, 19] (b ),[19, 20] (%),[20, 22] (>\n)}

Source :
<a>
<b
<% a %>
<% b %>
</a>


StructuredDocument Regions :
[0, 3] (<a>)
[3, 4] (
)
[4, 7] (<b
)
[7, 8] (<)
[8, 10] (% )
[10, 12] (a )
[12, 13] (%)
[13, 15] (>
)
[15, 16] (<)
[16, 18] (% )
[18, 20] (b )
[20, 21] (%)
[21, 23] (>
)
[23, 27] (</a>)

Tree :
#document
--a/a@[0, 3] (<a>)@[23, 27] (</a>)
----#text(\n)@[3, 4] (\n)
----b@[4, 7] (<b\n)
------#text(<% a %>\n<% b %>\n)@{[7, 8] (<),[8, 10] (% ),[10, 12] (a ),[12, 13] (%),[13, 15] (>\n),[15, 16] (<),[16, 18] (% ),[18, 20] (b ),[20, 21] (%),[21, 23] (>\n)}

Source :
<a>
<bc
<% a %>
<% b %>
</a>


StructuredDocument Regions :
[0, 3] (<a>)
[3, 4] (
)
[4, 8] (<bc
)
[8, 9] (<)
[9, 11] (% )
[11, 13] (a )
[13, 14] (%)
[14, 16] (>
)
[16, 17] (<)
[17, 19] (% )
[19, 21] (b )
[21, 22] (%)
[22, 24] (>
)
[24, 28] (</a>)

Tree :
#document
--a/a@[0, 3] (<a>)@[24, 28] (</a>)
----#text(\n)@[3, 4] (\n)
----bc@[4, 8] (<bc\n)
------#text(<% a %>\n<% b %>\n)@{[8, 9] (<),[9, 11] (% ),[11, 13] (a ),[13, 14] (%),[14, 16] (>\n),[16, 17] (<),[17, 19] (% ),[19, 21] (b ),[21, 22] (%),[22, 24] (>\n)}

Source :
<a>
<bcd
<% a %>
<% b %>
</a>


StructuredDocument Regions :
[0, 3] (<a>)
[3, 4] (
)
[4, 9] (<bcd
)
[9, 10] (<)
[10, 12] (% )
[12, 14] (a )
[14, 15] (%)
[15, 17] (>
)
[17, 18] (<)
[18, 20] (% )
[20, 22] (b )
[22, 23] (%)
[23, 25] (>
)
[25, 29] (</a>)

Tree :
#document
--a/a@[0, 3] (<a>)@[25, 29] (</a>)
----#text(\n)@[3, 4] (\n)
----bcd@[4, 9] (<bcd\n)
------#text(<% a %>\n<% b %>\n)@{[9, 10] (<),[10, 12] (% ),[12, 14] (a ),[14, 15] (%),[15, 17] (>\n),[17, 18] (<),[18, 20] (% ),[20, 22] (b ),[22, 23] (%),[23, 25] (>\n)}

Source :
<a>
<bcde
<% a %>
<% b %>
</a>


StructuredDocument Regions :
[0, 3] (<a>)
[3, 4] (
)
[4, 10] (<bcde
)
[10, 11] (<)
[11, 13] (% )
[13, 15] (a )
[15, 16] (%)
[16, 18] (>
)
[18, 19] (<)
[19, 21] (% )
[21, 23] (b )
[23, 24] (%)
[24, 26] (>
)
[26, 30] (</a>)

Tree :
#document
--a/a@[0, 3] (<a>)@[26, 30] (</a>)
----#text(\n)@[3, 4] (\n)
----bcde@[4, 10] (<bcde\n)
------#text(<% a %>\n<% b %>\n)@{[10, 11] (<),[11, 13] (% ),[13, 15] (a ),[15, 16] (%),[16, 18] (>\n),[18, 19] (<),[19, 21] (% ),[21, 23] (b ),[23, 24] (%),[24, 26] (>\n)}

Source :
<a>
<bcde>
<% a %>
<% b %>
</a>


StructuredDocument Regions :
[0, 3] (<a>)
[3, 4] (
)
[4, 10] (<bcde>)
[10, 11] (
)
[11, 12] (<)
[12, 14] (% )
[14, 16] (a )
[16, 17] (%)
[17, 19] (>
)
[19, 20] (<)
[20, 22] (% )
[22, 24] (b )
[24, 25] (%)
[25, 27] (>
)
[27, 31] (</a>)

Tree :
#document
--a/a@[0, 3] (<a>)@[27, 31] (</a>)
----#text(\n)@[3, 4] (\n)
----bcde@[4, 10] (<bcde>)
------#text(\n<% a %>\n<% b %>\n)@{[10, 11] (\n),[11, 12] (<),[12, 14] (% ),[14, 16] (a ),[16, 17] (%),[17, 19] (>\n),[19, 20] (<),[20, 22] (% ),[22, 24] (b ),[24, 25] (%),[25, 27] (>\n)}

