创建一个属性节点并将其附加到输出元素上。
<xsl:attribute
name = "attribute-name"
namespace = "uri-reference">
</xsl:attribute>
特性
- name
必选。 要创建的属性的名称。 如果此值为限定名称 (QName),属性节点将在当前绑定到前缀上的命名空间中创建,除非namespace
属性重写此值。name
属性的值被解释为属性值模板(如同在<xsl:value-of>
元素中一样,对大括号中的表达式进行计算并转换为字符串)。 这样,可以从源 XML 计算或获取属性名称。
- namespace
已创建属性的命名空间统一资源标识符 (URI)。 如果name
属性包含 QName,指定的前缀将绑定到 namespace 属性所指定的命名空间上。 这可能会造成在序列化时添加其他命名空间声明。 此值解释为属性值模板。
元素信息
备注
此元素的内容指定属性的值。
在转换过程中可以通过将 <xsl:attribute>
元素放在生成输出的元素(如 <xsl:copy>
元素)内来添加或修改属性。 请注意,可以对输出元素直接使用 <xsl:attribute>
,而不仅限与 <xsl:element>
一起使用。
必须在向元素添加子级之前应用所有属性。
示例
此简短的示例所生成的属性从 XML 源获取值。 它使用可从 XML 源(在本示例中为 "imagenames/imagename"
)检索相应数据的 XPath 表达式,以 <IMG src="value-from-XML-source"/>
形式生成输出。
XSLT 文件
输出
<IMG src=" imagenames/imagename"/>
虽然 <xsl:attribute>
元素对于动态创建在转换文档前未知的输出属性可能极其有用,但是如果您知道这些属性,则无需使用这个元素。 在前面的示例中,可能已经知道 IMG
元素必须包含 src
属性。 因为您在转换文档前已知道此要求,因此不必使用 <xsl:attribute>
元素。 使用以下指令可以简化转换语法,并且仍可以实现相同的结果:
<IMG src="{imagenames/imagename}"/>
通过使用 <xsl:attribute>
元素来代替属性值模板,您可以:
计算属性名。
在生成属性时使用条件、模板和属性集。
向由
<xsl:copy>
或<xsl:element>
元素生成的元素中添加属性。
本节还包含下列完整示例。