XML模板中的超媒体控件与状态机驱动渲染
在XML模板中嵌入HATEOAS风格的链接控件,实现客户端状态自动机与服务器驱动的UI变迁。 · 难度:入门 · +10XP
超媒体模板引擎
借鉴HTML的<form>和<a>,在XML模板中定义<ctrl:link rel="next" href="{base}/page2" method="GET">。模板解析器根据当前状态(由XML元素属性表示),激活或禁用控件。本教程实现一个状态转换表:<ctrl:state name="editing">包含可用控件集合,<ctrl:transition event="save" target="saved">驱动状态变迁。重点:用XPath表达式动态计算href属性(如{$context/docId}),并处理安全约束(CSRF令牌嵌入为ctrl:token)。
<template xmlns:ctrl="http://hypermedia/controls">
<ctrl:state name="view">
<ctrl:link rel="edit" href="edit/{id}" method="GET"/>
<ctrl:button rel="delete" href="delete/{id}" method="DELETE"/>
</ctrl:state>
<data id="123">文档内容</data>
</template>