XSLT - XML Düzenleme
- Önceki Sayfa XSLT Sunucu Tarafında
- Sonraki Sayfa XSLT Düzenleyici
XML dosyasında saklanan veriler İnternet tarayıcısı ile düzenlenebilir.
XML'yi aç, düzenle ve kaydet
Şimdi, sunucuda saklanan XML dosyasını nasıl açabileceğinizi, düzenleyebileceğinizi ve kaydedebileceğinizi göstereceğiz.
XML belgesini XSL ile HTML formuna dönüştüreceğiz. XML öğesinin değeri HTML girdi alanına yazılacaktır. Bu form düzenlenebilir. Düzenlendikten sonra, veriler sunucuya gönderilecek ve XML dosyası güncellenecektir (bu kısmı ASP yapacak).
XML ve XSL dosyaları
Öncelikle, kullanılacak XML belgesini ("tool.xml") gözden geçirin:
<?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>
Sonra, aşağıdaki stil tablosunu ("tool.xsl") gözden geçirin:
<?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>Tool Information (edit):</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>
Yukarıdaki bu XSL dosyası XML dosyasındaki elementleri dolaşır ve her bir XML “field” elementi için bir giriş alanı oluşturur. field elementinin id özelliğinin değeri her bir HTML giriş alanının id ve name özelliklerine eklenir. “value” elementinin değeri her bir HTML giriş alanının “value” özelliğine eklenir. Sonuç olarak, XML dosyasındaki değerlerin içeren düzenlenebilir bir HTML formu elde edilir.
Sonra, ikinci bir stil tablosu daha var: “tool_updated.xsl”. Bu XSL dosyası güncellenmiş XML verilerini göstermek için kullanılacaktır. Bu stil tablosu, düzenlenebilir HTML formu değil, bir statik HTML tablosu çıktı yapar:
<?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>Updated Tool Information:</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 dosyası
“tool.xsl” dosyasında, HTML formunun action özelliğinin değeri “edittool.asp” dir.
“edittool.asp” sayfası iki fonksiyon içerir: loadFile() XML dosyasını yükler ve dönüştürür, updateFile() fonksiyonu XML dosyasını günceller:
<% function loadFile(xmlfile,xslfile) Dim xmlDoc,xslDoc XML dosyasını yükleyin set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) XSL dosyasını yükleyin set xslDoc = Server.CreateObject("Microsoft.XMLDOM") xslDoc.async = false xslDoc.load(xslfile) Dosyayı dönüştürün Response.Write(xmlDoc.transformNode(xslDoc)) end function function updateFile(xmlfile) Dim xmlDoc,rootEl,f Dim i XML dosyasını yükleyin set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) rootEl değişkenini kök element olarak ayarlayın Set rootEl = xmlDoc.documentElement form kümesini dolaşın for i = 1 To Request.Form.Count Formdaki düğme elementlerini kaldırın if instr(1,Request.Form.Key(i),"btn_")=0 then selectSingleNode yöntemi, belirli bir sorguyu içeren XML dosyasındaki belirli bir tek node'u sorgular Bu sorgu, field elementinin bir alt elementi olan value elementini talep eder Bu field elementi, form setindeki mevcut key değerine eşleşen id özelliğine sahiptir Eğer eşleşme varsa, text özelliğini form setindeki mevcut alanın değerine ayarlayın set f = rootEl.selectSingleNode("field[@id='" & _ Request.Form.Key(i) & "/value") f.Text = Request.Form(i) end if next Değiştirilmiş XML dosyasını kaydedin xmlDoc.save xmlfile Tüm nesne referanslarını serbest bırakın set xmlDoc=nothing set rootEl=nothing set f=nothing Bir stil tablosu aracılığıyla değiştirilmiş XML dosyasını yükleyin, böylece istemci düzenlenen bilgileri görebilir loadFile xmlfile,server.MapPath("tool_updated.xsl") end function Eğer form zaten gönderilmişse, XML dosyasını güncelleyip sonuçları görüntüleyin, gönderilmemişse, bu XML dosyasını düzenlemek için dönüştürün if Request.Form("btn_sub")="" then loadFile server.MapPath("tool.xml"),server.MapPath("tool.xsl") else updateFile server.MapPath("tool.xml") end if %>
İpucu:ASP yazmayı nasıl yazdığınızı bilmiyorsanız, bizimASP Eğitimi》。
Açıklama:Sunucuda bulunan XML dosyalarını dönüştürüyoruz ve güncelliyoruz. Bu, çapraz platformlu bir çözümdür. İstemci yalnızca sunucudan döndürülen HTML'ye sahip olur - HTML herhangi bir tarayıcıda çalışabilir.
- Önceki Sayfa XSLT Sunucu Tarafında
- Sonraki Sayfa XSLT Düzenleyici