Note that there are some explanatory texts on larger screens.

plurals
  1. POApplying Javascript to XSL
    primarykey
    data
    text
    <p>Ive noticed if i try to apply changed to a XSL file through java script it only affects the top most node created by the XSL.</p> <p>Example: I want to hide all the comments of multiple blog entries. Result only the top blog entry will hide the comments.</p> <p>I want to change the text of a hyper link. The hyperlink text will only change in top most node.</p> <p>How can I get the java script to affect all nodes created by the XSL file?</p> <p>HTML Code:</p> <pre><code>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&gt; &lt;html&gt; &lt;head&gt; &lt;link rel="stylesheet" type="text/css" href="style.css" &gt; &lt;title&gt;My Blog&lt;/title&gt; &lt;script&gt; function loadXMLDoc(fname) { var xmlDoc; // code for IE if (window.ActiveXObject) { xmlDoc = new ActiveXObject("MSXML2.FreeThreadedDOMDocument"); } // code for Mozilla, Firefox, Opera, etc. else if (document.implementation.createDocument) { xmlDoc = document.implementation.createDocument("", "", null); } else { alert('Your browser cannot handle this script'); } xmlDoc.async=false; xmlDoc.load(fname); return(xmlDoc); } function loadEntries() { xmlDoc = loadXMLDoc("blogData.xml"); xslDoc = loadXMLDoc("blogData.xsl"); // for Firefox, Safari, etc. if (document.implementation.createDocument) { var xsltProcessor = new XSLTProcessor(); xsltProcessor.importStylesheet(xslDoc); xsltProcessor.setParameter(null, "id", 11); var resultDocument = xsltProcessor.transformToFragment(xmlDoc,document); document.getElementById("entries").appendChild(resultDocument); } // Internet Explorer else if (window.ActiveXObject) { var xslTemplate=new ActiveXObject("MSXML2.XSLTemplate"); xslTemplate.stylesheet=xslDoc; var xslProc = xslTemplate.createProcessor(); xslProc.input = xmlDoc; xslProc.addParameter("id", 11); xslProc.transform(); document.getElementById("entries").innerHTML = xslProc.output; } } function displayResult() { var xml=loadXMLDoc("blogData.xml"); var xsl=loadXMLDoc("blogData.xsl"); // code for IE if (window.ActiveXObject) { var ex = xml.transformNode(xsl); document.getElementById("entries").innerHTML = ex; document.getElementById("comments").style.display = 'none'; document.getElementById("hideShowLink").innerHTML = 'Show Comments'; } // code for Mozilla, Firefox, Opera, etc. else if (document.implementation.createDocument) { var xsltProcessor = new XSLTProcessor(); xsltProcessor.importStylesheet(xsl); var resultDocument = xsltProcessor.transformToFragment(xml,document); document.getElementById("entries").appendChild(resultDocument); document.getElementById("comments").style.display = 'none'; document.getElementById("hideShowLink").innerHTML = 'Show Comments'; } } function hideShow(){ if(document.getElementById("comments").style.display == 'none'){ document.getElementById("comments").style.display = 'block'; document.getElementById("hideShowLink").innerHTML = 'Hide Comments'; } else { document.getElementById("comments").style.display = 'none'; document.getElementById("hideShowLink").innerHTML = 'Show Comments'; } } &lt;/script&gt; &lt;/head&gt; &lt;body onLoad="displayResult()"&gt; &lt;table width="100%" border="0"&gt; &lt;tr&gt; &lt;td colspan="2"&gt; &lt;div class="imgcentered"&gt; &lt;img src="banner.gif" alt="banner" /&gt; &lt;/div&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; &lt;div id="entries"&gt; &lt;/div&gt; &lt;/td&gt; &lt;td class="rightside"&gt; &lt;div class="rightbody"&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="index.html"&gt;Home&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Archives&lt;/li&gt; &lt;li&gt;Profile &lt;br/&gt; &lt;img src="pokemon.gif" alt="pokemin" width="40%"/&gt;&lt;br/&gt; &lt;br/&gt; &lt;dl&gt; &lt;dt&gt;&lt;b&gt;Name:&lt;/b&gt;&lt;/dt&gt; &lt;dd&gt;Ash Catchem&lt;/dd&gt; &lt;dt&gt;&lt;b&gt;Age:&lt;/b&gt;&lt;/dt&gt; &lt;dd&gt;Old Enough&lt;/dd&gt; &lt;dt&gt;&lt;b&gt;Birth Place:&lt;/b&gt;&lt;/dt&gt; &lt;dd&gt;Pallet Town&lt;/dd&gt; &lt;dt&gt;&lt;b&gt;Current Residence:&lt;/b&gt;&lt;/dt&gt; &lt;dd&gt;Kanto&lt;/dd&gt; &lt;dt&gt;&lt;b&gt;Occupation:&lt;/b&gt;&lt;/dt&gt; &lt;dd&gt;Pokemon Catcher&lt;/dd&gt; &lt;/dl&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/body&gt; &lt;/html&gt; </code></pre> <p>XSL Code:</p> <pre><code>&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt; &lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt; &lt;xsl:template match="/"&gt; &lt;html&gt; &lt;body&gt; &lt;div class="leftbody"&gt; &lt;!-- Loops Through all of the entries node in the XML and displays then in order by date descending order --&gt; &lt;xsl:for-each select="//entries"&gt; &lt;xsl:sort select="creationTime/@sort" order="descending" /&gt; &lt;p&gt;&lt;xsl:value-of select="creationTime"/&gt;[&lt;a href="javascript:hideShow()"&gt; &lt;xsl:value-of select="count(comments)"/&gt; Comments&lt;/a&gt;]&lt;/p&gt; &lt;h1&gt;&lt;xsl:value-of select="title"/&gt;&lt;/h1&gt; &lt;p&gt;&lt;xsl:value-of select="description"/&gt;&lt;/p&gt; &lt;br/&gt; &lt;p&gt;&lt;a href="javascript:hideShow()" id="hideShowLink" class="comments"&gt;&lt;/a&gt;&lt;/p&gt; &lt;br/&gt;&lt;hr/&gt;&lt;br/&gt; &lt;div id="comments" class="comments"&gt; &lt;h2&gt;Comments:&lt;/h2&gt; &lt;xsl:for-each select="//comments"&gt; &lt;p class="comments"&gt;&lt;h3&gt;&lt;xsl:value-of select="title"/&gt;&lt;/h3&gt;&lt;/p&gt; &lt;p class="comments"&gt;&lt;xsl:value-of select="description"/&gt;&lt;/p&gt; &lt;p class="comments"&gt;-- &lt;xsl:value-of select="creator"/&gt;&lt;/p&gt; &lt;/xsl:for-each&gt; &lt;hr/&gt; &lt;/div&gt; &lt;/xsl:for-each&gt; &lt;/div&gt; &lt;/body&gt; &lt;/html&gt; &lt;/xsl:template&gt; &lt;/xsl:stylesheet&gt; </code></pre> <p>Web Page I'm playing with: <a href="http://dl.dropbox.com/u/12914798/Project%202/index.html" rel="nofollow">http://dl.dropbox.com/u/12914798/Project%202/index.html</a></p> <p>The changes are perfect in the first blog entry. A link is created to show and hide the comments. But no where else is it working.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload