显式调用契约
调用时先在调用方求值 arg 与 fill;随后宏体在定义位置运行,只能看到显式输入。
<xs:entry xmlns:xs="https://xmlsquish.moesegfault.dev/ns"
xmlns:app="urn:example:app">
<xs:import src="./macros.xml"/>
<xs:expand ref="app:greeting">
<xs:arg name="name" value="Klee"/>
</xs:expand>
</xs:entry>字符串参数
在 callee frame 创建前于调用方求值。
value="literal"get="arg.other"- 只产生文本的求值正文
结构化内容
用 xs:insert 把标量作为转义文本输出;它绝不会把 <、> 或 & 重新解析成标记。需要保留结构时使用 xs:fill/xs:slot。
<xs:macro name="app:panel">
<Panel><xs:slot name="body" required="true"/></Panel>
</xs:macro>
<xs:expand ref="app:panel">
<xs:fill name="body"><Message>Hello</Message></xs:fill>
</xs:expand>