2011-12-11 2 views
0

나는이 학교에서 광고 문안 작성을 요청하고 필터는 사전 순으로 이루어졌다. 내 필터를 시도 할 때마다 페이지가 다시로드되고 모든 이름이 표시되고 필터링되지 않습니다. 나는 내가 apply() 함수를 호출 할 때마다 페이지를 새로 고침하고 방금 변경 한 사항을 만들지 않을 것을 알게되었다. 그게 전혀 필터가 아니에요 나는 무엇이 잘못되었는지에 대한 상실에 빠졌습니다 ... 누군가는 어떤 생각을 가지고 있습니까? xslt의 주요 부분을 heres : 나는 클래스에서 우리에게 주어진 템플릿과 일치하도록 거의 모든 값을 변경하려고 시도했지만 작동하지 않습니다. (I 터치를 havent 부분은 ...XSLT 동적 자바 스크립트 'not'filtering

여기에 관련 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(); 
    } 
나는이 기능을 적용 호출 할 때마다 지금

, 내 showByLetter 기능에 XPATH 값으로 페이지를 통과 무슨 메이는 다시로드와 내 XML에있는 내 모든 adresses을 보여주는 끝이 없습니다.

여기

경우 내 템플릿입니다 그 필요,

<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> 

답변

0

apply() 함수가 수행하려고 시도한 것 중 가장 이상한 아이디어가 없습니다. 뭔가 빠졌거나 처리 모델이 무엇인지 매우 이상하게 들었습니다.

xsl : param을 사용하여 스타일 시트에 매개 변수를 정의하고이 매개 변수의 값을 사용하여 주소를 필터링해야합니다. 그런 다음 변환 API를 사용하여 Javascript에서이 매개 변수의 값을 설정해야합니다.

+0

슬프게도 저는 교수님이 교수님의 날을 놓친 것처럼 100 % 확신하지 못했습니다 ... 그 변환 API는 무엇인지 알지 못합니다. 그 기능은 우리가해야 할 숙제에 대한 매력처럼 작동합니다. , 나는 단지 내가 왜 여기에서 작동하게하는지 안다. 기술적으로 appendchild가 파서 버퍼를 잡고 결과를 표시한다고 가정하는 것보다 innerHTML = ""인 페이지를 비우는 것이 좋습니다 ...하지만 내가 말했듯이 그 클래스가 그리워서 그 뒤에있는 역학을 알지 못합니다. –