四种源码根
xs:module 只能包含 import 与 macro。xs:entry 先声明、后构造输出;entry 不能被导入。
xs:entry先接受声明,再构造最终文档。
xs:module注册定义,但没有可执行正文。
xs:pack聚合编译后的入口与完整资源 bytes,输出可复现 ZIP 格式的 .pack。
xs:sopack保存 IR、编译模块、宏、资源和元信息,不包含最终成品。
定义一个模块
<xs:module xmlns:xs="https://xmlsquish.moesegfault.dev/ns"
xmlns:app="urn:example:app">
<xs:macro name="app:greeting">
<xs:param name="name"/>
<Hello><xs:insert get="arg.name"/></Hello>
</xs:macro>
</xs:module>从入口导入
相对导入路径以声明它的文件为基准。管理器按源码身份只装载一次,并在展开前冻结导入闭包。
<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>