XSLT - XML Düzenleme
- Önceki Sayfa Sunucu Tarafında XSLT
- Sonraki Sayfa XSLT Örneği
XML dosyasında saklanan veriler İnternet tarayıcısı ile düzenlenebilir.
XML açma, düzenleme ve kaydetme
Şimdi, size sunucuda saklanan XML dosyalarını nasıl açacağınız, düzenleyeceğiniz ve kaydedeceğinizi göstereceğiz.
XSL kullanarak XML belgesini bir HTML formuna dönüştüreceğiz. XML öğesinin değeri HTML formundaki HTML giriş 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 yapar).
XML dosyası ve XSL dosyası
Ö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>
Ardından, aşağıdaki stiller 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>Arac Bilgisi (düzenle):</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>
Bu XSL dosyası XML dosyasındaki elementleri döngüsel olarak tarar ve her XML "field" elementi için bir giriş alanı oluşturur. field elementinin id özelliğinin değeri, her HTML giriş alanının id ve name özelliklerine eklenir. "value" elementinin değeri, her HTML giriş alanının "value" özelliğine eklenir. Sonuç olarak, XML dosyasındaki değerlerin içerikli bir HTML formu elde edilir.
Ayrıca, 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ı üretir:
<?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ükleyip dönüştürür, updateFile() fonksiyonu XML dosyasını günceller:
<% function loadFile(xmlfile,xslfile) Dim xmlDoc,xslDoc XML dosyasını yükle set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) XSL Dosyasını Yükleme set xslDoc = Server.CreateObject("Microsoft.XMLDOM") xslDoc.async = false xslDoc.load(xslfile) Dosya Değiştirme Response.Write(xmlDoc.transformNode(xslDoc)) end function function updateFile(xmlfile) Dim xmlDoc,rootEl,f Dim i XML dosyasını yükle set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) rootEl değişkenini kök element olarak ayarla Set rootEl = xmlDoc.documentElement form kümesini dola for i = 1 To Request.Form.Count Formdaki düğme elementlerini kaldır if instr(1,Request.Form.Key(i),"btn_")=0 then selectSingleNode yöntemi, belirli bir sorguyu karşılayan XML dosyasındaki tek bir düğümü sorgular Bu sorgu, field elementinin bir alt elementi olan value elementini arar Bu field elementi, form setindeki mevcut key değerine uyumlu bir id özelliğine sahip Eğer varsa, text özelliğini form setindeki mevcut alanın değerine ayarla set f = rootEl.selectSingleNode("field[@id='" & _ Request.Form.Key(i) & "/value") f.Text = Request.Form(i) end if next Düzenlenmiş XML dosyasını kaydet xmlDoc.save xmlfile Tüm nesne referanslarını serbest bırak set xmlDoc=nothing set rootEl=nothing set f=nothing Düzenlenmiş XML dosyasını bir stil tablosu ile yükleyerek, istemci düzenlediği bilgileri görebilir loadFile xmlfile,server.MapPath("tool_updated.xsl") end function Eğer form zaten gönderilmişse, XML dosyasını güncelle ve sonuçları göster, gönderilmemişse, bu XML dosyasını düzenlemek için dönüştür 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ı bilmiyorsanız, bizim《ASP Eğitimi》。
Açıklama:Sunucudaki XML dosyalarını dönüştürüyoruz ve güncelliyoruz. Bu, bir platform geçiş çözümüdür. İstemci yalnızca sunucudan dönen HTML'yi alabilir - HTML herhangi bir tarayıcıda çalışabilir.
- Önceki Sayfa Sunucu Tarafında XSLT
- Sonraki Sayfa XSLT Örneği