<xsl:attribute-set> 元素

定义命名的属性集。

<xsl:attribute-set
  name = QName
  use-attribute-sets = QNames
</xsl:attribute-set>

特性

  • name
    必选。 属性集的限定名name 属性的值为限定名称。
  • use-attribute-sets
    通过空白分隔的属性集列表,按照限定名 的指定。 指定此属性将在每个列出的属性集中声明每个属性。

元素信息

出现次数

无限制

父元素

xsl:stylesheetxsl:transform

子元素

xsl:attribute

备注

<xsl:attribute-set> 元素的内容由零个或多个指定集合中属性的 <xsl:attribute> 元素组成。 若要使用属性集,请对 <xsl:element><xsl:copy><xsl:attribute-set> 元素指定 use-attribute-sets 属性。

如果对 <xsl:attribute-set> 元素使用 use-attribute-sets 属性,将会出现错误,并导致属性集直接或简介地使用自身。

指定 use-attribute-sets 属性可能是在元素上声明多个属性的有效方法。 若要使用 <xsl:attribute> 实现同样的结果,必须为每个命名属性集中的每个属性使用 <xsl:attribute> 元素。 您需要添加这些 <xsl:attribute> 元素作为 <xsl:element><xsl:copy><xsl:attribute-set> 元素的内容。

也可以通过在文本结果元素上指定 xsl:use-attribute-sets 属性来使用属性集。 对于文本结果元素,属性将按照以下顺序添加:

  1. xsl:use-attribute-sets 属性中命名的属性集的属性,按照在该属性中列出的顺序。

  2. 在文本结果元素上指定的属性。

  3. 将添加由 <xsl:attribute> 元素指定的任何属性。

因为将属性添加到元素后,将替换该元素任何同名的现有属性,所以,属性集中指定的属性可能会被在文本结果元素本身上指定的属性所重写。

每次使用该属性集时,<xsl:attribute-set> 元素中每个 <xsl:attribute> 元素内的模板都将进行实例化。 实例化时所使用的当前节点和当前节点列表与实例化具有 use-attribute-setsxsl:use-attribute-sets 属性的元素时相同。 不过,确定哪些变量绑定可见的是样式表中 <xsl:attribute> 元素的位置,而不是具有 use-attribute-sets xsl:use-attribute-sets 属性的元素的位置。 因此,只有由顶级 <xsl:variable><xsl:param> 元素声明的变量和参数才是可见的。

属性集中具有相同扩展名称的多个定义将合并。 导入优先级较高的定义中的属性优先于导入优先级较低的定义中的属性。

如果两个属性集的扩展名称相同并且导入优先级相等,而且都包含同一个属性,除非导入优先级更高的属性集定义也包含该属性,否则将出错。

以下主题提供 <xsl:attribute-set> 元素的示例。