XSLT - Επεξεργασία XML
- Προηγούμενη Σελίδα XSLT στο Server
- Επόμενη Σελίδα Επεξεργαστής XSLT
Τα δεδομένα που αποθηκεύονται στα αρχεία XML μπορούν να επεξεργαστούν μέσω του διαδικτυακού προγράμματος περιήγησης.
Ανοίξτε, επεξεργαστείτε και αποθηκεύστε τα αρχεία XML
Τώρα, θα σας δείξουμε πώς να ανοίξετε, να επεξεργαστείτε και να αποθηκεύσετε τα αρχεία XML που αποθηκεύονται στον διακομιστή.
Θα χρησιμοποιήσουμε το XSL για να μετατρέψουμε το αρχείο XML σε μια φόρμα HTML. Οι τιμές των στοιχείων XML θα γραφτούν στις περιοχές εισαγωγής HTML της φόρμας. Η φόρμα αυτή είναι επεξεργαστέα. Μετά την ολοκλήρωση της επεξεργασίας, τα δεδομένα θα υποβληθούν πίσω στο διακομιστή, το αρχείο XML θα ενημερωθεί (αυτό το μέρος το επιτυγχάνει το ASP).
Αρχεία XML και XSL
Πρώτα από όλα, δείτε το XML αρχείο που θα χρησιμοποιηθεί ("tool.xml"):
<?xml version="1.0" encoding="ISO-8859-1"?> <tool> <field id="prodName"> <value>HAMMER HG2606</value> </field> <field id="prodNo"> <value>32456240</value> </field> <field id="price"> <value>$30.00</value> </field> </tool>
Συνεχίζοντας, δείτε την παρακάτω στυλθήκη ("tool.xsl"):
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <form method="post" action="edittool.asp"> <h2>Ειδήσεις Εργαλείων (επεξεργασία):</h2> <table border="0"> <xsl:for-each select="tool/field"> <tr> <td> <xsl:value-of select="@id"/> </td> <td> <input type="text"> <xsl:attribute name="id"> <xsl:value-of select="@id" /> </xsl:attribute> <xsl:attribute name="name"> <xsl:value-of select="@id" /> </xsl:attribute> <xsl:attribute name="value"> <xsl:value-of select="value" /> </xsl:attribute> </input> </td> </tr> </xsl:for-each> </table> <br /> <input type="submit" id="btn_sub" name="btn_sub" value="Submit" /> <input type="reset" id="btn_res" name="btn_res" value="Reset" /> </form> </body> </html> </xsl:template> </xsl:stylesheet>
Το παραπάνω αρχείο XSL θα περπατήσει σε κύκλο τα στοιχεία του αρχείου XML και θα δημιουργήσει ένα πεδίο εισαγωγής για κάθε στοιχείο "field" XML. Η τιμή της ιδιότητας id του στοιχείου field θα προστεθεί στις ιδιότητες id και name κάθε HTML πεδίου εισαγωγής. Η τιμή του στοιχείου "value" θα προστεθεί στην ιδιότητα "value" κάθε HTML πεδίου εισαγωγής. Το αποτέλεσμα είναι να μπορούμε να έχουμε μια επεξεργασμένη HTML φόρμα που περιέχει τις τιμές του αρχείου XML.
Στη συνέχεια, έχουμε και δεύτερη στυλική τάξη: "tool_updated.xsl". Αυτό το αρχείο XSL θα χρησιμοποιηθεί για την εμφάνιση των ενημερωμένων δεδομένων XML. Αυτή η στυλική τάξη δεν θα εκτυπώσει επεξεργασμένα HTML φόρμα, αλλά μια στατική HTML τάβλη.
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>Ενημερωμένες πληροφορίες εργαλείου:</h2> <table border="1"> <xsl:for-each select="tool/field"> <tr> <td><xsl:value-of select="@id" /></td> <td><xsl:value-of select="value" /></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
Αρχείο ASP
Στο αρχείο "tool.xsl", η τιμή της ιδιότητας action του HTML φόρμας είναι "edittool.asp".
Η σελίδα "edittool.asp" περιέχει δύο συναρτήσεις: loadFile() για τη φόρτωση και μετατροπή του αρχείου XML, και updateFile() για την ενημέρωση του αρχείου XML:
<% function loadFile(xmlfile,xslfile) Dim xmlDoc,xslDoc φορτώνει το αρχείο XML set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) φορτώνει το αρχείο XSL set xslDoc = Server.CreateObject("Microsoft.XMLDOM") xslDoc.async = false xslDoc.load(xslfile) μετατρέπει το αρχείο Response.Write(xmlDoc.transformNode(xslDoc)) end function function updateFile(xmlfile) Dim xmlDoc,rootEl,f Dim i φορτώνει το αρχείο XML set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) ορίζει το ρίζα rootEl ως το στοιχείο ρίζας Set rootEl = xmlDoc.documentElement κύκλος πλοήγησης στη συλλογή form for i = 1 To Request.Form.Count αφαιρεί τα στοιχεία κουμπιών από τη φόρμα if instr(1,Request.Form.Key(i),"btn_")=0 then η μέθοδος selectSingleNode μπορεί να αναζητήσει ένα μοναδικό κόμβο στο αρχείο XML που ταιριάζει σε μια ερώτηση αυτή η ερώτηση ζητά το στοιχείο value, το οποίο είναι υποστοιχείο του στοιχείου field αυτό το στοιχείο field έχει την ιδιότητα id που μπορεί να ταιριάζει στην τρέχουσα τιμή key της φόρμας αν υπάρχει συμφωνία, τότε ορίζεται η ιδιότητα text ως η τιμή του τρέχοντος πεδίου της φόρμας set f = rootEl.selectSingleNode("field[@id='" & _ Request.Form.Key(i) & "]/value") f.Text = Request.Form(i) end if next αποθηκεύει το τροποποιημένο αρχείο XML xmlDoc.save xmlfile απελευθερώνει όλες τις αναφορές αντικειμένων set xmlDoc=nothing set rootEl=nothing set f=nothing με τη φόρτωση ενός φυλλαδίου στυλ φορτώνεται το τροποποιημένο αρχείο XML, ώστε ο πελάτης να δει τις πληροφορίες που έχουν επεξεργαστεί loadFile xmlfile,server.MapPath("tool_updated.xsl") end function Αν το μορφότυπο έχει υποβληθεί, τότε ενημερώστε το αρχείο XML και εμφανίστε τα αποτελέσματα, αν δεν έχει υποβληθεί, τότε μετατρέψτε το αρχείο XML για επεξεργασία if Request.Form("btn_sub")="" then loadFile server.MapPath("tool.xml"),server.MapPath("tool.xsl") else updateFile server.MapPath("tool.xml") end if %>
Συμβουλή:Αν δεν γνωρίζετε πώς να γράφετε ASP, μάθετε το βιβλίο μαςΕκπαιδευτικός Οδηγός ASP》。
Σημείωση:Είμαστε σε διαδικασία μετατροπής και ενημέρωσης των αρχείων XML που βρίσκονται στο server. Αυτό είναι μια λύση διασταυρούμενης πλατφόρμας. Ο πελάτης μπορεί να λαμβάνει μόνο το HTML που επιστρέφεται από τον server - και το HTML μπορεί να εκτελεστεί σε οποιοδήποτε browser.
- Προηγούμενη Σελίδα XSLT στο Server
- Επόμενη Σελίδα Επεξεργαστής XSLT