XSLT - Editing XML

|  | Search W3Schools : |

HOME | HTML | CSS | XML | JAVASCRIPT | ASP | PHP | SQL | MORE... |  | References | Examples | Forum | About

ADVERTISEMENTS XML Certification Download XML editor Custom Programming |  |

Table of contents

XSLT Basic
XSLT HOME
XSL Languages
XSLT Introduction
XSLT Browsers
XSLT Transform
XSLT <template>
XSLT <value-of>
XSLT <for-each>
XSLT <sort>
XSLT <if>
XSLT <choose>
XSLT Apply
XSLT Advanced
XSLT on the Client
XSLT on the Server
XSLT Edit XML
XSLT Editors
XSLT Summary
Examples
XSLT Examples
References
XSLT Elements
XSLT Functions

Selected Reading

Web Statistics
Web Glossary
Web Hosting
Web Quality
W3Schools Tutorials
W3Schools Forum
Helping W3Schools

# XSLT - Editing XML

Data stored in XML files can be edited from an Internet browser.

## Open, Edit and Save XML

Now, we will show how to open, edit, and save an XML file that is stored on the server.

We will use XSL to transform the XML document into an HTML form. The values of the XML elements will be written to HTML input fields in an HTML form. The HTML form is editable. After editing the data, the data is going to be submitted back to the server and the XML file will be updated (this part is done with ASP).

## The XML File and the XSL File

First, look at the XML document that will be used ("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>

View the XML file.

Then, take a look at the following style sheet ("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.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>

View the XSL file.

The XSL file above loops through the elements in the XML file and creates one input field for each XML "field" element. The value of the XML "field" element's "id" attribute is added to both the "id" and "name" attributes of each HTML input field. The value of each XML "value" element is added to the "value" attribute of each HTML input field. The result is an editable HTML form that contains the values from the XML file.

Then, we have a second style sheet: "tool_updated.xsl". This is the XSL file that will be used to display the updated XML data. This style sheet will not result in an editable HTML form, but a static HTML table:

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

View the XSL file.

## The ASP File

The HTML form in the "tool.xsl" file above has an action attribute with a value of "edittool.asp".

The "edittool.asp" page contains two functions: The loadFile() function loads and transforms the XML file for display and the updateFile() function applies the changes to the XML file:

    <%
    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
    %>

Tip: If you don't know how to write ASP, you can study our ASP tutorial.

Note: We are doing the transformation and applying the changes to the XML file on the server. This is a cross-browser solution. The client will only get HTML back from the server - which will work in any browser.

## Reliable, affordable, feature-rich web hosting!

Take the uncertainty out of Web hosting and let GoDaddy.com put service, performance and value back in. No matter which hosting type or plan you choose, your site receives 24/7 maintenance and protection in our world-class data center. Plus, you get the expert, friendly service you deserve, from the world's largest hostname provider.

With three plans to choose from and prices starting at just $4.99 per month, GoDaddy.com is sure to have a plan that's right-sized and right-priced just for you!

All plans feature FREE 24x7 setup, FREE 24x7 monitoring, best- of-breed routers, firewalls and servers, 24x7 onsite physical security and access to our exclusive Go Daddy Hosting Connection, THE place to install over 30 FREE applications. Virtual Dedicated and Dedicated Server plans also available. Visit GoDaddy.com today.

Virtual Dedicated, Dedicated Server and unlimited plans also available.

Save 10% on web hosting - Enter code w3tenoff at checkout

## Get Your Diploma!

W3Schools' Online Certification Program is the perfect solution for busy professionals who need to balance work, family, and career building.

The HTML Certificate is for developers who want to document their knowledge of HTML, XHTML, and CSS.

The JavaScript Certificate is for developers who want to document their knowledge of JavaScript and the HTML DOM.

The XML Certificate is for developers who want to document their knowledge of XML, XML DOM and XSLT.

The ASP Certificate is for developers who want to document their knowledge of ASP, SQL, and ADO.

The PHP Certificate is for developers who want to document their knowledge of PHP and SQL (MySQL).

WEB HOSTING
Web based charting for ASP.NET
$15 Domain Name Registration Save $20 / year!
Buy UK Domain Names Register Domain Names
Cheap Domain Names Cheap Web Hosting
Best Web Hosting
PHP MySQL Hosting
Top 10 Web Hosting
UK Reseller Hosting
Web Hosting
FREE Web Hosting

WEB BUILDING
Website Templates Flash Templates Website Builder Internet Business Opportunity
Custom Programming
FREE Trial or Demo Web Content Manager Forms,Web Alerts,RSS
Download XML editor
FREE Flash Website
FREE Web Templates

EDUCATION
US Web Design Schools
HTML Certification
JavaScript Certification
XML Certification
PHP Certification
ASP Certification

HOME or Top of Page |  | Printer Friendly
W3Schools is for training only. We do not warrant the correctness of its content. The risk from using it lies entirely with the user. While using this site, you agree to have read and accepted our terms of use and privacy policy. Copyright 1999-2009 by Refsnes Data. All Rights Reserved.