<xsl:attribute> 元素
创建一个属性节点并将其附加到输出元素上。
<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>
<xsl:attribute name="src">
<xsl:value-of select="imagenames/imagename" />
</xsl:attribute>
</IMG>
输出
<IMG src=" imagenames/imagename"/>
虽然 <xsl:attribute> 元素对于动态创建在转换文档前未知的输出属性可能极其有用,但是如果您知道这些属性,则无需使用这个元素。 在前面的示例中,可能已经知道 IMG 元素必须包含 src 属性。 因为您在转换文档前已知道此要求,因此不必使用 <xsl:attribute> 元素。 使用以下指令可以简化转换语法,并且仍可以实现相同的结果:
<IMG src="{imagenames/imagename}"/>
通过使用 <xsl:attribute> 元素来代替属性值模板,您可以:
计算属性名。
在生成属性时使用条件、模板和属性集。
向由 <xsl:copy> 或 <xsl:element> 元素生成的元素中添加属性。
本节还包含下列完整示例。