Αρχεία ετικετών: XSLT

XSLT και jQuery δείγματα

Έχω κάνει πολλή XSLT και jQuery και σκέφτηκα ότι θα μοιραστώ ορισμένα αποσπάσματα που άλλοι μπορεί να φανούν χρήσιμες στο μέλλον.

Παράδειγμα 1: Εκπέμπουν απλό JavaScript / jQuery σε XSLT:

<XSL:πρότυπο αγώνα = "κάτι" XML:χώρος = «διατηρήσουν»>

  <!– Κενό έξω το ερώτημα φιλικό να φιλτράρει κρυφό πεδίο –>
  <σενάριο τύπο = "text/javascript">
    $(έγγραφο).έτοιμο(συνάρτηση(){
      $("#QueryFriendlyFilters").Val(«κενό»);
    });
  </σενάριο>

</XSL:πρότυπο>

Εκείνο το κομμάτι εκπέμπει τα κάποια JavaScript που περιμένει τη σελίδα για να τελειώσει τη φόρτωση (λόγω της την $(έγγραφο).έτοιμο(…)) και στη συνέχεια σύνολα η τιμή του ένα κρυφό πεδίο που ονομάζεται QueryFriendlyFilters να η τιμή literal "Αδειασμα".

Παράδειγμα 2: Χρήση <XSL:Αν> να ελέγξετε "μεγαλύτερο από",  "λιγότερο από", κλπ.

<XSL:πρότυπο αγώνα = "κάτι" XML:χώρος = «διατηρήσουν»>

  <div id = "fdcAllFilters">
 
    <XSL:Αν test="@Count>0">
      <span class = "fdcFilterLabel">Τρέχοντα φίλτρα:</span>
    </XSL:Αν>

    <!– περισσότερα πράγματα που συμβαίνουν εδώ. –>

</XSL:πρότυπο>

Το παραπάνω απόσπασμα ελέγχει αν ένα χαρακτηριστικό που ονομάζεται "Μετράνε" του στοιχείου "κάτι" είναι μεγαλύτερη του μηδενός.  Το XML πίσω από αυτό θα ήταν κάτι σαν:”

<κάτι Count = "5" />

Παράδειγμα 3: Επαναλαμβάνεται σε όλα τα στοιχεία, Interspersing jQuery κλήσεις.

<!– Επαναλαμβάνεται σε όλα τα φίλτρα και να εμφανίζει τη σωστή  συνδέσεις. –>
<XSL:για κάθε επιλογή = "UserFilter">

  <μια κατηγορία = "FilterHref" href = "javascript:mySubmitPage(«RemoveUserFilter»,'{@ID}’)">[X]</ένα>

  <span class = "fdcFilterLabel"><XSL:αξία του select="@FilterValue"/></span>

  <σενάριο τύπο = "text/javascript">

    $(έγγραφο).έτοιμο(συνάρτηση(){
        <XSL:κείμενο><![CDATA[$("#QueryFriendlyFilters").Val( ($("#QueryFriendlyFilters").Val() + " ]]></XSL:κείμενο>\"<XSL:αξία του select="@FilterValue"/>\"<XSL:κείμενο><![CDATA["));]]></XSL:κείμενο>
    });

  </σενάριο>

</XSL:για-κάθε>

Το παραπάνω απόσπασμα είναι το πιο περίπλοκο και μπορεί να υπάρξει ευκολότερους τρόπους για να το κάνουμε.

Το XML πίσω από αυτό μοιάζει περίπου με αυτό:

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

Αυτό το απόσπασμα διαδοχικές προσεγγίσεις μέσα σε <UserFilter> κόμβους. 

Πρώτα εκπέμπει μια άγκυρα ετικέτα που όταν πατηθεί εκτελεί μια λειτουργία JavaScript που είναι ήδη στη σελίδα, "mySubmitPage" και μεταβιβάζει την τιμή ενός χαρακτηριστικού το <UserFilter> κόμβος που ονομάζεται "Αναγνωριστικό". 

