是否可以在 XSLT 1.0 中的方括号中创建属性

Is it possible to create an attribute in square brackets in XSLT 1.0

有一个用于 AMP 页面轮播的代码片段,具有一定的交互性 https://ampbyexample.com/advanced/image_galleries_with_amp-carousel/

<amp-carousel controls
  width="400"
  height="100">
  <amp-img src="/img/image1.jpg"
    width="100"
    height="75"
    role="button"
    tabindex="0"
    [class]="selectedSlide == 0 ? 'selected' : ''"
    on="tap:AMP.setState({selectedSlide: 0})"></amp-img>
  <amp-img src="/img/image2.jpg"
    width="100"
    height="75"
    role="button"
    tabindex="1"
    [class]="selectedSlide == 1 ? 'selected' : ''"
    on="tap:AMP.setState({selectedSlide: 1})"></amp-img>
  <amp-img src="/img/image3.jpg"
    width="100"
    height="75"
    role="button"
    tabindex="2"
    [class]="selectedSlide == 2 ? 'selected' : ''"
    on="tap:AMP.setState({selectedSlide: 2})"></amp-img>
</amp-carousel>

我想使用 XSLT 将它集成到我的页面中。问题是元素的属性使用带方括号的属性。 是否可以在 XSLT 中创建具有此类特定属性 ([class]="selectedSlide == 1 ? 'selected' : ''") 的此类元素?

XML本身不允许属性名称包含方括号。

您可以输出您所描述形式的文本,但强烈不推荐这样做。肯定不会是XML.

我以前从未遇到过这种不完全XML 的方言,但 XSLT 不支持序列化为这种格式。您可以通过某种 post 处理来实现它,例如将属性名称输出为 _class_="value",然后使用某种正则表达式处理将 _class_ 更改为 [class]

如果您有进取心,Saxon 允许您实现自己的序列化方法,因此您可以子类化 XML 序列化方法,以将 _class_ 类似地替换为 [class],或者将特殊属性放在序列化程序可识别的命名空间中。