XML 配置文件格式提供了一致的文件结构,易于学习和记忆,以便配置新的系统。
AutoYaST 控制文件使用 XML 来描述系统安装和配置。XML 是一种常用的标记语言,许多用户熟悉该语言的概念和用于处理 XML 文件的工具。如果您编辑现有的控制文件或创建新的控制文件,强烈建议验证控制文件。可以使用验证 XML 解析器(例如 xmllint 或 jing)来完成此操作(请参阅 第 3.3 节,“手动创建/编辑控制文件”)。
以下示例显示了 XML 格式的控制文件
<?xml version="1.0"?>
<!DOCTYPE profile>
<profile
xmlns="http://www.suse.com/1.0/yast2ns"
xmlns:config="http://www.suse.com/1.0/configns">
<partitioning config:type="list">
<drive>
<device>/dev/sda</device>
<partitions config:type="list">
<partition>
<filesystem config:type="symbol">btrfs</filesystem>
<size>10G</size>
<mount>/</mount>
</partition>
<partition>
<filesystem config:type="symbol">xfs</filesystem>
<size>120G</size>
<mount>/data</mount>
</partition>
</partitions>
</drive>
</partitioning>
<scripts>
<pre-scripts>
<script>
<interpreter>shell</interpreter>
<filename>start.sh</filename>
<source>
<![CDATA[
#!/bin/sh
echo "Starting installation"
exit 0
]]>
</source>
</script>
</pre-scripts>
</scripts>
</profile>下面是一个基本的控制文件容器的示例,其具体内容将在本章后面进行说明。
<?xml version="1.0"?> <!DOCTYPE profile> <profile xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns"> <!-- RESOURCES --> </profile>
根节点 <profile> 包含一个或多个不同的资源元素。允许的资源元素在模式文件中指定。
资源元素包含多个不同的属性和资源元素,或者相同资源的多个实例,或者为空。资源元素的允许内容在模式文件中指定。
属性元素为空或包含文字值。每个资源元素中允许的属性元素和值在模式文件中指定。
一个元素可以是其他元素的容器(资源),也可以具有文字值(属性);它不能同时具有两者。此限制在模式文件中指定。具有多个值的配置组件必须表示为属性值中的嵌入式列表,或作为嵌套资源。
空元素,例如 <foo></foo> 或 <bar/>,将 不会出现在解析的数据模型中。通常,这被解释为需要一个合理的默认值。在需要显式空字符串的情况下,请使用 CDATA 部分:<foo><![CDATA[]]></foo>。
嵌套资源元素允许构建任意级别的树状配置组件结构。
有两种类型的嵌套资源:映射和列表。映射(也称为关联数组、哈希或字典)包含带有标签名称标识的混合内容。列表或数组具有所有相同类型的项目。
...
<drive>
<device>/dev/sda</device>
<partitions config:type="list">
<partition>
<size>10G</size>
<mount>/</mount>
</partition>
<partition>
<size>1G</size>
<mount>/tmp</mount>
</partition>
</partitions>
</drive>
....在上面的示例中,drive 资源是一个映射,包含一个 device 属性和一个 partitions 资源。partitions 资源是一个列表,包含多个 partition 资源的实例。每个 partition 资源是一个映射,包含一个 size 和 mount 属性。
嵌套资源的默认类型是映射,尽管您可以根据需要指定它。必须使用 config:type="list" 属性将列表标记为列表。
从 openSUSE Leap 15.3 开始,可以使用 t 属性代替 config:type 来指定元素类型。
<mode t="boolean">true</mode>
全局属性用于定义资源和属性上的元数据。属性用于定义上下文切换。它们还用于命名和键入属性,如前几节所示。属性位于单独的命名空间中,因此无需将它们视为默认命名空间中的保留字。
config:type 属性确定解析的数据模型中资源或属性的类型。对于资源,列表需要 list 类型,而映射是默认类型,不需要属性。有一个例外。当映射为空时,需要将其标记为映射,以免与简单的字符串值混淆。
<general t="map" />
对于属性,可以使用 boolean、symbol 和 integer,默认值为字符串。
除了映射和字符串值(如前所述)之外,属性不是可选的。可能看起来属性是可选的,因为模式的各个部分在数据类型的使用方面并不十分一致。在某些地方,枚举由符号表示,而在其他地方需要字符串。有些资源需要 config:type="integer",而另一些资源将从字符串属性解析数字。有些资源使用 config:type="boolean",而另一些资源需要 yes 甚至 1。如有疑问,请参阅模式文件。