Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Javascript应用于XSL_Javascript_Html_Xslt - Fatal编程技术网

将Javascript应用于XSL

将Javascript应用于XSL,javascript,html,xslt,Javascript,Html,Xslt,我注意到,如果我试图通过java脚本将更改应用于XSL文件,它只会影响XSL创建的最顶层节点 例如: 我想隐藏多个博客条目的所有评论。结果只有最上面的博客条目会隐藏评论 我想更改超链接的文本。超链接文本将仅在最顶端的节点中更改 如何让java脚本影响XSL文件创建的所有节点 HTML代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <h

我注意到,如果我试图通过java脚本将更改应用于XSL文件,它只会影响XSL创建的最顶层节点

例如: 我想隐藏多个博客条目的所有评论。结果只有最上面的博客条目会隐藏评论

我想更改超链接的文本。超链接文本将仅在最顶端的节点中更改

如何让java脚本影响XSL文件创建的所有节点

HTML代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 

<html>
    <head>
        <link rel="stylesheet" type="text/css" href="style.css" >
        <title>My Blog</title>

        <script> 

        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';
                }
            }

        </script>

    </head>

    <body onLoad="displayResult()">
        <table width="100%" border="0">
            <tr>
                <td colspan="2">
                    <div class="imgcentered">
                        <img src="banner.gif" alt="banner" />
                    </div>
                </td>
            </tr>
            <tr>
                <td>
                    <div id="entries">
                    </div>
                </td>
                <td class="rightside">
                    <div class="rightbody">
                    <ul>
                        <li><a href="index.html">Home</a></li>
                        <li>Archives</li>
                        <li>Profile
                        <br/>
                        <img src="pokemon.gif" alt="pokemin" width="40%"/><br/>
                        <br/>

                        <dl>
                            <dt><b>Name:</b></dt>
                                <dd>Ash Catchem</dd>
                            <dt><b>Age:</b></dt>
                                <dd>Old Enough</dd>
                            <dt><b>Birth Place:</b></dt>
                                <dd>Pallet Town</dd>
                            <dt><b>Current Residence:</b></dt>
                                <dd>Kanto</dd>
                            <dt><b>Occupation:</b></dt>
                                <dd>Pokemon Catcher</dd>
                        </dl>
                        </li>
                    </ul>
                    </div>
                </td>
            </tr>
        </table>
    </body>
</html>

我的博客
函数loadXMLDoc(fname)
{   
var-xmlDoc;
//IE代码
if(window.ActiveXObject)
{  
xmlDoc=新的ActiveXObject(“MSXML2.FreeThreadedDOMDocument”);
}
//Mozilla、Firefox、Opera等的代码。
else if(document.implementation.createDocument)
{ 
xmlDoc=document.implementation.createDocument(“,”,null);
} 
其他的
{ 
警报(“您的浏览器无法处理此脚本”);
} 
xmlDoc.async=false;
加载(fname);
退货(xmlDoc);
}
函数loadEntries()
{ 
xmlDoc=loadXMLDoc(“blogData.xml”);
xslDoc=loadXMLDoc(“blogData.xsl”);
//用于Firefox、Safari等。
if(document.implementation.createDocument)
{
var xsltProcessor=new xsltProcessor();
xsltProcessor.importStylesheet(xslDoc);
setParameter(null,“id”,11);
var resultDocument=xsltProcessor.transformToFragment(xmlDoc,document);
document.getElementById(“条目”).appendChild(resultDocument);
}
//Internet Explorer
else if(window.ActiveXObject)
{
var xslTemplate=newActiveXObject(“MSXML2.xslTemplate”);
xslTemplate.stylesheet=xslDoc;
var xslProc=xslTemplate.createProcessor();
xslProc.input=xmlDoc;
xslProc.addParameter(“id”,11);
xslProc.transform();
document.getElementById(“条目”).innerHTML=xslProc.output;
}
}
函数displayResult()
{
var xml=loadXMLDoc(“blogData.xml”);
var xsl=loadXMLDoc(“blogData.xsl”);
//IE代码
if(window.ActiveXObject)
{
var ex=xml.transformNode(xsl);
document.getElementById(“条目”).innerHTML=ex;
document.getElementById(“comments”).style.display='none';
document.getElementById(“hideShowLink”).innerHTML='showcoments';
}
//Mozilla、Firefox、Opera等的代码。
else if(document.implementation.createDocument)
{
var xsltProcessor=new xsltProcessor();
导入样式表(xsl);
var resultDocument=xsltProcessor.transformToFragment(xml,文档);
document.getElementById(“条目”).appendChild(resultDocument);
document.getElementById(“comments”).style.display='none';
document.getElementById(“hideShowLink”).innerHTML='showcoments';
}
}
函数hideShow(){
if(document.getElementById(“comments”).style.display=='none'){
document.getElementById(“comments”).style.display='block';
document.getElementById(“hideShowLink”).innerHTML='Hide Comments';
}否则{
document.getElementById(“comments”).style.display='none';
document.getElementById(“hideShowLink”).innerHTML='showcoments';
}
}
  • 档案
  • 侧面图


    姓名: 灰烬 年龄: 够大了 出生地: 托盘镇 现居地: 关东 职业: 口袋妖怪捕手
