使用Javascript修改XML元素(在XSLT样式表中)

用户3528000

使用XML标记,我在诗歌中标记了某些功能(但丁的《神曲》)。当读者阅读这首诗时,我希望能够为他/她提供按钮,以显示或隐藏(通过预定的格式更改)她/他想要的任何功能。

因此,我试图在我的XSLT样式表编写一个函数该函数查找任何XML元素的所有实例并修改内容的格式。

我已经做了大量的阅读/研究工作,并且我想我知道我需要一个循环来查找所有实例并对其进行修改,如下所示:

 <script type="text/javascript">
            function displayal() {
                var elems = document.getElementsByTagName('al');
                for(var i = 0; i &lt; elems.length; i++) {
                    elems[i].style.color = 'blue';
                }
            }                                               
 </script>   

仅供参考,“ al”是我要分配的标签名称。从理论上讲,以上内容将在'al'标签中找到的所有文本变为蓝色。

尽管以上内容可能是不正确的(并且肯定会接受更正),但我相信我还有一个更基本的问题:我根本不知道如何告诉我要放入XSLT样式表中的函数以查看XML文档!我能够找到的唯一可以理解的示例是那些被修改的元素在同一html文档中的示例。

如果有帮助,这是我的xml文件的一部分:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="../para3.xsl"?>

<canto id="3">
    <title> Paradiso 3 </title>
    <ter id="1">
        <l1>Quel sol che pria d'amor mi scaldò 'l petto,</l1>
        <l2>di bella verità m'avea scoverto,</l2>
        <l3><rp>provando e riprovando</rp>, il dolce aspetto;</l3>
    </ter>
    <ter id="2">
        <l1>e io, per <al>confessar corretto e certo</al></l1>
        <l2>me stesso, tanto quanto si convenne</l2>
        <l3>leva' il capo a proferer più erto;</l3>
    </ter>
    <ter id="3">   
        <l1>ma visïone apparve che ritenne</l1>
        <l2>a sé me tanto stretto, per vedersi,</l2>
        <l3>che di mia confession non mi sovvenne.</l3>
    </ter>
    [....]
    <cog> ... </cog>

这是xsl文件的要点:

<?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        exclude-result-prefixes="xs"
        version="2.0">
<xsl:template match="/">
<html>
    <head>
      <title><xsl:value-of select="canto/title"/></title>
    </head>
    <body>
      <script type="text/javascript">
         function displayal()
            var elems = document.getElementsByTagName('al');
            for(var i = 0; i &lt; elems.length; i++) {
            elems[i].style.color = 'blue';
         }                                               
       </script>   
       <div id="container" style="width:800px;background-color:#FFD700">
       <div id="header" style="background-color:#FFA500;height:100px;">
       <h1 style="margin-bottom:10;">Code and Poetry</h1></div>

       <div id="menu" style="width:200px;float:left;">
       <p>Display Options</p>
         <button onclick="displayil()">Show Alliteration</button>
         <button onclick="undisplayil()">Hide Alliteration</button>
       </div>
       <div id="content" style="background-color:#EEEEEE;width:600px;float:left;">
           <h2><i><xsl:value-of select="canto/title"/></i></h2>
           <xsl:apply-templates select="canto/ter"/>
           <xsl:apply-templates select="canto/cog"/>                       
       </div>

如果您到目前为止做到了,那就太好了。谢谢!

ajm475du

您应该在这里仔细了解数据流。XSL转换的输入是XML和XSL样式表。输出是包含script元素的HTML HTML浏览器显示HTML,并等待它将传递给HTML元素的用户界面事件。

您将需要安排,当HTML浏览器将某个事件(您的选择)通知您的HTML元素之一时,您的元素将具有该事件的处理程序。也许您可以onclick通过向onclickHTML按钮input元素添加属性来放置处理程序也许相反,您只是将onclick处理程序附加到一个span元素或一个元素,该元素或div元素包含代表您的可点击区域的文本或图形。onclick处理器将指定一个JavaScript函数来调用,比如你的函数displayal

您的函数displayal将需要对HTML元素进行操作,而不是对element中的XML进行操作canto因此,您将不希望使用getElementsByTagName('al')某些函数,而应该使用某些函数来控制XSL模板生成的任何HTML元素,例如canto/ter如果这些将是HTML无序列表ul元素,那么您将使用getElementsByTagName('ul')

顺便说一句,我建议进行修改以更正函数中的花括号displayal

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Xslt:如何通过Xslt样式表中的类选择器选择xml元素?

来自分类Dev

xml到使用xslt样式表html的html

来自分类Dev

使用JavaScript更改样式表中没有的类样式(不是单个元素)

来自分类Dev

如何使用带有XML文件中命名空间的XSLT样式表展平分层XML文件

来自分类Dev

从XML文件中删除样式表

来自分类Dev

XSLT样式表不适用于Firefox中的XML。如何解决?

来自分类Dev

无法通过XSLT样式表中的模板显示来自RSS / XML的图像

来自分类Dev

无法转换XML“样式表不包含文档元素”(除delphi之外均可使用)

来自分类Dev

XSLT样式表中不需要的节点

来自分类Dev

xslt样式表中的嵌入式HTA

来自分类Dev

XSLT样式表中的XInclude(eXist-db)

来自分类Dev

XSLT样式表中不需要的节点

来自分类Dev

获取使用本机Javascript在样式表中设置的CSS样式

来自分类Dev

如何使用Java将xml样式表包含到XML文件中

来自分类Dev

修改Jekyll样式表SCSS / CSS

来自分类Dev

如何修改导线样式表

来自分类Dev

修改Jekyll样式表SCSS / CSS

来自分类Dev

如何使用C#在XML文件中添加XSL样式表?

来自分类Dev

如何在 xml 中为 xsl 样式表使用相对路径?

来自分类Dev

Excel 忽略 Excel Open XML 样式表中的边框

来自分类Dev

XSLT删除源的样式表

来自分类Dev

正确编码 XSLT 样式表的问题

来自分类Dev

使用xml文档处理CSS样式表

来自分类Dev

如何在Android中使用多个xml“样式表”?

来自分类Dev

需要xslt样式表才能从下面的输入xml转换为输出xml

来自分类Dev

Rails中的样式表

来自分类Dev

使用属性样式表

来自分类Dev

无法使用样式表

来自分类Dev

如何使用JavaScript动态更改级联样式表

Related 相关文章

热门标签

归档