Επεξεργασία XML με XSLT
- 上一页 XSLT 在服务器端
- 下一页 Παράδειγμα του 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="Υποβολή" /> <input type="reset" id="btn_res" name="btn_res" value="Αναφορά" /> </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 Κύκλος ελέγχου του σύνολου φόρμας 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 文件。这是一个跨平台的解决方案。客户端仅能获得从服务器返回的 HTML - 而 HTML 可运行于任何浏览器。
- 上一页 XSLT 在服务器端
- 下一页 Παράδειγμα του XSLT