Tag Archives: XSLT

XSLT- en jQuery monsters

Ik heb gedaan een heleboel van XSLT- en jQuery en dacht dat ik zou delen een paar fragmenten die anderen in de toekomst nuttig kunnen vinden.

Voorbeeld 1: Eenvoudige JavaScript uitstoten / jQuery in XSLT:

<XSL:sjabloon match = "iets" XML:ruimte = "behouden">

  <!– Uit de query vriendelijke filters verborgen veld leeg –>
  <script type = "text/javascript">
    $(document).klaar(functie(){
      $("#QueryFriendlyFilters").Val("lege");
    });
  </script>

</XSL:sjabloon>

Dat beetje stoot sommige JavaScript die op de pagina wacht te laden voltooien (vanwege de $(document).klaar(…)) en vervolgens sets de waarde van een verborgen veld genaamd QueryFriendlyFilters aan de letterlijke waarde "leeg".

Voorbeeld 2: Gebruik <XSL:Als> om te controleren 'groter dan',  "minder dan", etc.

<XSL:sjabloon match = "iets" XML:ruimte = "behouden">

  <div id = "fdcAllFilters">
 
    <XSL:Als test="@Count>0">
      <klasse omspannen = "fdcFilterLabel">Huidige filters:</span>
    </XSL:Als>

    <!– meer dingen gebeurt hier. –>

</XSL:sjabloon>

Het bovenstaande fragment wordt gecontroleerd als een kenmerk met de naam "Count" van het "iets" element groter dan nul is.  De XML achter dit zou iets willen:”

<iets Count = "5" />

Voorbeeld 3: Alle elementen doorlopen, interspersing jQuery oproepen.

<!– Alle filters doorlopen en weer de juiste  koppelingen. –>
<XSL:for-each select = "UserFilter">

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

  <klasse omspannen = "fdcFilterLabel"><XSL:waarde-van select="@FilterValue"/></span>

  <script type = "text/javascript">

    $(document).klaar(functie(){
        <XSL:tekst><![CDATA[$("#QueryFriendlyFilters").Val( ($("#QueryFriendlyFilters").Val() + " ]]></XSL:tekst>\"<XSL:waarde-van select="@FilterValue"/>\"<XSL:tekst><![CDATA["));]]></XSL:tekst>
    });

  </script>

</XSL:for-each>

Het bovenstaande fragment is de meest complexe en kunnen er eenvoudiger manieren om het te doen.

De XML achter dit ziet er ongeveer als volgt:

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

Dit fragment is sequentieel doorzoeken <UserFilter> knooppunten. 

Het eerste stoot een anker tag die, wanneer geklikt roept een JavaScript-functie die is al op de pagina, "mySubmitPage" en geeft de waarde van een kenmerk op de <UserFilter> knooppunt met de naam "ID". 

Het straalt dan sommige jQuery die op de pagina wacht te laden.  Een verborgen veld met de naam "QueryFriendlyFilters" door de waarde van het kenmerk FilterValue bijgewerkt dat jQuery.  Opmerking alle de gekke <XSL:tekst> en <![CDATA[ … ]]> spullen.

Dat is het, hoop dat het helpt!

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Eindeloos nesten <div> Tags en jQuery

Dit lijkt een excentrieke onderwerp, Ik ben niet zeker dat het is echt de moeite waard bloggen over, maar dat heeft nooit gestopt me vóór, Dus hier gaan we Glimlach

Ik ben uit te werken op een project waar ik te sommige gegevens uit een zoekopdracht trekken ben, verpakking het omhoog in een XML-bericht en vervolgens dat XML wordt uiteindelijk omgezet in HTML via XSLT.  Er is een heleboel jQuery betrokken, een beetje waarvan sommige tabben functionaliteit implementeert.  Wanneer u klikt op een tabblad (echt, een <div>), jQuery roept .hide() en .show() op diverse divs (de eerste pagina geladen gedownload alle inhoud, zodat er in dit geval geen terugsturen zijn).

Een heleboel uren geleden, het tabblad schakelen logica begon te gedragen onregelmatig en het zou niet een van mijn tabs tonen.  Ik uiteindelijk gevolgd het neer op het feit dat internet explorer (ten minste) dacht dat de <div> Tags genest ver, veel dieper dan bestemd.De werkbalk ontwikkelaar zou weergeven:

-<div id = "Tab1Content">
  -<div>
    -<div>
      -<div id = "Tab2Content">
        -<div>
           …………………………
                   </div>  <— Ten slotte tonen het helemaal naar beneden hier werd gesloten!

Dus, Als ik deed een $("# Tab1Content").verbergen(), Ik zou ook Tab2 verbergen en ik kon nooit tonen Tab2 als ik niet ook Tab1.  Ik gekopieerd en geplakt de code omhoog in visual studio en het bleek alles voor de div's voering tot keurig, net als zij waren verondersteld om te doen, op zoek als dit:

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

Ik sloeg mijn hoofd tegen de muur voor een tijdje en gemerkt dat in de werkelijke HTML code is het genereren veel van lege <div> Tags, zoals:

<lichaam>

  <div id = "Tab1Content">

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

  </div>

  <div id = "Tab2Content">

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

  </div>

</lichaam>

(Het bovenstaande is waaaaaaaaaaaay gesimplificeerd.  De lege div-tags zijn volkomen geldig. Sommige van mijn <div> Tags waren vol van inhoud, maar veel meer waren niet.  Ik kwam tot het besef dat mijn <XSL:for-each> richtlijnen werden de korte vorm uitstoten div tags wanneer de xsl:for-each niet ' gegevens vinden.  Ik gedwongen een HTML-commentaar in de output, zoals:

image

 

Nadat ik deed dat, alle de div's mooi opgesteld en begon te werken mijn tabblad schakelen.

Zoals altijd, Ik hoop dat dit helpt iemand in een snuifje.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Voorbeeld: XSLT HTML Href maken van

Ik heb onlangs het doen van een beetje van XSL spullen en dacht dat ik zou samen te stellen een monster voor mijn toekomstige verwijzing en dat kan van waarde voor ons allemaal XSLT-ers maken van een leven in de internets.

Overweeg de volgende XML:

<FdcSearchTabsCollection telling = "2">
  <Label SearchTab = "industrie" SortOrder (sorteervolgorde) = "00" Label = "Industrieën" SearchConstraints = "contenttype:Industrie" TabID = "831b2a74-98c4-4453-8061-86e2fdb22c63" />
  <Label SearchTab = "praktijken" SortOrder (sorteervolgorde) = "01" Label = "Praktijken" SearchConstraints = "contenttype:PracticeGroups" TabID = "678e206b-6996-421f-9765-b0558fe1a9c0" />
</FdcSearchTabsCollection>

In het volgende XSL-fragment zal genereren een gesorteerde lijst van hrefs tabbladen:

<XSL:sjabloon match = "FdcSearchTabsCollection" XML:ruimte = "behouden">
   
    <!– De "all" tabblad –>
    <een href = "javascript:ViewTab('All')">Alles weergeven</een>
   
    <!– Elke afzonderlijke tab –>
    <!– Alle tabbladen doorlopen en weer de juiste  koppelingen. –>
    <XSL:for-each select = "SearchTab">
      <XSL:select="@SortOrder"/ sorteren>

      …
      <een href = "javascript:ViewTab(‘{@ TabID}’)"><XSL:waarde-van select="@Label"/></een>
    </XSL:for-each>

    <BR /> 
   

   </XSL:sjabloon>

Hier is hoe het eruit ziet in SharePoint:

SNAGHTML78aa2cb

 

 

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin