Tag Archives: XSLT

XSLT a jQuery vzorky

Jsem dělal hodně XSLT a jQuery a myslel jsem, že by sdílet několik úryvků, které ostatní užitečné v budoucnosti.

Příklad 1: Generuje jednoduchý JavaScript / jQuery v XSLT:

<XSL:Šablona shoda = "něco" XML:prostor = "zachovat">

  <!– Prázdné pole Skrytá přátelské filtry dotazu –>
  <skript typ = "text/javascript">
    $(dokument).připraven(funkce(){
      $("#QueryFriendlyFilters").Val("prázdný");
    });
  </skript>

</XSL:Šablona>

Tento bit vyzařuje nějaký JavaScript, který čeká na dokončení načítání stránky (vzhledem $(dokument).připraven(…)) a pak nastaví hodnotu skrytého pole QueryFriendlyFilters na hodnotu literálu "prázdná".

Příklad 2: Použití <XSL:Pokud> Kontrola "větší než",  "menší než", atd.

<XSL:Šablona shoda = "něco" XML:prostor = "zachovat">

  <div id = "fdcAllFilters">
 
    <XSL:Pokud test="@Count>0">
      <rozpětí class = "fdcFilterLabel">Aktuální filtry:</rozpětí>
    </XSL:Pokud>

    <!– další věci se tady stane. –>

</XSL:Šablona>

Výše uvedený fragment kontroluje, zda atribut s názvem "Počet" prvku "něco" je větší než nula.  XML za tím něco jako by:”

<něco Count = "5" />

Příklad 3: Iterovat všechny prvky, vkládání jQuery volání.

<!– Iterovat všechny filtry a zobrazit správně  odkazy. –>
<XSL:pro každý select = "UserFilter">

  <Třída = "FilterHref" href = "javascript:mySubmitPage("RemoveUserFilter",'{@ ID}’)">[X]</a>

  <rozpětí class = "fdcFilterLabel"><XSL:hodnota z select="@FilterValue"/></rozpětí>

  <skript typ = "text/javascript">

    $(dokument).připraven(funkce(){
        <XSL:text><![CDATA[$("#QueryFriendlyFilters").Val( ($("#QueryFriendlyFilters").Val() + " ]]></XSL:text>\"<XSL:hodnota z select="@FilterValue"/>\"<XSL:text><![CDATA["));]]></XSL:text>
    });

  </skript>

</XSL:pro každý>

Výše uvedený fragment je nejkomplexnější a může být jednodušší způsoby, jak to udělat.

XML za to zhruba vypadá takto:

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

Tento úryvek je iterace <UserFilter> uzly. 

Nejprve emituje Kotvicí značka, po klepnutí vyvolá funkci jazyka JavaScript, která je již na stránce, "mySubmitPage" a předá hodnotu atributu <UserFilter> uzel s názvem "ID". 

Pak emituje některé jQuery, která čeká na stránku načte.  Tento jQuery aktualizuje skryté pole s názvem "QueryFriendlyFilters" přidáním hodnoty atributu FilterValue.  Poznámka: všechny šílené <XSL:text> a <![CDATA[ … ]]> materiál.

To je ono, Doufám, že to pomůže!

</Konec>

Přihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Donekonečna vnoření <div> Značky a jQuery

To se jeví jako takové podivíne téma, Nejsem si jistý, že to opravdu stojí blogu, Ale to mě ještě nikdy nevadilo, Tak tady to máme Usměj se

Já pracuji na projektu, kde jsem si nějaké údaje z hledání, balení do XML zprávy a pak že XML je nakonec transformován do HTML pomocí XSLT.  Je o hodně jQuery, jeden bit z nich implementuje funkce procházení.  Když klepnete na kartu (Vážně, a <div>), jQuery vyvolá .hide() a jí Ukažte() na různé značky (načtení úvodní stránku stáhne veškerý obsah, takže v tomto případě neexistují žádné postbacks).

Banda před hodinami, Karta přepínání logiky začali chovat chaoticky a ji ukáže jeden z mé karty.  Nakonec dozvěděl jsem se to dolů k tomu, že aplikace internet explorer (nejméně) Myslel, že <div> značky vnořené daleko, mnohem hlubší než určené.Vývojář nástrojů by ukázal:

-<div id = "Tab1Content">
  -<div>
    -<div>
      -<div id = "Tab2Content">
        -<div>
           …………………………
                   </div>  <— konečně ukazuje byl uzavřen až sem!

Tak, Pokud jsem udělal $("# Tab1Content").Skrýt(), Také by skrýt Tab2 a mohl bych nikdy ukázat Tab2 pokud nechtěl také zobrazit Tab1.  Zkopírovat a vložit kód v aplikaci visual studio a to vše div obložení se ukázal pěkně, stejně jako by měl dělat, Takhle:

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

Porazil mou hlavou proti zdi na chvíli a všiml si, že skutečné HTML kódu vytvářel spoustu prázdná <div> značky, jako:

<tělo>

  <div id = "Tab1Content">

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

  </div>

  <div id = "Tab2Content">

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

  </div>

</tělo>

(Výše uvedené je waaaaaaaaaaaay zjednodušili.  Prázdný div značky jsou naprosto platné. Některé z mého <div> značky byly plné obsahu, Ale mnohem víc.  Přišel jsem k poznání že moje <XSL:pro každý> směrnice byly výstupu zkrácené když značky div xsl:pro každý ne ' najít žádná data.  Donutila komentáře HTML do výstupu, Jak je uvedeno:

image

 

Poté, co jsem to udělal, všechny div zákrytu pěkně a moje karta přepínání začala pracovat.

Jako vždy, Doufám, že to pomůže někdo v nouzi.

</Konec>

Přihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Příklad: XSLT vytváření HTML Atribut Href

Jsem dělal poslední dobou trochu XSL věci a myslel, že bych dal jsem dohromady vzorek pro mé budoucí referenci a to může být pro nás všechny hodnotu XSLT nabízejí vydělat na živobytí v internets.

Zvažte následující XML:

<FdcSearchTabsCollection Count = "2">
  <SearchTab Label = "průmysl" SortOrder = "00" Label = "Průmyslem" SearchConstraints = "contenttype:Průmysl" TabID = "831b2a74-98c4-4453-8061-86e2fdb22c63" />
  <SearchTab Label = "praxe" SortOrder = "01" Label = "Praxe" SearchConstraints = "contenttype:PracticeGroups" TabID = "678e206b-6996-421f-9765-b0558fe1a9c0" />
</FdcSearchTabsCollection>

Následující úryvek XSL vytvoří seřazený seznam karet značky HREF:

<XSL:Šablona shoda = "FdcSearchTabsCollection" XML:prostor = "zachovat">
   
    <!– "Vše" Tabulátor –>
    <a href = "javascript:ViewTab("All")">Zobrazit vše</a>
   
    <!– Každé jednotlivé karty –>
    <!– Iterovat všechny karty a zobrazit správně  odkazy. –>
    <XSL:pro každý select = "SearchTab">
      <XSL:řazení select="@SortOrder"/>

      …
      <a href = "javascript:ViewTab(‘{@ TabID}’)"><XSL:hodnota z select="@Label"/></a>
    </XSL:pro každý>

    <BR /> 
   

   </XSL:Šablona>

Zde je, jak to vypadá v SharePoint:

SNAGHTML78aa2cb

 

 

</Konec>

Přihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin