使用XML标记,我在诗歌中标记了某些功能(但丁的《神曲》)。当读者阅读这首诗时,我希望能够为他/她提供按钮,以显示或隐藏(通过预定的格式更改)她/他想要的任何功能。
因此,我试图在我的XSLT样式表中编写一个函数,该函数查找任何XML元素的所有实例并修改内容的格式。
我已经做了大量的阅读/研究工作,并且我想我知道我需要一个循环来查找所有实例并对其进行修改,如下所示:
<script type="text/javascript">
function displayal() {
var elems = document.getElementsByTagName('al');
for(var i = 0; i < 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 < 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>
如果您到目前为止做到了,那就太好了。谢谢!
您应该在这里仔细了解数据流。XSL转换的输入是XML和XSL样式表。输出是包含script
元素的HTML 。HTML浏览器显示HTML,并等待它将传递给HTML元素的用户界面事件。
您将需要安排,当HTML浏览器将某个事件(您的选择)通知您的HTML元素之一时,您的元素将具有该事件的处理程序。也许您可以onclick
通过向onclick
HTML按钮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] 删除。
我来说两句