【问题标题】:Getting an element from XSL that creates HTML, from Javascript从 Javascript 获取创建 HTML 的 XSL 元素
【发布时间】:2012-02-25 02:42:45
【问题描述】:

我有一个包含 XSL 信息的 asp:xml 标记:

<asp:xml id="XmlMetadataFields"  TransformSource="ShowClientTypesPerItemActivity.xsl" ></asp:xml>

在这个 XSL 中,有一些生成 HTML 的代码。这里相关的位:

<xsl:when test="@FieldTypeID = 5">
    <input type="checkbox">
        <xsl:if test="Visibility = 0">
            <xsl:attribute name="hidden">
                <xsl:value-of select="@Visibility"/>
            </xsl:attribute>
        </xsl:if>
        <xsl:attribute name="name">
            DefValue<xsl:value-of select="@FieldID"/>
        </xsl:attribute>
        <xsl:attribute name="id">
            DefValue<xsl:value-of select="@FieldID" />
        </xsl:attribute>
        <xsl:if test="Value = true">
            <xsl:attribute name="checked">
                <xsl:value-of select="Value"/>
            </xsl:attribute>
        </xsl:if>
    </input>
</xsl:when>

一个 Javascript 函数试图在这个 XSL 中调用 HTML:

if(document.all["DefValue639"].checked)

问题是,javascript 在 XSL 中找不到元素。当我右键单击 HTML 页面输出到客户端时,我也找不到输出(在任何地方都找不到 DefValue)。

如何从 Javascript 访问 XSL?我完全误解了什么吗?

【问题讨论】:

  • 你想用 xls 实现什么? xsl 的典型用途是将纯 xml 转换为 html。
  • 这就是这个 XSL 所做的 - 它输出 HTML 至少这是浏览器可以看到的,尽管我在右键单击“查看源代码”时看不到 HTML 代码。顺便说一句,在 Chrome 中我什至看不到复选框。
  • 抱歉,您是在尝试实际访问 XSL 本身,还是通过将 XSL 覆盖到 XML 上生成的 HTML?
  • 另外,当你对生成的代码进行查看->源代码时会发生什么。你看到这里的“id”了吗?而且,不要使用document.all,使用document.getElementById()
  • XSLT 转换似乎打算在服务器端执行,而不是在客户端。因此,不必担心如何使用 Javascript 执行 XSLT 转换。真正的问题是这种转换是否在服务器端执行,以及为什么它的结果没有输出。答案只能通过查看相应的 ASP.NET 代码来找到,而您尚未向我们展示这些代码。

标签: javascript asp.net html xslt


【解决方案1】:

您必须像这样制作input-tag 才能设置属性:

<xsl:element name="input">
    <xsl:attribute name="type">checkbox</xsl:attribute>
    ...
</xsl:element>

【讨论】:

  • 我试过这个,但由于某种未知的原因,复选框变成了一个文本框。我仔细检查了我所做的一切是否正确,甚至输出中的 HTML 也写为复选框,但它显示为文本框。
  • 你能给我们一个输出的例子吗?
  • 在这里粘贴输出时,我发现了问题。 XSL 在输出中添加了空白间距,因为我用 XSL 的行之间的间距编写了它。谢谢!
猜你喜欢
  • 2020-02-27
  • 2020-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多