XSLT - XML Düzenleme

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>

XML dosyasını kontrol edin.

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>

XSL Dosyasını Görüntüleme.

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>

XSL Dosyasını Görüntüleme.

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.