Arhive de categorii: XSLT

XSLT și jQuery probe

Am făcut o mulţime de XSLT şi jQuery şi gândit aş parts câteva fragmente care alţii pot considera util în viitor.

Exemplu 1: Emite simplu JavaScript / jQuery în XSLT:

<XSL:meci de şablon "ceva =" XML:spaţiu = "conserva">

  <!– Martor interogare prietenos filtrele câmp ascuns –>
  <script-ul de tip = "text/javascript">
    $(document).gata(funcţia(){
      $("#QueryFriendlyFilters").vasilica("gol");
    });
  </script-ul>

</XSL:şablon>

Că pic emite unele JavaScript care aşteaptă pentru ca pagina să termin de încărcare (din cauza $(document).gata(…)) şi seturi de valoarea unui câmp ascuns numit atunci QueryFriendlyFilters la valoarea literal "gol".

Exemplu 2: Utilizarea <XSL:Dacă> pentru a verifica "mai mare",  "mai puţin", etc.

<XSL:meci de şablon "ceva =" XML:spaţiu = "conserva">

  <div id = "fdcAllFilters">
 
    <XSL:Dacă test="@Count>0">
      <span class = "fdcFilterLabel">Filtre de curent:</durata de>
    </XSL:Dacă>

    <!– mai multe lucruri se întâmplă aici. –>

</XSL:şablon>

Fragmentul de mai sus controale pentru a vedea dacă un atribut numit "Conta" a elementului "ceva" este mai mare decât zero.  XML-ul din spatele acest lucru ar fi ceva de genul:”

<ceva Count = "5" />

Exemplu 3: Repeta prin toate elementele, Interspersing jQuery apeluri.

<!– Repeta prin toate filtrele şi afişa corect  link-uri. –>
<XSL:pentru fiecare select = "UserFilter">

  <o clasa = "FilterHref" href = "javascript:mySubmitPage('RemoveUserFilter','{@ID}’)">[X]</o>

  <span class = "fdcFilterLabel"><XSL:valoare de select="@FilterValue"/></durata de>

  <script-ul de tip = "text/javascript">

    $(document).gata(funcţia(){
        <XSL:textul><![CDATA[$("#QueryFriendlyFilters").vasilica( ($("#QueryFriendlyFilters").vasilica() + " ]]></XSL:textul>\"<XSL:valoare de select="@FilterValue"/>\"<XSL:textul><![CDATA["));]]></XSL:textul>
    });

  </script-ul>

</XSL:pentru fiecare>

Fragmentul de mai sus este cea mai complexă şi poate fi mai uşor de moduri de a face acest lucru.

XML-ul din spatele acestei arata aproximativ asa:

<UserFilter ID = "123" FilterValue = "xyzzy" />

Acest fragment este iterarea prin <UserFilter> noduri. 

El emite mai întâi o ancoră tag-ul care atunci când aţi făcut clic pe invocă o funcţie JavaScript, care este deja pe pagina, "mySubmitPage" şi trece în valoarea de un atribut <UserFilter> nodul numit "ID". 

Ea emite apoi unele jQuery care aşteaptă pentru ca pagina să se încarce.  JQuery care actualizează un câmp ascuns numit "QueryFriendlyFilters" prin adăugarea valorii atributului FilterValue.  Notă toate nebun <XSL:textul> şi <![CDATA[ … ]]> chestii.

Asta este, Sperăm că vă ajută!

</scop>

Aboneaza-te la blog-ul meu.

Urmaţi-mă pe Twitter, la http://www.twitter.com/pagalvin

Imbricarea la nesfârşit <div> Tag-uri şi jQuery

Acest lucru pare a fi un astfel de subiect de aiurit, Nu sunt sigur că merită cu adevărat blogging-ul despre, dar că niciodată nu a oprit mine înainte, Deci, aici vom merge Zâmbet

Am de lucru un proiect în cazul în care eu sunt trăgând unele date dintr-o căutare, ambalare-l într-un mesaj XML şi apoi că XML este transformat în cele din urmă în HTML prin intermediul XSLT.  Există o mulţime de jQuery implicate, un pic de care implementeaza anumite funcţionalităţi tabbing.  Când faceţi clic pe o filă (chiar, o <div>), jQuery invocă .hide() şi .show() pe diverse divs (pagină iniţială de încărcare descărcări toate conţinut, astfel încât nu există nici o postback în acest caz).

