Arquivos de etiquetas: XSLT

XSLT e mostras jQuery

Teño benvida a facer unha chea de XSLT e jQuery e pensei en compartir algúns tramos que os outros poden ser útiles no futuro.

Exemplo 1: Emit JavaScript simple / jQuery en XSLT:

<XSL:template match="something" xml:space = "preserve">

  <!– En branco a filtros agradable campo oculto consulta –>
  <script type="text/javascript">
    $(documento).preparado(función(){
      $("#QueryFriendlyFilters").val("empty");
    });
  </guión>

</XSL:modelo>

Este bit emite algún JavaScript que agarda a páxina para completar a carga (por mor da $(documento).preparado(...)) e, a continuación, define o valor dun campo oculto chamado QueryFriendlyFilters ao valor literal "baleiro".

Exemplo 2: Usar <XSL:se> para comprobar a "maior que",  "Less than", etc.

<XSL:template match="something" xml:space = "preserve">

  <div id="fdcAllFilters">
 
    <XSL:if test="@Count>0">
      <span class="fdcFilterLabel">Filtros actuais:</van>
    </XSL:se>

    <!– máis cousas acontece aquí. –>

</XSL:modelo>

O tramo anterior para saber se un atributo chamado "Count" do elemento "algo" é maior que cero.  O XML detrás diso sería algo como:"

<algo Count = "5" />

Exemplo 3: Percorrer todos os elementos, intercalando chamadas jQuery.

<!– Percorrer todos os filtros e amosar o correcto  Ligazóns. –>
<XSL:for-each select="UserFilter">

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

  <span class="fdcFilterLabel"><XSL:value-of select="@FilterValue"/></van>

  <script type="text/javascript">

    $(documento).preparado(función(){
        <XSL:texto><![CDATA[$("#QueryFriendlyFilters").val( ($("#QueryFriendlyFilters").val() + " ]]></XSL:texto>\"<XSL:value-of select="@FilterValue"/>\"<XSL:texto><![CDATA["));]]></XSL:texto>
    });

  </guión>

</XSL:a-cada>

O tramo anterior é o máis complexo e pode haber formas máis fáciles de facer isto.

O XML detrás desa aparencia máis ou menos así:

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

Este fragmento é iterado <Filtro de usuario> nodos. 

En primeiro lugar, el emite unha marca de referencia que, cando premendo chama unha función JavaScript que xa está na páxina, "MySubmitPage" e pasa o valor dun atributo no <Filtro de usuario> no chamado "ID". 

A continuación, el emite algúns jQuery que espera a páxina cargar.  Que as actualizacións jQuery un campo oculto chamado "QueryFriendlyFilters", engadindo o valor do atributo FilterValue.  Teña en conta todo o tolo <XSL:texto> e <![CDATA[ ... ]]> cousas.

É iso aí, espero que axude!

</final>

Rexístrate para o meu blog.

Siga-me no Twitter http://www.twitter.com/pagalvin

Endlessly Nesting <p> Etiquetas e jQuery

Este semella ser un excéntrico como tema, Eu non estou seguro se é realmente paga a pena blog sobre, pero iso nunca me impediu antes de, entón aquí imos nós sorriso

Eu estou a traballar nun proxecto onde estou tirando algúns datos dunha investigación, embalaxe-lo nunha mensaxe XML e logo, que o XML é finalmente transformada HTML vía XSLT.  Hai unha morea de jQuery implicados, un pouco do que aplica algunhas funcións tabulación.  Cando fai clic nunha guía (realmente, un <p>), jQuery invoca. ocultar() e. espectáculo() en varios divs (a cargar a páxina de inicio traslada todo o contido para que non haxa mensaxes neste caso).

Unha banda de horas, a lóxica de conmutación guía comezou a comportarse de forma irregular e que non ía amosar un dos meus guías.  Eu finalmente Rastrexar-lo para o feito de que a Internet Explorer (polo menos) pensado que o <p> tags noutras citas lonxe, moito máis profundo do que Developer Toolbar intended.The mostraría:

-<div id = "Tab1Content">
  -<p>
    -<p>
      -<div id = "Tab2Content">
        -<p>
           ..............................
                   </p>  <-Por último mostrando que estaba pechado todo o camiño ata aquí!

Así, se eu fixese un $("# Tab1Content").agochar(), Gustaríame tamén de ocultar Tab2 e eu nunca podería mostrar Tab2 se eu non mostran tamén Tab1.  Copiei e colei o código en Visual Studio e mostrou toda a mucosa da div-se ben, exactamente como se supón que deberían estar facendo, dese xeito:

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

Eu bati miña cabeza contra a parede por un tempo e notei que o código HTML real estaba xerando unha chea de baleiro <p> Tag, como:

<corpo>

  <div id = "Tab1Content">

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

  </p>

  <div id = "Tab2Content">

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

  </p>

</corpo>

(A descrición anterior é waaaaaaaaaaaay simplificado.  As etiquetas div baleiros son totalmente válido. Algúns dos meus <p> marcas estaban cheos de contido, pero moitos outros non eran.  Cheguei á conclusión de que a miña <XSL:a-cada> directivas emitían as etiquetas div de forma curta, cando o XSL:for-each non "atopa algunha datos.  Forcei un comentario HTML na saída, como se mostra:

image

 

Despois de que eu fixen, toda div está aliñado ben e meu guía cambio comezou a traballar.

Como sempre, Espero que isto axude alguén nunha pitada.

</final>

Rexístrate para o meu blog.

Siga-me no Twitter http://www.twitter.com/pagalvin

Exemplo: XSLT creating href HTML

Eu teño feito un pouco de cousas XSL ultimamente e penso que eu ía montar un exemplo para a miña mesmas e que pode ser de valor para todos nós XSLT-ERS gañar a vida nas internets.

Considero o seguinte XML:

<Conde FdcSearchTabsCollection = "2">
  <Etiqueta SearchTab = Industria "" SortOrder = "00" Label = "industrias" SearchConstraints = "contenttype:Industria" Tabid = "831b2a74-98c4-4453-8061-86e2fdb22c63" />
  <Etiqueta SearchTab = "Prácticas" SortOrder = "01" label = "Prácticas" SearchConstraints = "contenttype:PracticeGroups" Tabid = "678e206b-6996-421f-9765-b0558fe1a9c0" />
</FdcSearchTabsCollection>

O tramo de XSL a seguir pode xerar unha lista ordenada de guías HREFs:

<XSL:xogo template = FdcSearchTabsCollection "" xml:space = "preserve">
   
    <!– O "todos" separador –>
    <a href = "javascript:ExibirGuia(‘All’)">Ver</un>
   
    <!– Cada guía individual –>
    <!– Percorrer todos os guías e amosar o correcto  Ligazóns. –>
    <XSL:formas Each select = "SearchTab">
      <XSL:tipo select = "@ SortOrder" />

      …
      <a href = "javascript:ExibirGuia('{@ Tabid}')"><XSL:valor de select = "Etiqueta @" /></un>
    </XSL:a-cada>

    <br /> 
   

   </XSL:modelo>

Aquí está o que parece o SharePoint:

SNAGHTML78aa2cb

 

 

</final>

Rexístrate para o meu blog.

Siga-me no Twitter http://www.twitter.com/pagalvin