Категория Архиви: XSLT

XSLT и jQuery проби

Аз са били правиш много XSLT и jQuery и мисленето, аз ще сподели няколко откъси, които други може да намерите за полезни в бъдеще.

Пример 1: Излъчват прости JavaScript / jQuery в XSLT:

<XSL:шаблон за съвпадение = "нещо" XML:космически = "запазите">

  <!– "Празно" е приятелски заявката филтрира скрито поле –>
  <скриптови тип = "текст/javascript">
    $(документ).готов(функция(){
      $("#QueryFriendlyFilters").вал("празно");
    });
  </скрипт>

</XSL:шаблон>

Този бит излъчва някои JavaScript, която изчаква на страницата, за да завърши зареждането (поради $(документ).готов(…)) и след това определя стойността на скрито поле QueryFriendlyFilters на литерален стойност "празно".

Пример 2: Употреба <XSL:Ако> за да проверите "по-голямо от",  "по-малко от", н.

<XSL:шаблон за съвпадение = "нещо" XML:космически = "запазите">

  <DIV ИД = "fdcAllFilters">
 
    <XSL:Ако test="@Count>0">
      <еталониране на клас = "fdcFilterLabel">Текущ филтри:</еталониране>
    </XSL:Ако>

    <!– повече неща се случва тук. –>

</XSL:шаблон>

Горните парченце проверява дали атрибут с име "Преброяване" на "нещо" на елемент е по-голямо от нула.  XML зад това би било нещо подобно:”

<нещо брой = "5" />

Пример 3: Обхождане на всички елементи, interspersing jQuery повиквания.

<!– Обхождане на всички филтри и да покаже правилното  връзки. –>
<XSL:за всеки избор = "UserFilter">

  <клас = "FilterHref" href = "javascript:mySubmitPage("RemoveUserFilter",'{@ ИД}’)">[X]</а>

  <еталониране на клас = "fdcFilterLabel"><XSL:стойността на select="@FilterValue"/></еталониране>

  <скриптови тип = "текст/javascript">

    $(документ).готов(функция(){
        <XSL:текст><![НЕЗАТВОРЕН[$("#QueryFriendlyFilters").вал( ($("#QueryFriendlyFilters").вал() + " ]]></XSL:текст>\"<XSL:стойността на select="@FilterValue"/>\"<XSL:текст><![НЕЗАТВОРЕН["));]]></XSL:текст>
    });

  </скрипт>

</XSL:за всеки>

Горните фрагмент е и най-сложните и може да има по-лесни начина да го направите.

XML зад това изглежда приблизително по следния начин:

<UserFilter ИД = "123" FilterValue = "xyzzy" />

Това парченце е iterating чрез <UserFilter> възли. 

Тя първо да излъчва котва, етикет, когато се натисне предизвика на JavaScript функция, която вече е на страницата, "mySubmitPage" и минава на стойността на даден атрибут на <UserFilter> възел, наречена "ИД". 

След това тя да излъчва някои jQuery, която изчаква на страницата, за да се зареди.  Този jQuery актуализира скрито поле с име "QueryFriendlyFilters" чрез добавяне на стойността на атрибута FilterValue.  Забележка всички луди <XSL:текст> и <![НЕЗАТВОРЕН[ … ]]> неща.

Това е, надежда, той помага!

</край>

Абонирайте се за моя блог.

Следвайте ме на Twitter в http://www.twitter.com/pagalvin

Безкрайно вложени SEARCH <DIV> Етикети и jQuery

Това изглежда като такава Одбол тема, Аз не съм сигурен, че е наистина си струва blogging за, но това никога не ми спря преди, така че тук ние отивам Усмивка

Аз съм работа по даден проект, където аз съм дърпа някои данни от търсене, пакетирането му в XML съобщение и след това тази XML в крайна сметка се преобразува в HTML чрез XSLT.  Има много на jQuery, участващи, една част от които реализира някои tabbing функционалност.  Когато щракнете върху даден раздел (Наистина, а <DIV>), jQuery извиква .hide() и .show() на различни divs (на началната страница натоварване изтегля цялото съдържание, така че няма никакви връщания обратно в този случай).

Няколко часа преди, раздела превключване на логиката започна да се държат erratically и тя няма да се покаже един от моите раздели.  Аз в крайна сметка го проследи до факта, че internet explorer (най-малко) Мислех, че <DIV> етикети, вложени далеч, далеч по-дълбоко отколкото е предвидено.Развивам оръдие ще покаже:

-<DIV id = "Tab1Content">
  -<DIV>
    -<DIV>
      -<DIV id = "Tab2Content">
        -<DIV>
           …………………………
                   </DIV>  <— най-накрая показва, че е затворен чак тук!

Така, Ако аз го направих $("#Tab1Content").Скрий(), Аз също така ще скриете Tab2 и никога не може да покаже Tab2 ако аз също не показват Tab1.  Аз копирани и поставили кода в visual studio и той показа всички на div подплата горе добре, точно като те би трябвало да се прави, гледам подобен този:

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

Бие главата ми срещу стената за известно време и забелязах, че в реалната HTML код е генериране много празни <DIV> Тагове, като:

<тяло>

  <DIV id = "Tab1Content">

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

  </DIV>

  <DIV id = "Tab2Content">

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

  </DIV>

</тяло>

(По-горе е waaaaaaaaaaaay опростени.  На празен div таговете са напълно валидни. Някои от моите <DIV> Tags са пълно съдържание, но много други не са.  Аз дойдох до осъзнаването, че ми <XSL:за всеки> директивите не се излъчва кратка форма когато Тагове div xsl:за всеки не "намери някакви данни.  Аз принудени HTML коментар в изхода, както е показано:

image

 

След като направих това, всички div подредени добре и ми tab превключване започва да работи.

Както винаги, Аз надежда този помагам някой в краен случай.

</край>

Абонирайте се за моя блог.

Следвайте ме на Twitter в http://www.twitter.com/pagalvin

Пример: XSLT създаване на HTML Href

Аз съм бил направите малко XSL неща напоследък и, че аз ще поставени заедно проба за моята бъдещи справки и които могат да бъдат от стойността на всички нас XSLT-ers вземане на живот в internets.

Разглежда следните XML:

<Брой на FdcSearchTabsCollection = "2">
  <Етикет на SearchTab = "промишленост" SortOrder = етикет на "00" = "Индустрии" SearchConstraints = "contenttype:Промишленост" TabID = "831b2a74-98c4-4453-8061-86e2fdb22c63" />
  <Етикет на SearchTab = "практики" SortOrder = етикет на "01" = "Практики" SearchConstraints = "contenttype:PracticeGroups" TabID = "678e206b-6996-421f-9765-b0558fe1a9c0" />
</FdcSearchTabsCollection>

Следните XSL ползвах ще генерира сортирани списък на разделите на hrefs:

<XSL:шаблон за съвпадение = "FdcSearchTabsCollection" XML:космически = "запазите">
   
    <!– "Всички" в раздел –>
    <href = "javascript:ViewTab("Всички")">Виж всички</а>
   
    <!– Всеки отделен раздел –>
    <!– Обхождане на всички раздели и да покаже правилното  връзки. –>
    <XSL:за всеки избор = "SearchTab">
      <XSL:сортиране на select="@SortOrder"/>

      …
      <href = "javascript:ViewTab(‘{@ TabID}’)"><XSL:стойността на select="@Label"/></а>
    </XSL:за всеки>

    <BR /> 
   

   </XSL:шаблон>

Тук е това, което изглежда в SharePoint:

SNAGHTML78aa2cb

 

 

</край>

Абонирайте се за моя блог.

Следвайте ме на Twitter в http://www.twitter.com/pagalvin