Tutorial XSLTLOG MASUK
Tutorial XSLT
pengarang:php.cn  masa kemas kini:2022-04-20 15:02:22

XSLT Edit XML



Data yang disimpan dalam fail XML boleh diedit melalui penyemak imbas Internet.


Buka, edit dan simpan XML

Sekarang, kami akan menunjukkan kepada anda cara membuka, mengedit dan menyimpan fail XML yang disimpan pada pelayan.

Kami akan menggunakan XSL untuk menukar dokumen XML kepada bentuk HTML. Nilai elemen XML ditulis pada medan input HTML dalam bentuk HTML. Borang HTML ini boleh diedit. Selepas diedit, data diserahkan kembali ke pelayan dan fail XML dikemas kini (ini dilakukan oleh ASP).


Fail XML dan fail XSL

Mula-mula, lihat dokumen XML ("tool.xml") yang akan digunakan:

< ? xml version="1.0" encoding="ISO-8859-1"?>
<alat>
<field id="prodName">
<value>HAMMER HG2606</ value> ;
</field>
<field id="prodNo">
<value>32456240</value>
</field>
</field>
< = "price">
<value>$30.00</value>
</field>
</tool>
<🎜>

查看 XML 文件。

接着,请看下面的样式表("tool.xsl"):

<🎜=">
<?0ml versi pengekodan 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.html">
<h2>Maklumat Alat (edit):</h2>
<table border="0">
<xsl:for-each select="tool/field">
<tr>
<td><xsl:value-of select="@id"/></td>
<td>
<jenis input= "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>

Lihat fail XSL.

Fail XSL di atas akan melingkari elemen dalam fail XML dan mencipta medan input untuk setiap elemen "medan" XML. Nilai atribut "id" elemen "medan" XML ditambahkan pada atribut "id" dan "nama" bagi setiap medan input HTML. Nilai setiap elemen "nilai" XML ditambahkan pada atribut "nilai" bagi setiap medan input HTML. Hasilnya ialah borang HTML boleh diedit yang mengandungi nilai daripada fail XML.

Kemudian, kami mempunyai lembaran gaya kedua: "tool_updated.xsl". Fail XSL ini akan digunakan untuk memaparkan data XML yang dikemas kini. Lembaran gaya ini tidak akan mengeluarkan bentuk HTML yang boleh diedit, tetapi bentuk HTML statik:

<?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>Maklumat Alat Yang Dikemas Kini:</h2>
<table border="1">
< ;xsl:for-each select="tool/field">
<tr>
<td><xsl:value-of select="@id" /><
<td><xsl:value-of select="value" /></td>
</tr>
</xsl:for-each> </table>
</body>
</html>
</xsl:template>

</xsl:stylesheet>

Lihat fail XSL.


Fail ASP

Dalam fail "tool.xsl" di atas, nilai atribut tindakan bagi borang HTML ialah "edittool.asp" .

Halaman "edittool.asp" mengandungi dua fungsi: fungsi loadFile() memuatkan dan menukar fail XML, fungsi updateFile() mengemas kini fail XML:

<%
fungsi loadFile(xmlfile,xslfile)
Malapkan xmlDoc,xslDoc
'Muat fail XML
set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc . (xmlfile)
'Muat fail
Response.Write(xmlDoc.transformNode(xslDoc))
fungsi tamat

function updateFile(xmlfile)
Dim xmlDoc,rootEl,f
Malapkan i
'Muat fail XML
set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load(xmlfile)

' Tetapkan pembolehubah rootEl sama dengan elemen akar
Tetapkan rootEl = xmlDoc.documentElement

'Gelung melalui koleksi borang
untuk i = 1 To Request.Form.Count
'Hapuskan elemen butang dalam borang
if instr (1,Request.Form.Key(i),"btn_")=0 maka
'Kaedah selectSingleNode menanyakan fail XML untuk satu nod
'yang sepadan dengan pertanyaan . Pertanyaan ini meminta elemen nilai yang
'anak elemen medan yang mempunyai atribut id yang sepadan dengan
'nilai kunci semasa dalam Koleksi Borang Apabila terdapat padanan -
'set sifat teks sama dengan nilai medan semasa dalam
'Koleksi Borang.
set f = rootEl.selectSingleNode("field[@id='" & _
Request.Form.Key(i ) & "']/value" )
f.Text = Request.Borang(i)
tamat jika
seterusnya

'Simpan fail XML yang diubah suai
xmlDoc.save xmlfile

'Keluarkan semua rujukan objek
set xmlDoc=nothing
set rootEl=nothing
set f=nothing

'Muatkan fail XML yang diubah suai dengan helaian gaya yang
'membolehkan pelanggan melihat maklumat yang diedit
loadFile xmlfile,server.MapPath("tool_updated.xsl")
fungsi tamat

'Jika borang telah diserahkan kemas kini
'Fail XML dan hasil paparan - jika tidak,
'ubah fail XML untuk diedit
jika Request.Form("btn_sub")="" kemudian
loadFile server.MapPath("tool.xml") ,server.MapPath("tool. xsl")
else
updateFile server.MapPath("tool.xml")
end if
%>



Petua:
jika Jika anda tidak tahu cara menulis ASP, sila pelajari tutorial ASP kami.

Nota: Kami sedang menukar dan mengemas kini fail XML yang terdapat pada pelayan. Ini adalah penyelesaian merentas platform. Pelanggan hanya mendapat HTML yang dikembalikan daripada pelayan - dan HTML berjalan dalam mana-mana pelayar.