# WXML 基础

WXML（WeiXin Markup Language）是框架设计的一套标签语言，用来描述界面结构。这也被称为页面的 **模板** 。

最简单的例子可参考 [WXML 快速入门](/miniprogram/dev/framework/view/README.md) 。

WXML 的写法类似于 HTML 和 XML，但又有所差异。简单来说，它们都主要都基于标签。

WXML 语法根据 [组件框架](/miniprogram/dev/framework/component-framework/index.md) 的不同而有细微差异。

## 注释

`<!--` 与 `-->` 之间是注释，不会用于界面渲染。注释不能写在标签内部。

## 标签

标签分为起始标签 `<...>` 和闭合标签 `</...>`。

```html
<view> <!-- 起始标签 -->
</view> <!-- 闭合标签 -->
```

起始标签必须有对应的闭合标签。如果标签内部没有内容，可以使用自闭合标签 `<.../>`。

```html
<view /> <!-- 自闭合标签 -->
<!-- 等价于 -->
<view></view>
```

通常来说，标签对应着组件；但也有些特殊的 [框架标签](framework-tag) 并不对应于组件，而是承担特殊的框架语义。

## 属性

起始标签和自闭合标签内部可以放入属性。属性有对应的属性值。

```html
<image src="https://res.wx.qq.com/wxdoc/dist/assets/img/0.4cb08bb4.jpg"></image>
<!-- 或者 -->
<image src="https://res.wx.qq.com/wxdoc/dist/assets/img/0.4cb08bb4.jpg" />
```

有些属性的属性值可以省略。

```html
<view hidden> 这些文字会被隐藏 </view>
```

标签上具体支持哪些属性，取决于标签对应的组件。

* [内置组件](/miniprogram/dev/framework/view/component.md) 所支持的组件属性可以参考它们各自的文档。
* [自定义组件](/miniprogram/dev/framework/component-framework/index.md) 则取决于自定义组件自身定义的 property。
* 框架本身还有一些 [框架属性](framework-attribute) ，对所有组件都有效。

## 文本内容

标签之间可以放入文本内容。

```html
<view> 你好，世界！ </view>
```

## 转义符

WXML 的转义符与 XML entities 保持一致。其中最重要的有这些：

| 原始字符 | 转义后 |
| -------- | ------ |
| `<` | `&lt;` |
| `>` | `&gt;` |
| `"` | `&quot;` |
| `&` | `&amp;` |

```html
<view> 1 + 2 &lt; 4 </view> <!-- 即 1 + 2 < 4 -->
```

glass-easel 组件框架完全使用标准 XML entities 作为转义符；对于 exparser 组件框架，属性值内部应使用反斜杠 `\` 来转义。

对于数据绑定内部的转义，应使用 JS 转义符。

## meta 标签

> 仅 glass-easel 组件框架支持

`<!...>` 这样的标签是 meta 标签。它没有结束标签。

meta 标签默认没有任何语义。它是为第三方模版编译中间件预留的。
