Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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
XSLT动态javascript';不是';过滤_Javascript_Xslt - Fatal编程技术网

XSLT动态javascript';不是';过滤

XSLT动态javascript';不是';过滤,javascript,xslt,Javascript,Xslt,我有一本学校的作业,要求制作一本通讯录,过滤器是按字母顺序排列的。每当我尝试过滤我的页面时,我都会重新加载页面并显示所有名称,而根本不过滤它。我最终发现,无论何时调用apply()函数,页面都会重新加载,并且不会做出我刚才所做的任何更改。这根本不是过滤器,我不知道怎么回事。。。有人知道吗?这里是xslt的主要部分:我尝试改变几乎所有的值,以匹配课堂上提供给我们的模板,但我无法让它工作。(我没有涉及的部分是apply和init函数(除了更改变量名之外) 这里大部分相关的xslt搜索都集中在XPAT

我有一本学校的作业,要求制作一本通讯录,过滤器是按字母顺序排列的。每当我尝试过滤我的页面时,我都会重新加载页面并显示所有名称,而根本不过滤它。我最终发现,无论何时调用apply()函数,页面都会重新加载,并且不会做出我刚才所做的任何更改。这根本不是过滤器,我不知道怎么回事。。。有人知道吗?这里是xslt的主要部分:我尝试改变几乎所有的值,以匹配课堂上提供给我们的模板,但我无法让它工作。(我没有涉及的部分是apply和init函数(除了更改变量名之外)

这里大部分相关的xslt搜索都集中在XPATH上,而不是js部分

 // <![CDATA[   

    function initFF(){
        xmlDoc = document.implementation.createDocument("","",null);
        xslDoc = document.implementation.createDocument("","",null);

        xmlDoc.load(" CarnetAdresse.xml");
        xslDoc.load("CarnetAdresse.xslt");

        xslDoc.addEventListener("load", initPointeurFF, false);
    }   

    function nameSpaceResolver(prefix){
        return "http://www.w3.org/1999/XSL/Transform";
    }   
    function initPointeurFF(){

        noeudFiltre = xslDoc.evaluate("//xsl:apply-templates[@select='individu']/@select", 
                                                    xslDoc, 
                                                    nameSpaceResolver, 
                                                    XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
        objProcessor = new XSLTProcessor();
        objProcessor.importStylesheet(xslDoc);

    } 

    function apply(){

            tempDoc = document.implementation.createDocument("","",null);

            frag = objProcessor.transformToFragment(xmlDoc.documentElement, tempDoc);

            document.getElementById("main").innerHTML="";
            document.getElementById("main").appendChild(frag);

    }


    function showByLetter(val){

      noeudFiltre.value = val;

      apply();
    }
//
现在,无论何时调用apply函数,在showByLetter函数中作为XPATH值传递的内容都无法匹配,页面最终会重新加载并显示xml中的所有地址

这里是我的模板,如果需要的话

<body onload="initialiser()">
  <table>
     <tr>
     <td onclick="showByLetter('individu[nom = &quot;Test&quot;]')">test</td>>
     </tr>
  </table>
  <div id="main">
        <table cellspacing="0" cellpadding="0" class="main-table">
            <xsl:apply-templates select="individu">
                <xsl:sort select="nom" order="ascending"/>
            </xsl:apply-templates>
        </table>
    </div>

<xsl:template match="individu">
<xsl:for-each select="./*">
        <tr>
        <td class="table-name"><xsl:value-of select="name(.)" /></td>
        <td class="table-content"><xsl:value-of select="." /></td>
        </tr>
    </xsl:for-each>
</xsl:template>

测试>

我一点也不知道apply()函数试图做什么——要么我遗漏了什么,要么你对处理模型有一个非常奇怪的想法


您需要使用xsl:param为样式表定义一个参数,并使用该参数的值来过滤地址。然后您需要使用转换API从Javascript为该参数设置一个值。

遗憾的是,我也不是100%确定,因为我错过了教授展示它的那一天……我不知道转换API是什么,而apply函数对于我们必须做的家庭作业来说就像一种魅力,我只是不知道为什么我不能让它在这里工作。从技术上来说,它应该清空页面(innerHTML=“”),而appendchild应该抓取解析器缓冲区并显示结果……但是正如我所说的,我错过了这门课,所以我不知道背后的机制