POML 语法基础(Language Basics)
独立文件模式(Standalone .poml)
- 最常用方式:创建以
.poml
为后缀的文件,使用接近 XML 的语法描述提示。 - 顶层需要使用
<poml>
标签包裹全部内容,便于解析与渲染。
最小示例:
poml
<poml>
<p>Hello, world!</p>
</poml>
要点:
- 文件后缀:
.poml
- 必须有顶层
<poml>
,否则许多能力不可用。
Free Text 模式(不推荐)
- 你也可以不写
<poml>
,直接写普通文本,POML 会把它当作字符串处理。 - 但当前存在多项限制:
- 不能正确渲染任何使用尖括号包裹的"标签样"文本(如
<...>
)。 - 许多特殊字符不可用。
- 无法使用 POML 的诸多"结构化"能力。
- 不能正确渲染任何使用尖括号包裹的"标签样"文本(如
- 因此官方建议:始终使用顶层
<poml>
。
基本术语
-
标签(Tag):用尖括号
<
>
包裹的元素标记,如<p>
是开始标签,</p>
是结束标签。 -
属性(Attribute):写在开始标签内的键值对,形如
name="value"
,为元素提供附加信息,例如:poml<p speaker="human">Hello</p>
其中
speaker
为属性名,"human"
为属性值。 -
内容(Content):元素起止标签之间的文本或子元素,例如:
poml<p>Hello, world!</p>
Hello, world!
即为<p>
的内容。
转义字符(Escapes)
由于实现差异,POML 的转义语法与 HTML/XML 略有不同。以下为常用转义:
#quot;
表示"
#apos;
表示'
#amp;
表示&
#lt;
表示<
#gt;
表示>
#hash;
表示#
#lbrace;
表示{
#rbrace;
表示}
示例(在内容与属性值中使用转义):
poml
<poml>
<p>He said #quot;POML is cool!#quot; & smiled.</p>
<p note="curly #lbrace;demo#rbrace; & quote #quot;ok#quot;">Escapes in attributes</p>
</poml>
提示:多数场景无需转义,但当遇到无法正常显示或被误解析的字符时,使用以上转义可避免问题。
实践建议
- 始终以
<poml>
作为文件根元素;避免使用 Free Text 模式。 - 保持标签闭合与缩进清晰,便于阅读与诊断。
- 若内容中含有尖括号、引号、花括号、和号等,请使用转义。
- 将结构(标签/组件)与内容区分,便于后续与样式/模板结合使用(见入门篇与快速上手篇)。
练习
- 将一段自由文本改写为标准 POML:
poml
<!-- 原:Hello, world! -->
<poml>
<p>Hello, world!</p>
</poml>
- 在属性与内容中同时使用转义,确保不会被误解析:
poml
<poml>
<p meta="use #lbrace;curly#rbrace; and #quot;quotes#quot;">Show <tags> as text with #lt; and #gt;</p>
</poml>