我正在进行 XSLT 转换,以创建具有
<button>
属性的 HTML onclick
元素。当我定义 onclick
属性 before 按钮的文本内容时,一切都会按预期工作。这是有效的代码:
<xsl:element name="button">
<xsl:attribute name="onclick">
console.log(600);
</xsl:attribute>
<xsl:text>Click Me</xsl:text>
</xsl:element>
输出:
<button onclick="console.log(600);">Click Me</button>
但是,如果我将
xsl:attribute
放在 xsl:text
内容之后,如下所示:
<xsl:element name="button">
<xsl:text>Click Me</xsl:text>
<xsl:attribute name="onclick">
console.log(600);
</xsl:attribute>
</xsl:element>
该属性被忽略,输出仅包含文本:
<button>Click Me</button>
为什么将xsl:attribute
放在
xsl:text
之后会导致属性消失? XSLT 中是否有一条规则要求在内容之前定义属性?如果是,其背后的原因是什么?为什么它会这样?
https://www.w3.org/TR/xslt-10/#creating-attributes:
以下均为错误:所以,是的,您需要在任何子节点(如文本节点)之前输出属性,否则您可能会收到错误或 XSLT 处理器会忽略该属性。在添加子元素后向元素添加属性 它;实现可能会发出错误信号或忽略 属性。