XSL代码:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/">
        <html>

            <body>
                <div class="leftbody">
                    <!-- Loops Through all of the entries node in the XML and displays then in order by date descending order --> 
                    <xsl:for-each select="//entries">
                        <xsl:sort select="creationTime/@sort" order="descending" />
                        <p><xsl:value-of select="creationTime"/>[<a href="javascript:hideShow()"> <xsl:value-of select="count(comments)"/> Comments</a>]</p>
                        <h1><xsl:value-of select="title"/></h1>
                        <p><xsl:value-of select="description"/></p>
                        <br/>
                        <p><a href="javascript:hideShow()" id="hideShowLink" class="comments"></a></p>
                        <br/><hr/><br/>

                        <div id="comments" class="comments">
                        <h2>Comments:</h2>
                            <xsl:for-each select="//comments">
                                <p class="comments"><h3><xsl:value-of select="title"/></h3></p>
                                <p class="comments"><xsl:value-of select="description"/></p>
                                <p class="comments">-- <xsl:value-of select="creator"/></p>
                            </xsl:for-each>
                            <hr/>
                        </div>

                    </xsl:for-each>



                </div>

            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

[]





评论:

--


<xsl:for-each select="//entries"> <xsl:sort select="creationTime/@sort" order="descending" /> <!-- define variables --> <xsl:variable name="unique-id"> <xsl:choose> <xsl:when test="position() = 1"> <xsl:value-of select="''"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="generate-id(.)"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="comments-id" select="concat('comments',$unique-id)"/> <xsl:variable name="hideShowLink-id" select="concat('hideShowLink',$unique-id)"/> <xsl:variable name="a-href" select="concat('javascript:hideShow(&#34;',$unique-id,'&#34;)')"/> <!-- title and description --> <p><xsl:value-of select="creationTime"/>[<xsl:element name="a"><xsl:attribute name="href"><xsl:value-of select="$a-href"/></xsl:attribute> <xsl:value-of select="count(comments)"/> Comments</xsl:element>]</p> <h1><xsl:value-of select="title"/></h1> <p><xsl:value-of select="description"/></p> <br/> <p> <xsl:element name="a"> <xsl:attribute name="id"><xsl:value-of select="$hideShowLink-id"/></xsl:attribute> <xsl:attribute name="href"><xsl:value-of select="$a-href"/></xsl:attribute> <xsl:attribute name="class"><xsl:value-of select="'comments'"/></xsl:attribute> Show Comments </xsl:element> </p> <br/><hr/><br/> <!-- comments --> <xsl:element name="div"> <xsl:attribute name="id"><xsl:value-of select="$comments-id"/></xsl:attribute> <xsl:attribute name="class"><xsl:value-of select="'comments'"/></xsl:attribute> <xsl:attribute name="style"><xsl:value-of select="'display:none'"/></xsl:attribute> <h2>Comments:</h2> <xsl:for-each select="//comments"> <p class="comments"><h3><xsl:value-of select="title"/></h3></p> <p class="comments"><xsl:value-of select="description"/></p> <p class="comments">-- <xsl:value-of select="creator"/></p> </xsl:for-each> <hr/> </xsl:element> </xsl:for-each>
        function displayResult()
        {
            var xml=loadXMLDoc("p100993_IR1.2_output_without_header_1.csv.xml");
            var xsl=loadXMLDoc("LoadVendorAnalytic.xsl");
            // code for IE
            if (window.ActiveXObject)
            {
                var ex = xml.transformNode(xsl);
                document.getElementById("entries").innerHTML = ex;
            }
            // 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);
            }
        }

        function hideShow(id){
            if(document.getElementById("comments"+id).style.display == 'none'){
                document.getElementById("comments"+id).style.display = 'block';
                document.getElementById("hideShowLink"+id).innerHTML = 'Hide Comments';
            } else {
                document.getElementById("comments"+id).style.display = 'none';
                document.getElementById("hideShowLink"+id).innerHTML = 'Show Comments';
            }
        }
function hideShow(commentsId){
    if(document.getElementById(commentsId).style.display == 'none'){
        document.getElementById(commentsId).style.display = 'block';
        document.getElementById("hideShowLink_" + commentsId).innerHTML = 'Hide Comments';
    } else {
        document.getElementById(commentsId).style.display = 'none';
        document.getElementById("hideShowLink_" + commentsId).innerHTML = 'Show Comments';
    }
}
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/">
        <html>

            <body>
                <div class="leftbody">
                    <!-- Loops Through all of the entries node in the XML and displays then in order by date descending order --> 
                    <xsl:for-each select="//entries">
                        <xsl:sort select="creationTime/@sort" order="descending" />
                        <xsl:variable name="commentsId">comments_<xsl:value-of select="creationTime/@sort"/></xsl:variable>

                        <p><xsl:value-of select="creationTime"/>
                            [
                            <xsl:element name="a">
                                <xsl:attribute name="href">javascript:hideShow('<xsl:value-of select="$commentsId"/>')</xsl:attribute>
                                <xsl:value-of select="count(comments)"/> Comments
                            </xsl:element>
                            ]
                        </p>
                        <h1><xsl:value-of select="title"/></h1>
                        <p><xsl:value-of select="description"/></p>
                        <br/>
                        <p>
                            <xsl:element name="a">
                                <xsl:attribute name="href">javascript:hideShow('<xsl:value-of select="$commentsId"/>')</xsl:attribute>
                                <xsl:attribute name="id">hideShowLink_<xsl:value-of select="$commentsId"/></xsl:attribute>
                                <xsl:attribute name="class">comments</xsl:attribute>
                            Hide Comments
                            </xsl:element>
                        </p>
                        <br/><hr/><br/>

                        <xsl:element name="div">
                        <xsl:attribute name="id"><xsl:value-of select="$commentsId"/></xsl:attribute>
                        <xsl:attribute name="class">comments</xsl:attribute>
                        <h2>Comments:</h2>
                            <xsl:for-each select="comments">
                                <p class="comments"><h3><xsl:value-of select="title"/></h3></p>
                                <p class="comments"><xsl:value-of select="description"/></p>
                                <p class="comments">-- <xsl:value-of select="creator"/></p>
                            </xsl:for-each>
                            <hr/>
                        </xsl:element>

                    </xsl:for-each>



                </div>

            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>