xmlsquishsource. compose. build.
English

XML DSL 与项目指南

把产品与库分开

entry 构建提示词,pack 交付入口与资源,SOPack 分发编译库;module 发布宏;import 只让模块定义可见,并不会执行模块。

跳转到章节
本页目录

四种源码根

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>