with

Change scope within tag.

{ name: "Mary", friend: { name: "John" } }
<div> <p>My name is: <template text:="name"></template></p> <p with:="friend">My name is: <template text:="name"></template></p> <p>My name is: <template text:="name"></template></p> </div>

Result:

<div> <p>My name is: Mary</p> <p>My name is: John</p> <p>My name is: Mary</p> </div>

Parent keys access.

{ greeting: "Hello", name: "Mary", friend: { name: "John" } }
<div> <p><b text:="greeting"></b><span text:="name"></span></p> <p with:="friend"><b text:="greeting"></b><span text:="name"></span></p> <p><b text:="greeting"></b><span text:="name"></span></p> </div>

Result:

<div> <p><b>Hello</b><span>Mary</span></p> <p><b>Hello</b><span>John</span></p> <p><b>Hello</b><span>Mary</span></p> </div>

Simple types access.

[["Mary", "John"], "dog", 3.14]
<div with:="0"> <p text:="0"></p> <template with:="1"> <p text:></p> </template> </div> <div with:="1"> <p text:></p> </div> <div with:="2"> <template with:> <p text:></p> </template> </div> <div with:="3"> <p>This will not render</p> </div>

Result:

<div> <p>Mary</p> <p>John</p> </div> <div> <p>dog</p> </div> <div> <p>3.14</p> </div>