gpt4 book ai didi

javascript - XSLT:在元素标记中输出 Javascript

转载 作者:行者123 更新时间:2023-11-29 18:27:18 27 4
gpt4 key购买 nike

使用 XSLT,我如何输出以下内容

<div onclick="var e = document.getElementById('<xsl:value-of select="div_id"/>');
if(e.style.display == 'block')
e.style.display = 'none';
else
{
e.style.display = 'block';
e.scrollIntoView();
}"
style="text-decoration: underline; color: blue;"
>Toggle</div>

注意:代码应该驻留在onclick属性中,我只能访问文档的主体。

最佳答案

一种方法是使用 AVT ( Attribute Value Templates ):

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="/">
<div style="text-decoration: underline; color: blue;"
onclick="var e = document.getElementById('{div_id}');
if(e.style.display == 'block')
e.style.display = 'none';
else
{{
e.style.display = 'block';
e.scrollIntoView();
}}">Toggle</div>
</xsl:template>
</xsl:stylesheet>

当此转换应用于以下 XML 文档时:

<div_id>3</div_id>

产生了想要的结果:

<div style="text-decoration: underline; color: blue;" onclick="var e = document.getElementById('3');               if(e.style.display == 'block')                 e.style.display = 'none';               else               {                 e.style.display = 'block';                 e.scrollIntoView();               }">Toggle</div>

请注意:指定此类 AVT(属性值模板)时,必须将必须生成的任何 {} 字符加倍.

另一种方法是使用xsl:attribute:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="/">
<div style="text-decoration: underline; color: blue;">
<xsl:attribute name="onclick">
var e = document.getElementById('<xsl:value-of select="div_id"/>');
if(e.style.display == 'block')
e.style.display = 'none';
else
{
e.style.display = 'block';
e.scrollIntoView();
}</xsl:attribute>Toggle</div>
</xsl:template>
</xsl:stylesheet>

关于javascript - XSLT:在元素标记中输出 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11758151/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com