Latest web development tutorials

XSLT - XML ​​محرر

البيانات المخزنة في ملف XML يمكن تحريرها عن طريق متصفح الإنترنت.


فتح وتحرير وحفظ XML

الآن، وسوف تظهر لك كيفية فتح وتحرير وحفظ ملفات XML المخزنة على الخادم.

سوف نستخدم XML إلى وثيقة XSL إلى نموذج HTML. وسوف تكون مكتوبة قيمة عنصر XML في حقول النموذج المدخلات HTML HTML. هذا النموذج HTML غير قابل للتحرير. بعد تحريرها، وسيتم تقديم البيانات إلى الخادم، يتم تحديث ملفات XML (يتم ذلك جزئيا من خلال ASP).


وثائق XML وملفات XSL

أولا، أن ننظر في وثيقة XML التي سيتم استخدامها ( "tool.xml"):

<?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 .

المقبل، النظر في الورقة التالية أسلوب ( "tool.xsl"):

<?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.html">
<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 .

ملف XSL فوق إرادة حلقة من خلال العناصر في ملف XML، ويخلق مجال المدخلات لكل XML "الميدان" العناصر. يضاف قيمة "معرف" السمة XML عنصر "حقل" إلى "هوية" و "اسم" سمة من مساهمة في كل مجال HTML. يتم إضافة قيمة كل عنصر XML "قيمة" إلى السمة "قيمة" من كل حقل إدخال HTML. ونتيجة لذلك، يمكنك الحصول على قيمة من ملف XML الذي يحتوي على شكل HTML يمكن تحريرها.

ثم، لدينا أنماط الثاني: "tool_updated.xsl". سيتم استخدام هذا الملف XSL لعرض بيانات XML المحدثة. وهذه الورقة أسلوب لا يكون إخراج نموذج HTML للتحرير، ولكن الجدول HTML ثابت:

<?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 .


ملف ASP

في الملف أعلاه "tool.xsl"، قيمة السمة عمل نموذج HTML هي "edittool.asp".

"Edittool.asp" الصفحة تحتوي على وظيفتين: loadFile () الأحمال وظيفة وتحول ملف XML، updateFile () وظيفة بتحديث ملف XML:

<%
function loadFile(xmlfile,xslfile)
Dim xmlDoc,xslDoc
'Load XML file
set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load(xmlfile)
'Load XSL file
set xslDoc = Server.CreateObject("Microsoft.XMLDOM")
xslDoc.async = false
xslDoc.load(xslfile)
'Transform file
Response.Write(xmlDoc.transformNode(xslDoc))
end function

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

'Set the rootEl variable equal to the root element
Set rootEl = xmlDoc.documentElement

'Loop through the form collection
for i = 1 To Request.Form.Count
'Eliminate button elements in the form
if instr(1,Request.Form.Key(i),"btn_")=0 then
'The selectSingleNode method queries the XML file for a single node
'that matches a query. This query requests the value element that is
'the child of a field element that has an id attribute which matches
'the current key value in the Form Collection. When there is a match -
'set the text property equal to the value of the current field in the
'Form Collection.
set f = rootEl.selectSingleNode("field[@id='" & _
Request.Form.Key(i) & "']/value")
f.Text = Request.Form(i)
end if
next

'Save the modified XML file
xmlDoc.save xmlfile

'Release all object references
set xmlDoc=nothing
set rootEl=nothing
set f=nothing

'Load the modified XML file with a style sheet that
'allows the client to see the edited information
loadFile xmlfile,server.MapPath("tool_updated.xsl")
end function

'If the form has been submitted update the
'XML file and display result - if not,
'transform the XML file for editing
if Request.Form("btn_sub")="" then
loadFile server.MapPath("tool.xml"),server.MapPath("tool.xsl")
else
updateFile server.MapPath("tool.xml")
end if
%>

نصيحة: إذا كنت لا تعرف كيفية كتابة ASP، يرجى ندرس ASP البرنامج التعليمي .

ملاحظة: نحن موجودون على الخادم وتحديث وتحويل الوثائق XML.هذا هو الحل عبر منصة. ويمكن الحصول على العميل فقط من عاد HTML الخادم - HTML ويمكن تشغيلها على أي متصفح.