Appearance
ESML XSD(XML Schema)
ESML 的 canonical XML 由 XSD 定义。命名空间 https://www.ai4energy.cn/esml/v1, 版本 1.0.0,随语言规范以 MIT 发布。
文件
| 文件 | 用途 |
|---|---|
esml-v1.xsd | 单一入口:检查命名空间、根元素与基本属性 |
esml-canonical-basic.xsd | 语言元素内容校验(推荐) |
esml-canonical-common.xsd | 公共类型(被 basic / compute include) |
esml-canonical-compute.xsd | 计算任务 payload |
esml-canonical-project.xsd | Project 容器(自包含) |
canonical-basic 会 include common 与 compute,请保持三个文件在同一目录; 已在站内 /schema/ 下满足。
校验示例
canonical-basic 通过相对路径 include 公共与计算子集,校验器需要三个文件在同一目录; 先把它们下载到本地。
用 xmllint(如已安装):
bash
mkdir -p schema && cd schema
curl -O https://docs.ai4energy.cn/schema/esml-canonical-common.xsd
curl -O https://docs.ai4energy.cn/schema/esml-canonical-compute.xsd
curl -O https://docs.ai4energy.cn/schema/esml-canonical-basic.xsd
xmllint --noout --schema esml-canonical-basic.xsd ../model.esmlesml-v1.xsd 是自包含入口,单独下载即可:
bash
curl -O https://docs.ai4energy.cn/schema/esml-v1.xsd
xmllint --noout --schema esml-v1.xsd model.esml用 Python + lxml:
python
import urllib.request
from pathlib import Path
from lxml import etree
base = "https://docs.ai4energy.cn/schema/"
for name in (
"esml-canonical-common.xsd",
"esml-canonical-compute.xsd",
"esml-canonical-basic.xsd",
):
Path(name).write_bytes(urllib.request.urlopen(base + name).read())
schema = etree.XMLSchema(etree.parse("esml-canonical-basic.xsd"))
doc = etree.parse("model.esml")
print(schema.validate(doc))
for error in schema.error_log:
print(error)实测:IEEE 300 用例 case300.comp.esml 对 esml-v1.xsd 与 esml-canonical-basic.xsd 均通过(0 error)。
版本与兼容
targetNamespace为https://www.ai4energy.cn/esml/v1,当前版本1.0.0。- 新增可选元素时保持旧文档兼容:空值不序列化。
- 规范正文、conformance 语料与变更记录:
ai4energy/esml-language。
许可
XSD 属于语言规范,MIT 许可(见 esml-language/LICENSE.md)。 引擎二进制与运行时是商业软件,见 ESML 许可。