marcatori archivi: XSLT

Campioni di XSLT e jQuery

Ho fatto un sacco di XSLT e jQuery e ho pensato di che condividere alcuni frammenti che altri possono trovare utili in futuro.

Esempio 1: Emettono semplice JavaScript / jQuery in XSLT:

<xsl:partita modello = "qualcosa" XML:Space = "preserve">

  <!– Vuoto il campo nascosto filtri amichevole di query –>
  <tipo di script = "text/javascript">
    $(documento).pronto(funzione(){
      $("#QueryFriendlyFilters").Val("vuoto");
    });
  </script di>

</xsl:modello>

Quel ' emette alcuni JavaScript che attende la pagina alla fine del caricamento (causa della $(documento).pronto(…)) e quindi imposta il valore di un campo nascosto denominato QueryFriendlyFilters per il valore letterale "Svuota".

Esempio 2: Uso <xsl:Se> per controllare "maggiore di",  "meno di", ecc.

<xsl:partita modello = "qualcosa" XML:Space = "preserve">

  <div id = "fdcAllFilters">
 
    <xsl:Se test="@Count>0">
      <span class = "fdcFilterLabel">Filtri correnti:</arco>
    </xsl:Se>

    <!– più roba succede qui. –>

</xsl:modello>

Questo frammento di codice consente di verificare se un attributo denominato "Contare" dell'elemento "qualcosa" è maggiore di zero.  il XML dietro questo sarebbe qualcosa come:”

<qualcosa Count = "5" />

Esempio 3: Scorrere tutti gli elementi, inframmezzando chiamate jQuery.

<!– Scorrere tutti i filtri e visualizzare la corretta  link. –>
<xsl:for each selezionare = "Benutzerfilter">

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

  <span class = "fdcFilterLabel"><xsl:valore di select="@FilterValue"/></arco>

  <tipo di script = "text/javascript">

    $(documento).pronto(funzione(){
        <xsl:Testo><![CDATA[$("#QueryFriendlyFilters").Val( ($("#QueryFriendlyFilters").Val() + " ]]></xsl:Testo>\"<xsl:valore di select="@FilterValue"/>\"<xsl:Testo><![CDATA["));]]></xsl:Testo>
    });

  </script di>

</xsl:for each>

Questo frammento di codice è il più complesso e ci possono essere più facili modi per farlo.

il XML dietro questo assomiglia all'incirca a questo:

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

Scorrimento di questo frammento <UserFilter> nodi. 

In primo luogo emette un ancoraggio etichetta che quando si fa clic richiama una funzione JavaScript che è già nella pagina, "mySubmitPage" e passa il valore di un attributo <UserFilter> nodo denominato "ID". 

Emette poi qualche jQuery che attende la pagina caricare.  Quel jQuery aggiorna un campo nascosto di nome "QueryFriendlyFilters", aggiungendo il valore dell'attributo FilterValue.  Nota tutti il pazzo <xsl:Testo> e <![CDATA[ … ]]> roba.

Questo è tutto, speranza che aiuta!

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin

Nidificazione all'infinito <div> Tag e jQuery

Questo mi sembra un soggetto così stravaganti, Non sono sicuro che vale davvero la pena bloggare su, ma che non ha mai smesso prima di me, quindi qui si va sorriso, sorridere

Sto lavorando su un progetto dove sto tirando alcuni dati da una ricerca, imballaggio in un messaggio XML e poi il codice XML viene trasformato in definitiva in HTML tramite XSLT.  C'è un sacco di jQuery coinvolte, un bit di che implementa alcune funzionalità di tabulazione.  Quando fa clic su una scheda (davvero, un <div>), jQuery richiama .hide() e .show() su vari DIV (il caricamento della pagina iniziale Download tutto il contenuto, quindi non ci sono in questo caso postback).

Un mucchio di ore fa, la scheda logica di commutazione ha iniziato a comportarsi in modo strano e non mostra una delle mie schede.  Io alla fine esso monitorati al fatto che internet explorer (almeno) pensava che la <div> tag nidificati lontano, molto più profondo da desiderata.Avrebbe mostrato la developer toolbar:

-<div id = "Tab1Content">
  -<div>
    -<div>
      -<div id = "Tab2Content">
        -<div>
           …………………………
                   </div>  <— Infine mostrandolo è stata chiusa fino in fondo!

Così, Se ho fatto un $("# Tab1Content").Nascondi(), Sarebbe anche nascondere Tab2 e mai potuto mostrare Tab2 anche se non ha mostro Tab1.  Ho copiato e incollato il codice in visual studio e ha mostrato a tutti di rivestimento del div fino piacevolmente, proprio come avrebbero dovuto fare, guardando come questo:

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

Ho battuto la testa contro il muro per un po' e ho notato che nel codice HTML effettivo codice era generando un sacco di vuoto <div> Tag, come:

<corpo>

  <div id = "Tab1Content">

    <div id = "row1" />
    <div id = "row2" />

  </div>

  <div id = "Tab2Content">

    <div id = "row1" />
    <div id = "row2" />

  </div>

</corpo>

(Quanto sopra è waaaaaaaaaaaay semplificato.  I tag div vuota sono totalmente validi. Alcuni dei miei <div> Tag erano piene di contenuti, ma molti altri non hanno.  Sono venuto alla realizzazione che mio <xsl:for each> le direttive sono state che emettono la forma abbreviata div tag quando xsl:for each non ' trovare tutti i dati.  Sono costretto a un commento HTML nell'output, come illustrato:

image

 

Dopo che ho fatto che, il div in fila piacevolmente ed il mio switching tab iniziò a lavorare.

Come sempre, Spero che questo aiuta a qualcuno in un pizzico.

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin

Esempio: XSLT creando HTML Href

Sto facendo un po' di roba XSL ultimamente e pensato che avrebbe messo insieme un campione per il mio riferimento futuro e che può essere di valore per tutti noi facendo una vita in internets XSLT-ers.

Si consideri il seguente codice XML:

<Count FdcSearchTabsCollection = "2">
  <Contestuale Label = "Industry" SortOrder = "00" Label = "Industrie" SearchConstraints = "contenttype:Industria" TabID = "831b2a74-98c4-4453-8061-86e2fdb22c63" />
  <Contestuale Label = "pratiche" SortOrder = "01" Label = "Pratiche" SearchConstraints = "contenttype:PracticeGroups" TabID = "678e206b-6996-421f-9765-b0558fe1a9c0" />
</FdcSearchTabsCollection>

Il seguente frammento XSL genererà un elenco ordinato di schede href:

<xsl:partita modello = "FdcSearchTabsCollection" XML:Space = "preserve">
   
    <!– Il tutto"" scheda –>
    <href = "javascript:ViewTab('Tutti')">Visualizza tutte</un>
   
    <!– Ogni scheda individuale –>
    <!– Scorrere tutte le schede e visualizzare la corretta  link. –>
    <xsl:for each = seleziona "Contestuale">
      <xsl:sorta select="@SortOrder"/>

      …
      <href = "javascript:ViewTab(‘{@ TabID}’)"><xsl:valore di select="@Label"/></un>
    </xsl:for each>

    <br /> 
   

   </xsl:modello>

Ecco quello che sembra in SharePoint:

SNAGHTML78aa2cb

 

 

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin