I don't really like the syntax, but that's because @ symbols are ugly. I think it could be easier to deal with (and code with) if you did something XML-esque like Flex and ASP.NET do with a namespace:

Code:
<mx:Tag />
<mx:Tag></mx:Tag>

<!-- or -->

<asp:Tag />
<asp:Tag></asp:Tag>
Regarding the "regionblock" and "region" names, I'll give you my thoughts: a region is a section of the page that can have multiple views, or templates. you could do something like:

Code:
<ns:region name="search">

  <ns:view name="resultSet">
    <h3><ns:var name="title" /></h3>
    <ul>
      <li>Author: <ns:var name="author" /></li>
      <li>Year: <ns:var name="year" /></li>
      <li>Description: <ns:var name="description" /></li>
    </ul>
  </ns:view>

  <ns:view name="emptyResultSet">
    <h3>There were no results</h3>
    <p>Perhaps you could try another search query.</p>
  </ns:view>

  <ns:view name="error">
    <h3>An error occurred</h3>
    <p><ns:var name="error" /></p>
  </ns:view>

</ns:region>
alternatively, you could name variables by using the variable name as the tag name rather than having a 'var' tag -- you would just have reserved variable names. <ns:title />, for example.