Στη συνέχεια, εκπέμπει κάποια jQuery που περιμένει την σελίδα να φορτώσει.  JQuery ότι ενημερώνει ένα κρυφό πεδίο που ονομάζεται "QueryFriendlyFilters" προσθέτοντας την τιμή του χαρακτηριστικού FilterValue.  Σημείωση όλα την τρελή <XSL:κείμενο> και <![CDATA[ … ]]> πράγματα.

Αυτό είναι, ελπίδα αυτό βοηθά!

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Ένθεση ατελείωτα <div> Ετικέτες και jQuery

Αυτό φαίνεται σαν τέτοια ένα αιφνίδιο τέλος θέμα, Δεν είμαι σίγουρος ότι αξίζει πραγματικά blogging σχετικά με, αλλά αυτό ποτέ δεν έχει διακοπεί μου πριν από, Επομένως εδώ θα προχωρήσουμε Χαμόγελο

Εργάζομαι σε ένα έργο, όπου εγώ τράβηγμα ορισμένα δεδομένα από μια αναζήτηση, συσκευασίας αυτό σε ένα μήνυμα XML και στη συνέχεια το XML είναι τελικά μετατραπεί σε HTML μέσω XSLT.  Υπάρχει πολλή jQuery συμμετέχουν, ένα bit που υλοποιεί ορισμένα στηλοθέτησης λειτουργικότητα.  Όταν κάνετε κλικ σε μια καρτέλα (Αλήθεια, ένα <div>), jQuery επικαλείται .hide() και .show() στις διάφορες divs (το φορτίο Αρχική σελίδα λήψεις όλο το περιεχόμενο, ώστε να υπάρχουν σε αυτή την περίπτωση δεν καταχωρήσεων προς τα πίσω).

Ένα σωρό ώρες ago, το tab switching λογική άρχισε να συμπεριφερθούν με αστάθεια και δεν θα εμφανίζει μία μου καρτελών.  Τελικά παρακολούθησα αυτό οφείλεται φυσικά στο γεγονός ότι του 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 αναγνωριστικό = «row1» />
    <div αναγνωριστικό = «row2» />

  </div>

  <div id = "Tab2Content">

    <div αναγνωριστικό = «row1» />
    <div αναγνωριστικό = «row2» />

  </div>

</οργανισμός>

(Τα παραπάνω είναι waaaaaaaaaaaay να μετατρέπονται σε κοινότοπα.  Τα κενά tag div tag είναι απολύτως έγκυρες. Ορισμένες μου <div> Ετικέτες ήταν πλήρες του περιεχόμενο, αλλά δεν ήταν πολλά περισσότερα.  Μου ήρθε με την υλοποίηση που μου <XSL:για-κάθε> οδηγίες εκπέμπουν τη συνοπτική div ετικέτες όταν το xsl:δεν for-each' βρει οποιαδήποτε δεδομένα.  Εγώ αναγκάζονται ένα σχόλιο HTML της εξόδου, όπως φαίνεται:

image

 

Αφού το έκανα που, όλα τα του div ευθυγραμμισμένο ωραία και μου καρτέλα εναλλαγής άρχισε να εργάζεται.

Όπως πάντα, Ελπίζω αυτό βοηθά κάποιον σε μια πρέζα.

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Παράδειγμα: XSLT τη δημιουργία HTML Href του

Έχω κάνει ένα κομμάτι της XSL πράγματα τον τελευταίο καιρό και σκέψη θα βάλει μαζί ένα δείγμα για μελλοντική αναφορά μου και ενδεχομένως της αξίας σε όλους μας XSLT-ers που ζουν στο Ίντερνετ.

Εξετάστε το ακόλουθο XML:

<FdcSearchTabsCollection Count = "2">
  <SearchTab ετικέτα = "βιομηχανία" Σειρά ταξινόμησης = "00" ετικέτα = "Βιομηχανίες" SearchConstraints = "contenttype:Βιομηχανία" TabID = "831b2a74-98c4-4453-8061-86e2fdb22c63" />
  <SearchTab ετικέτα = "πρακτικές" Σειρά ταξινόμησης = "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

 

 

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin