Tag-Archive: XSLT

XSLT und jQuery-Beispiele

Ich mache seit viel von XSLT und jQuery und dachte, ich würde ein paar Ausschnitte teilen, die andere in Zukunft nützlich sein können.

Beispiel 1: Einfache JavaScript ausgeben / jQuery in XSLT:

<XSL:Vorlage-Übereinstimmung = "etwas" XML:Space = "preserve">

  <!– Die Abfrage freundlich Filter ausgeblendeten Feld leer –>
  <Skript-Typ = "Text/Javascript">
    $(Dokument).bereit(Funktion(){
      $("#QueryFriendlyFilters").Val("leer");
    });
  </Skript>

</XSL:Vorlage>

Das Bit ausgibt einige JavaScript, das wartet, bis die Seite geladen (wegen der $(Dokument).bereit(…)) und dann der Wert eines ausgeblendeten Felds benannte Mengen QueryFriendlyFilters zu der literale Wert "leer".

Beispiel 2: Verwendung <XSL:If> "größer als" überprüfen,  "kleiner als", usw..

<XSL:Vorlage-Übereinstimmung = "etwas" XML:Space = "preserve">

  <Div Id = "FdcAllFilters">
 
    <XSL:Wenn test="@Count>0">
      <span Class = "FdcFilterLabel">Aktuelle Filter:</Spannweite>
    </XSL:If>

    <!– hier passiert mehr Material. –>

</XSL:Vorlage>

Der oben stehenden Ausschnitt prüft, ob ein Attribut namens "Zählen" des Elements "etwas" größer als 0 (null) ist.  Der XML-Code dahinter wäre so etwas wie:”

<etwas Count = "5" />

Beispiel 3: Durchlaufen aller Elemente, einstreuen jQuery Aufrufe.

<!– Alle Filter durchlaufen und die korrekte Anzeige  Links. –>
<XSL:for-each select = "UserFilter">

  <eine Klasse = "FilterHref" Href = "Javascript:mySubmitPage('RemoveUserFilter','{@ ID}’)">[X]</eine>

  <span Class = "FdcFilterLabel"><XSL:Wert-der select="@FilterValue"/></Spannweite>

  <Skript-Typ = "Text/Javascript">

    $(Dokument).bereit(Funktion(){
        <XSL:Text><![CDATA[$("#QueryFriendlyFilters").Val( ($("#QueryFriendlyFilters").Val() + " ]]></XSL:Text>\"<XSL:Wert-der select="@FilterValue"/>\"<XSL:Text><![CDATA["));]]></XSL:Text>
    });

  </Skript>

</XSL:für jeden>

Der oben stehenden Ausschnitt ist die komplizierteste und möglicherweise gibt es einfachere Wege, es zu tun.

Der XML-Code dahinter sieht ungefähr wie folgt:

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

Dieser Ausschnitt ist durchlaufen <UserFilter> Knoten. 

Es gibt zunächst einen Anker kennzeichnen, die beim Klicken auf Ruft eine JavaScript-Funktion, die bereits auf der Seite ist, "MySubmitPage" und übergibt den Wert eines Attributs auf der <UserFilter> Knoten mit dem Namen "ID". 

Dann gibt es einige jQuery, die wartet, die Seite zu laden.  Dass jQuery aktualisiert ein ausgeblendetes Feld mit dem Namen "QueryFriendlyFilters", indem den Wert des Attributs FilterValue.  Beachten Sie alle verrückt <XSL:Text> und <![CDATA[ … ]]> Bestellung.

Das ist es, hoffe es Hilfen!

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Endlos Schachteln <div> Markierungen und jQuery

Dies scheint, wie so ein Spinner-Thema, Ich bin nicht sicher, dass es wirklich lohnt, über das Bloggen, aber das hat nie aufgehört mich vor, So hier gehen wir Lächeln

Ich bin an einem Projekt arbeiten wo ich einige Daten von einer Suche ziehen bin, Verpackung es bis in eine XML-Nachricht und dann die XML sich letztlich verwandelt in HTML via XSLT.  Es gibt eine Menge von jQuery beteiligt, ein wenig davon implementiert einige der Tab-Taste Funktionen.  Wenn Sie auf eine Registerkarte klicken (wirklich, eine <div>), jQuery ruft .hide() und ...zum() auf verschiedenen divs (der erste Seite laden lädt alle Inhalte, so gibt es in diesem Fall keine postbacks).

Ein paar Stunden, die Registerkarte Schaltlogik Schritte auffälliges Verhalten und es würde nicht eine meiner Registerkarten zeigen.  Ich verfolgt letztlich es bis auf die Tatsache, dass InternetExplorer (mindestens) dachte, dass die <div> Tags geschachtelt weit, weit tiefer als beabsichtigt.Die Developer Toolbar zeigen würde:

-<Div Id = "Tab1Content">
  -<div>
    -<div>
      -<Div Id = "Tab2Content">
        -<div>
           …………………………
                   </div>  <— endlich zeigt es hier ganz unten geschlossen wurde!

Also, Wenn ich habe ein $("# Tab1Content").Ausblenden(), Ich würde auch Tab2 verstecken und ich könnte nie Tab2 zeigen, wenn ich nicht auch Tab1 zeigen.  Ich Kopieren und Einfügen den Code bis in visual Studio und es zeigte alle die Div Futter bis schön, so, wie sie angeblich zu tun, wie folgt aussehen:

-<Div Id = "Tab1Content">
  +<div>
  +<div>
-<Div Id = "Tab2Content">
  +<div>
  +<div>

Ich schlug meinen Kopf gegen die Wand für eine Weile und bemerkte, dass in der eigentlichen HTML Code eine Menge von leeren generiert wurde <div> Schlagwörter, wie:

<Körper>

  <Div Id = "Tab1Content">

    <Div Id = "row1" />
    <Div Id = "row2" />

  </div>

  <Div Id = "Tab2Content">

    <Div Id = "row1" />
    <Div Id = "row2" />

  </div>

</Körper>

(Das oben genannte ist Waaaaaaaaaaaay vereinfacht.  Die leere Div-Tags sind völlig gültig. Einige meiner <div> Markierungen waren voll von Inhalten, aber viel mehr nicht.  Ich kam zu der Erkenntnis, dass mein <XSL:für jeden> Richtlinien wurden die Kurzform ausgeben Div-tags wenn die XSL-Datei:für jede nicht ' finden Sie alle Daten.  Die Ausgabe einen HTML-Kommentar gezwungen, wie gezeigt:

image

 

Nachdem ich den tat, des Div schön aufgereiht und begann meine Tab switching.

Wie immer, Ich hoffe, dass dieses Hilfen im Notfall.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Beispiel: XSLT erstellen HTML-Href

Ich habe dabei ein wenig XSL stuff in letzter Zeit und dachte, ich würde zusammen ein Beispiel für meine zukünftige Referenz und das ist der Wert für uns alle XSLT-Ers ihren Lebensunterhalt in den internets.

Betrachten Sie das folgende XML:

<FdcSearchTabsCollection Count = "2">
  <SearchTab Label = "Industrie" SortOrder = "00" Label = "Industrien" SearchConstraints = "Contenttype:Industrie" TabID = "831b2a74-98c4-4453-8061-86e2fdb22c63" />
  <SearchTab Label = "Praktiken" SortOrder = "01" Label = "Praktiken" SearchConstraints = "Contenttype:PracticeGroups" TabID = "678e206b-6996-421f-9765-b0558fe1a9c0" />
</FdcSearchTabsCollection>

Der folgende XSL-Ausschnitt wird eine sortierte Liste der HREFs zu Registerkarten generiert.:

<XSL:Vorlage-Übereinstimmung = "FdcSearchTabsCollection" XML:Space = "preserve">
   
    <!– Die "all" Registerkarte –>
    <a Href = "Javascript:Sicht('All')">Alle anzeigen</eine>
   
    <!– Jede einzelne Registerkarte –>
    <!– Durchlaufen Sie alle Registerkarten und die korrekte Anzeige  Links. –>
    <XSL:for-each select = "SearchTab">
      <XSL:Sortieren select="@SortOrder"/>

      …
      <a Href = "Javascript:Sicht(‘{@ TabID}’)"><XSL:Wert-der select="@Label"/></eine>
    </XSL:für jeden>

    <BR /> 
   

   </XSL:Vorlage>

Hier ist wie es aussieht in SharePoint:

SNAGHTML78aa2cb

 

 

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin