فهرست سرفصل‌های XML
خانه (XML HOME) مقدمه (XML Introduction) نحوه استفاده (XML How to use) درخت (XML Tree) سینتکس (XML Syntax) عناصر (XML Elements) ویژگی ها (XML Attributes) فضاهای نام (XML Namespaces) نمایش (XML Display) XMLHttpRequest (XML HttpRequest) پارسر (XML Parser) DOM (XML DOM) XPath (XML XPath) XSLT (XML XSLT) XQuery (XML XQuery) XLink (XML XLink) اعتبارسنج (XML Validator) DTD (XML DTD) اسکیما (XML Schema) سرور (XML Server) مقدمه (AJAX Introduction) ساخت XMLHttpRequest (AJAX XMLHttp) ارسال درخواست (AJAX Request) پاسخ (AJAX Response) فایل XML (AJAX XML File) AJAX با PHP (AJAX PHP) AJAX با ASP (AJAX ASP) پایگاه داده (AJAX Database) اپلیکیشن ها (AJAX Applications) مثال ها (AJAX Examples) مقدمه (DOM Introduction) گره ها (DOM Nodes) دسترسی (DOM Accessing) اطلاعات گره (DOM Node Info) فهرست گره ها (DOM Node List) پیمایش (DOM Traversing) ناوبری (DOM Navigating) گرفتن مقادیر (DOM Get Values) تغییر گره ها (DOM Change Nodes) حذف گره ها (DOM Remove Nodes) جایگزینی گره ها (DOM Replace Nodes) ساخت گره ها (DOM Create Nodes) افزودن گره ها (DOM Add Nodes) کلون کردن گره ها (DOM Clone Nodes) مثال ها (DOM Examples) مقدمه (XPath Introduction) گره ها (XPath Nodes) سینتکس (XPath Syntax) محورها (XPath Axes) عملگرها (XPath Operators) مثال ها (XPath Examples) مقدمه (XSLT Introduction) زبان ها (XSL Languages) تبدیل (XSLT Transform) الگو (<template>) (XSLT <template>) value-of (<value-of>) (XSLT <value-of>) for-each (<for-each>) (XSLT <for-each>) مرتب سازی (XSLT <sort>) اگر (<if>) (XSLT <if>) انتخاب (XSLT <choose>) اعمال قالب ها (XSLT Apply) در سمت کلاینت (XSLT on the Client) در سمت سرور (XSLT on the Server) ویرایش XML (XSLT Edit XML) مثال ها (XSLT Examples) مقدمه (XQuery Introduction) مثال (XQuery Example) FLWOR (XQuery FLWOR) HTML (XQuery HTML) اصطلاحات (XQuery Terms) سینتکس (XQuery Syntax) افزودن (XQuery Add) انتخاب (XQuery Select) توابع (XQuery Functions) مقدمه (DTD Introduction) بلوک های سازنده (DTD Building Blocks) عناصر (DTD Elements) ویژگی ها (DTD Attributes) عناصر در برابر ویژگی ها (DTD Elements vs Attr) موجودیت ها (DTD Entities) مثال ها (DTD Examples) مقدمه (XSD Introduction) چگونه (XSD How To) برچسب <schema> (XSD <schema>) عناصر (XSD Elements) ویژگی ها (XSD Attributes) محدودیت ها (XSD Restrictions) عناصر پیچیده (XSD Complex Elements) خالی (XSD Empty) فقط عناصر (XSD Elements-only) فقط متن (XSD Text-only) ترکیبی (XSD Mixed) نشانگرها (XSD Indicators) <any> (XSD <any>) <anyAttribute> (XSD <anyAttribute>) جایگزینی (XSD Substitution) مثال (XSD Example) رشته (XSD String) تاریخ/زمان (XSD Date/Time) عددی (XSD Numeric) متفرقه (XSD Misc) مرجع (XSD Reference) سرویس ها (XML Services) WSDL (XML WSDL) SOAP (XML SOAP) RDF (XML RDF) RSS (XML RSS) مثال ها (XML Examples) آزمون (XML Quiz) سیلابس (XML Syllabus) برنامه مطالعه (XML Study Plan) گواهینامه (XML Certificate) انواع گره (DOM Node Types) گره (DOM Node) NodeList (DOM NodeList) NamedNodeMap (DOM NamedNodeMap) سند (DOM Document) عنصر (DOM Element) ویژگی (DOM Attribute) متن (DOM Text) CDATA (DOM CDATA) کامنت (DOM Comment) XMLHttpRequest (DOM XMLHttpRequest) پارسر (DOM Parser) المان ها (XSLT Elements) توابع (XSLT/XPath Functions)
نتیجه‌ای برای جستجو یافت نشد.
XML

XML — ویرایش XML (XSLT Edit XML)

آخرین بروزرسانی: 1404/08/17

ویرایش XML (XSLT Edit XML)

اینجا «ویرایش XML با XSLT» را می بینی. XSLT یعنی تبدیل XML به HTML. فرم HTML یعنی همان فیلدهای قابل ویرایش. هدف این است: XML را به فرم تبدیل کنیم، ویرایش کنیم، سپس دوباره XML را ذخیره کنیم.

باز کردن، ویرایش و ذخیره XML

ابتدا XML را می خوانیم. سپس با XSLT یک فرم می سازیم. کاربر فرم را ویرایش می کند. در پایان، داده ویرایش شده در XML ذخیره می شود. این کار سمت سرور انجام می شود تا در همه مرورگرها کار کند.

فایل XML نمونه (tool.xml)

این XML چند «field» دارد. هر «field» یک «id» و یک «value» دارد. مثل برگه نمرات که هر سطر، یک فیلد است.

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;tool&gt;
  &lt;field id="prodName"&gt;
    &lt;value&gt;HAMMER HG2606&lt;/value&gt;
  &lt;/field&gt;
  &lt;field id="prodNo"&gt;
    &lt;value&gt;32456240&lt;/value&gt;
  &lt;/field&gt;
  &lt;field id="price"&gt;
    &lt;value&gt;$30.00&lt;/value&gt;
  &lt;/field&gt;
&lt;/tool&gt;

مشاهده در ادیتور

XSLT فرم ویرایش (tool.xsl)

این XSLT هر «field» را به یک ورودی متن تبدیل می کند. مقدار «id» به «id» و «name» ورودی می رود. مقدار «value» به «value» ورودی می رود. مثل برگه ثبت نام که فیلدها آماده است.

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;
  &lt;xsl:template match="/"&gt;
    &lt;html&gt;
      &lt;body&gt;
        &lt;form method="post" action="edittool.asp"&gt;
          &lt;h2&gt;Tool Information (edit):&lt;/h2&gt;
          &lt;table border="0"&gt;
            &lt;xsl:for-each select="tool/field"&gt;
              &lt;tr&gt;
                &lt;td&gt;&lt;xsl:value-of select="@id"/&gt;&lt;/td&gt;
                &lt;td&gt;
                  &lt;input type="text"&gt;
                    &lt;xsl:attribute name="id"&gt;
                      &lt;xsl:value-of select="@id"/&gt;
                    &lt;/xsl:attribute&gt;
                    &lt;xsl:attribute name="name"&gt;
                      &lt;xsl:value-of select="@id"/&gt;
                    &lt;/xsl:attribute&gt;
                    &lt;xsl:attribute name="value"&gt;
                      &lt;xsl:value-of select="value"/&gt;
                    &lt;/xsl:attribute&gt;
                  &lt;/input&gt;
                &lt;/td&gt;
              &lt;/tr&gt;
            &lt;/xsl:for-each&gt;
          &lt;/table&gt;
          &lt;br /&gt;
          &lt;input type="submit" id="btn_sub" name="btn_sub" value="Submit" /&gt;
          &lt;input type="reset" id="btn_res" name="btn_res" value="Reset" /&gt;
        &lt;/form&gt;
      &lt;/body&gt;
    &lt;/html&gt;
  &lt;/xsl:template&gt;
&lt;/xsl:stylesheet&gt;

مشاهده در ادیتور

XSLT نمایش نتیجه به روزشده (tool_updated.xsl)

