Archives Catégorie: XSLT

Échantillons de XSLT et jQuery

J'ai fait beaucoup de XSLT et jQuery et pensée que serait partager quelques extraits que d'autres peuvent trouver utiles dans l'avenir.

Exemple 1: Émettent JavaScript simple / jQuery dans XSLT:

<XSL:match de modèle « quelque chose =" XML:espace = « sauvegarde »>

  <!– Vide dans le champ masqué de requête filtres amical –>
  <script type = « text/javascript »>
    $(document).prêt(fonction(){
      $(« #QueryFriendlyFilters »).Val(« vide »);
    });
  </script>

</XSL:modèle>

Que le bit émet quelques JavaScript qui attend pour la page à la fin de chargement (en raison de la $(document).prêt(…)) et puis définit la valeur d'un champ masqué nommé QueryFriendlyFilters dans la valeur littérale « vide ».

Exemple 2: Utilisation <XSL:Si> pour vérifier la « supérieur à »,  « moins de », etc..

<XSL:match de modèle « quelque chose =" XML:espace = « sauvegarde »>

  <div id = « fdcAllFilters »>
 
    <XSL:si test="@Count>0">
      <span class = « fdcFilterLabel »>Filtres actifs:</travée>
    </XSL:Si>

    <!– plus de choses se passe ici. –>

</XSL:modèle>

L'extrait de code ci-dessus vérifie si un attribut nommé « Comte » de l'élément « quelque chose » est supérieur à zéro.  Le code XML derrière ce serait quelque chose comme:”

<quelque chose de Count = « 5 » />

Exemple 3: Parcourir tous les éléments, disséminer les appels jQuery.

<!– Parcourir tous les filtres et afficher le bon  Liens. –>
<XSL:pour chaque select = « UserFilter »>

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

  <span class = « fdcFilterLabel »><XSL:valeur de select="@FilterValue"/></travée>

  <script type = « text/javascript »>

    $(document).prêt(fonction(){
        <XSL:texte><![CDATA[$(« #QueryFriendlyFilters »).Val( ($(« #QueryFriendlyFilters »).Val() + " ]]></XSL:texte>\"<XSL:valeur de select="@FilterValue"/>\"<XSL:texte><![CDATA["));]]></XSL:texte>
    });

  </script>

</XSL:pour chaque>

L'extrait de code ci-dessus est le plus complexe et il peut y avoir des moyens plus faciles de le faire.

Le XML derrière tout cela ressemble grossièrement à ce:

<UserFilter ID = « 123 » FilterValue = « xyzzy » />

Cet extrait est une itération à travers <UserFilter> nœuds. 

Elle émet d'abord une ancre qui balise lorsque l'utilisateur clique sur invoque une fonction JavaScript qui est déjà sur la page, « mySubmitPage » et passe la valeur d'un attribut le <UserFilter> nœud nommé « ID ». 

Il émet ensuite certains jQuery qui attend pour la page de chargement.  Que jQuery met à jour un champ masqué nommé « QueryFriendlyFilters » en ajoutant la valeur de l'attribut FilterValue.  Remarque tous le fou <XSL:texte> et <![CDATA[ … ]]> Stuff.

C'est tout, espérons que cela aide!

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

Sans cesse de nidification <Div> Étiquettes et jQuery

Cela semble un tel sujet d'excentrique, Je ne suis pas sûr que c'est vraiment utile sur les blogs, mais qui a jamais cessé de me avant, donc ici, nous allons Sourire

Je travaille un projet où je suis tirer certaines données de recherche, emballage il dans un message XML, puis que XML est finalement transformé en HTML via XSLT.  Il y a beaucoup de jQuery, un bit qui implémente certaines fonctionnalités de tabulation.  Lorsque vous cliquez sur un onglet (vraiment, un <Div>), jQuery appelle .hide() et .show() sur divers divs (le chargement de la page initiale télécharge tout le contenu, il n'y a aucune publication dans ce cas).

Un tas de jours ago, l'onglet logique de commutation a commencé à se comporter de façon erratique et il ne serait pas montrer un de mes onglets.  J'ai finalement suivi il vers le fait qu'internet explorer (au moins) estime que la <Div> balises imbriquées loin, beaucoup plus profond que prévu.La barre d'outils développeur montrerait:

-<div id = « Tab1Content »>
  -<Div>
    -<Div>
      -<div id = « Tab2Content »>
        -<Div>
           …………………………
                   </Div>  <— montrant Enfin il fut fermé jusqu'ici!

Si, Si j'ai fait un $(« # Tab1Content »).cacher(), Tab2 serait également masquer et je ne pourrais jamais montrer Tab2 si je n'a pas montrer aussi Tab1.  J'ai copié et collé le code dans visual studio et il a montré de doublure de la div pied joliment, tout comme ils étaient censés faire, qui ressemble à ceci:

-<div id = « Tab1Content »>
  +<Div>
  +<Div>
-<div id = « Tab2Content »>
  +<Div>
  +<Div>

Je bat ma tête contre le mur pendant un certain temps et a remarqué que dans le réel HTML code générait beaucoup de vide <Div> balises, comme:

<corps>

  <div id = « Tab1Content »>

    <div id = « row1 » />
    <div id = « row2 » />

  </Div>

  <div id = « Tab2Content »>

    <div id = « row1 » />
    <div id = « row2 » />

  </Div>

</corps>

(Ce qui précède est waaaaaaaaaaaay trop simplifié.  Les balises div vide sont totalement valides. Certains de mes <Div> balises étaient pleins de contenu, mais beaucoup d'autres ne le sont pas.  Je suis arrivé à la prise de conscience que mon <XSL:pour chaque> les directives ont été émettant la forme abrégée des balises div quand le xsl:n'a pas pour chaque « trouver toutes les données.  J'ai forcé un commentaire HTML dans la sortie, comme le montre:

image

 

Après que je le faisais, la div alignés parfaitement et mon onglet basculement a commencé à travailler.

Comme toujours, J'espère que cela aide quelqu'un dans une pincée.

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

Exemple: Création HTML Href de XSLT

J'ai été faire un peu de stuff XSL dernièrement et pense que je mettrais ensemble un échantillon pour ma future référence et qui peuvent être de valeur pour nous tous de XSLT-ers, gagner sa vie dans les internets.

Examiner le code XML suivant:

<FdcSearchTabsCollection Count = « 2 »>
  <SearchTab Label = "industrie" SortOrder = « 00 » Label = « Industries » SearchConstraints = "contenttype:Industrie" TabID = « 831b2a74-98c4-4453-8061-86e2fdb22c63 » />
  <SearchTab Label = "pratiques" SortOrder = « 01 » Label = « Pratiques » SearchConstraints = "contenttype:PracticeGroups" TabID = « 678e206b-6996-421f-9765-b0558fe1a9c0 » />
</FdcSearchTabsCollection>

L'extrait de code XSL suivante générera une liste triée des onglets href:

<XSL:match de modèle = FdcSearchTabsCollection »" XML:espace = « sauvegarde »>
   
    <!– La somme de tous les »" onglet –>
    <a href = "javascript:Visualisations(« Toutes les »)">Voir tous</un>
   
    <!– Chaque onglet individuel –>
    <!– Effectuer une itération dans tous les onglets et afficher le bon  Liens. –>
    <XSL:pour chaque select = « SearchTab »>
      <XSL:genre select="@SortOrder"/>

      …
      <a href = "javascript:Visualisations(‘{@ TabID}’)"><XSL:valeur de select="@Label"/></un>
    </XSL:pour chaque>

    <br /> 
   

   </XSL:modèle>

Voici à quoi il ressemble dans SharePoint:

SNAGHTML78aa2cb

 

 

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin