<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:copyxsl:elementxsl:fallbackxsl:for-eachxsl:ifxsl:messagexsl:otherwisexsl:paramxsl:templatexsl:variablexsl:whenxsl:with-param

子元素

xsl:apply-importsxsl:apply-templatesxsl:call-templatexsl:choosexsl:copyxsl:copy-ofxsl:fallbackxsl:for-eachxsl:ifxsl:messagexsl:numberxsl:textxsl:value-ofxsl:variable

备注

此元素的内容指定属性的值。

在转换过程中可以通过将 <xsl:attribute> 元素放在生成输出的元素(如 <xsl:copy> 元素)内来添加或修改属性。 请注意,可以对输出元素直接使用 <xsl:attribute>,而不仅限与 <xsl:element> 一起使用。

必须在向元素添加子级之前应用所有属性。

示例

此简短的示例所生成的属性从 XML 源获取值。 它使用可从 XML 源(在本示例中为 "imagenames/imagename")检索相应数据的 XPath 表达式,以 <IMG src="value-from-XML-source"/> 形式生成输出。

ms256165.collapse_all(zh-cn,VS.120).gifXSLT 文件

<IMG>
  <xsl:attribute name="src">
    <xsl:value-of select="imagenames/imagename" />
  </xsl:attribute>
</IMG>

ms256165.collapse_all(zh-cn,VS.120).gif输出

<IMG src=" imagenames/imagename"/>

虽然 <xsl:attribute> 元素对于动态创建在转换文档前未知的输出属性可能极其有用,但是如果您知道这些属性,则无需使用这个元素。 在前面的示例中,可能已经知道 IMG 元素必须包含 src 属性。 因为您在转换文档前已知道此要求,因此不必使用 <xsl:attribute> 元素。 使用以下指令可以简化转换语法,并且仍可以实现相同的结果:

<IMG src="{imagenames/imagename}"/>

通过使用 <xsl:attribute> 元素来代替属性值模板,您可以:

  • 计算属性名。

  • 在生成属性时使用条件、模板和属性集。

  • 向由 <xsl:copy> 或 <xsl:element> 元素生成的元素中添加属性。

本节还包含下列完整示例。