پس از ذخیره، با این XSLT فقط جدول ثابت می سازیم. دیگر فرم نیست. این مثل کارنامه چاپ شده است.

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;
  &lt;xsl:template match="/"&gt;
    &lt;html&gt;
      &lt;body&gt;
        &lt;h2&gt;Updated Tool Information:&lt;/h2&gt;
        &lt;table border="1"&gt;
          &lt;xsl:for-each select="tool/field"&gt;
            &lt;tr&gt;
              &lt;td&gt;&lt;xsl:value-of select="@id"/&gt;&lt;/td&gt;
              &lt;td&gt;&lt;xsl:value-of select="value"/&gt;&lt;/td&gt;
            &lt;/tr&gt;
          &lt;/xsl:for-each&gt;
        &lt;/table&gt;
      &lt;/body&gt;
    &lt;/html&gt;
  &lt;/xsl:template&gt;
&lt;/xsl:stylesheet&gt;

مشاهده در ادیتور

فایل PHP (edittool.php)

اینجا دو تابع داریم. loadFile برای نمایش. updateFile برای بروزرسانی. SimpleXML و XSLTProcessor کمک می کنند.

&lt;?php
function loadFile($xml, $xsl)
{
  $xmlDoc = new DOMDocument();
  $xmlDoc-&gt;load($xml);
  $xslDoc = new DOMDocument();
  $xslDoc-&gt;load($xsl);
  $proc = new XSLTProcessor();
  $proc-&gt;importStyleSheet($xslDoc);
  echo $proc-&gt;transformToXML($xmlDoc);
}
function updateFile($xml)
{
  $xmlLoad = simplexml_load_file($xml);
  $postKeys = array_keys($_POST);
  foreach ($xmlLoad-&gt;children() as $x)
  {
    foreach ($_POST as $key =&gt; $value)
    {
      if ($key == $x-&gt;attributes())
      {
        $x-&gt;value = $value;
      }
    }
  }
  $xmlLoad-&gt;asXML($xml);
  loadFile($xml, "tool_updated.xsl");
}
if ($_POST["btn_sub"] == "")
{
  loadFile("tool.xml", "tool.xsl");
}
else
{
  updateFile("tool.xml");
}
?&gt;

مشاهده در ادیتور

فایل ASP (edittool.asp)

در ASP کلاسیک از MSXML استفاده می کنیم. با selectSingleNode مقدار «value» را عوض می کنیم. سپس فایل ذخیره می شود.

&lt;%
function loadFile(xmlfile, xslfile)
  Dim xmlDoc, xslDoc
  set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
  xmlDoc.async = false
  xmlDoc.load(xmlfile)
  set xslDoc = Server.CreateObject("Microsoft.XMLDOM")
  xslDoc.async = false
  xslDoc.load(xslfile)
  Response.Write(xmlDoc.transformNode(xslDoc))
end function
function updateFile(xmlfile)
  Dim xmlDoc, rootEl, f
  Dim i
  set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
  xmlDoc.async = false
  xmlDoc.load(xmlfile)
  Set rootEl = xmlDoc.documentElement
  for i = 1 To Request.Form.Count
    if instr(1, Request.Form.Key(i), "btn_") = 0 then
      set f = rootEl.selectSingleNode("field[@id='" & _
        Request.Form.Key(i) & "']/value")
      f.Text = Request.Form(i)
    end if
  next
  xmlDoc.save xmlfile
  set xmlDoc = nothing
  set rootEl = nothing
  set f = nothing
  loadFile xmlfile, server.MapPath("tool_updated.xsl")
end function
if Request.Form("btn_sub") = "" then
  loadFile server.MapPath("tool.xml"), server.MapPath("tool.xsl")
else
  updateFile server.MapPath("tool.xml")
end if
%&gt;

مشاهده در ادیتور

گام های عملی

  1. tool.xml و tool.xsl را در سرور قرار بده.
  2. اکشن فرم را به PHP یا ASP تغییر بده.
  3. فرم را باز کن و فیلدها را ویرایش کن.
  4. ارسال کن تا XML ذخیره شود و جدول نمایش یابد.

برای نتیجه سمت سرور ببین: XSLT سمت سرور. همین طور اجرای مرورگر: XSLT سمت کلاینت. برای مثال های بیشتر: مثال های XSLT. همچنین: ویرایش XML با XSLT.

جمع بندی سریع

  • XSLT فرم قابل ویرایش می سازد.
  • ارسال فرم، XML را به روز می کند.
  • نمایش نهایی جدول ثابت است.
  • اجرای سرور، سازگاری کامل می دهد.