O grămadă de ore în urmă, fila logica de comutare a început să se comporte haotic şi aceasta nu s-ar arăta unul de meu file.  Am în cele din urmă urmărite l până la faptul că internet explorer (cel puțin) crezut că <div> Tag-uri imbricate departe, mult mai profunde decât destinate.Bara de instrumente producător ar arăta:

-<div id = "Tab1Content">
  -<div>
    -<div>
      -<div id = "Tab2Content">
        -<div>
           …………………………
                   </div>  <— în cele din urmă arătând că a fost închis tot drumul în jos aici!

Deci, dacă am făcut-o $("#Tab1Content").ascunde(), Am, de asemenea, s-ar ascunde Fila2 şi ar putea arăta niciodată Fila2 dacă nu arăt, de asemenea, Fila1.  Am copiat şi inserat codul în visual studio şi ea a arătat toate div garnitură până frumos, la fel ca ei ar fi trebuit să faci, în căutarea de genul asta:

-<div id = "Tab1Content">
  +<div>
  +<div>
-<div id = "Tab2Content">
  +<div>
  +<div>

Am batut capul meu de perete pentru un timp şi am observat că în real HTML codul a fost generatoare de o mulţime de gol <div> Tag-uri, ca:

<corpul>

  <div id = "Tab1Content">

    <div id = "row1" />
    <div id = "rînd2" />

  </div>

  <div id = "Tab2Content">

    <div id = "row1" />
    <div id = "rînd2" />

  </div>

</corpul>

(De mai sus este waaaaaaaaaaaay simplificat.  Gol div Tag-uri sunt complet valide. Unele dintre meu <div> Tag-uri au fost plin de conţinut, dar mult mai multe nu au fost.  Am venit la realizarea că meu <XSL:pentru fiecare> Directivele au fost emit scurt-forma div Tag-uri atunci când xsl:nu pentru fiecare "găseşte orice date.  Am forţat un comentariu HTML în ieşire, ca:

image

 

După ce am făcut-o, div aliniat frumos şi fila mea de comutare a început să lucreze.

Ca întotdeauna, Sper că acest lucru ajută pe cineva într-o priză.

</scop>

Aboneaza-te la blog-ul meu.

Urmaţi-mă pe Twitter, la http://www.twitter.com/pagalvin

Exemplu: XSLT crearea HTML Href

Am fost de a face un pic de XSL chestii în ultima vreme şi gândit aş pune împreună un eşantion pentru meu de referinţă viitoare şi care poate fi de valoare pentru noi toţi XSLT-ers face o viaţă în Internet.

Luaţi în considerare următoarele XML:

<FdcSearchTabsCollection Count = "2">
  <SearchTab Label = "industrie" SortOrder = "00" Label = "Industriile" SearchConstraints = "contenttype:Industria" TabID = "831b2a74-98c4-4453-8061-86e2fdb22c63" />
  <SearchTab Label = "practici" SortOrder = "01" Label = "Practici" SearchConstraints = "contenttype:PracticeGroups" TabID = "678e206b-6996-421f-9765-b0558fe1a9c0" />
</FdcSearchTabsCollection>

Următorul fragment XSL va genera o listă sortată de file de hrefs:

<XSL:şablon meci = "FdcSearchTabsCollection" XML:spaţiu = "conserva">
   
    <!– "Toate" fila –>
    <o href = "javascript:ViewTab("Toate")">Vezi toate</o>
   
    <!– Fiecare filă individuale –>
    <!– Repeta prin toate filele şi afişa corect  link-uri. –>
    <XSL:pentru fiecare select = "SearchTab">
      <XSL:sortare select="@SortOrder"/>

      …
      <o href = "javascript:ViewTab(‘{@TabID}’)"><XSL:valoare de select="@Label"/></o>
    </XSL:pentru fiecare>

    <br /> 
   

   </XSL:şablon>

Aici este ceea ce pare în SharePoint:

SNAGHTML78aa2cb

 

 

</scop>

Aboneaza-te la blog-ul meu.

Urmaţi-mă pe Twitter, la http://www.twitter.com/pagalvin