XSLT - XML Düzenleme

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>

XML dosyasını görüntüle.

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>

XSL dosyasını görüntüle.

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>

XSL dosyasını görüntüle.

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.