菜单
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

XML 教程

XML 首页 XML 简介 XML 用途 XML 树 XML 语法 XML 元素 XML 属性 XML 命名空间 XML 显示 XML HttpRequest XML 解析器 XML DOM XML XPath XML XSLT XML XQuery XML XLink XML 验证器 XML DTD XML Schema XML 服务器 XML 示例 XML 测验 XML 证书

XML AJAX

AJAX Introduction AJAX XMLHttp AJAX Request AJAX Response AJAX XML File AJAX PHP AJAX ASP AJAX Database AJAX Applications AJAX Examples

XML DOM

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 教程

XPath Introduction XPath Nodes XPath Syntax XPath Axes XPath Operators XPath Examples

XSLT 教程

XSLT Introduction XSL Languages XSLT Transform XSLT <template> XSLT <value-of> XSLT <for-each> XSLT <sort> XSLT <if> XSLT <choose> XSLT Apply XSLT on the Client XSLT on the Server XSLT Edit XML XSLT Examples

XQuery 教程

XQuery Introduction XQuery Example XQuery FLWOR XQuery HTML XQuery Terms XQuery Syntax XQuery Add XQuery Select XQuery Functions

XML DTD

DTD Introduction DTD Building Blocks DTD Elements DTD Attributes DTD Elements vs Attr DTD Entities DTD Examples

XSD Schema

XSD 简介 XSD 操作指南 XSD <schema> XSD 元素 XSD 属性 XSD 限制 XSD 复杂元素 XSD 空 XSD 仅元素 XSD 仅文本 XSD 混合 XSD 指示器 XSD <any> XSD <anyAttribute> XSD 替换 XSD 示例

XSD Data Types

XSD String XSD Date/Time XSD Numeric XSD Misc XSD Reference

Web Services

XML Services XML WSDL XML SOAP XML RDF XML RSS

参考手册

DOM 节点类型 DOM 节点 DOM 节点列表 DOM NamedNodeMap DOM 文档 DOM 元素 DOM 属性 DOM 文本 DOM CDATA DOM 注释 DOM XMLHttpRequest DOM 解析器 XSLT 元素 XSLT/XPath 函数

XSLT - 编辑 XML


存储在 XML 文件中的数据可以通过 Internet 浏览器进行编辑。


打开、编辑和保存 XML

现在,我们将展示如何打开、编辑和保存存储在服务器上的 XML 文件。

我们将使用 XSL 将 XML 文档转换为 HTML 表单。XML 元素的值将被写入 HTML 表单中的 HTML 输入字段。HTML 表单是可编辑的。编辑数据后,数据将提交回服务器,并且 XML 文件将被更新(我们将同时展示 PHP 和 ASP 的代码)。


XML 文件和 XSL 文件

首先,看一下 XML 文档 ("tool.xml")

<?xml version="1.0" encoding="UTF-8"?>
<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="UTF-8"?>
<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>工具信息(编辑):</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 "field" 元素创建一个输入字段。XML "field" 元素的 "id" 属性的值被添加到每个 HTML 输入字段的 "id" 和 "name" 属性中。每个 XML "value" 元素的值被添加到每个 HTML 输入字段的 "value" 属性中。结果是一个可编辑的 HTML 表单,其中包含 XML 文件中的值。

然后,我们有第二个样式表:"tool_updated.xsl"。这是用于显示更新的 XML 数据的 XSL 文件。此样式表不会生成可编辑的 HTML 表单,而是生成一个静态 HTML 表格。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <html>
  <body>
  <h2>更新的工具信息:</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 文件.



PHP 文件

在上面的 "tool.xsl" 文件中,将 HTML 表单的 action 属性更改为 "edittool.php"。

"edittool.php" 页面包含两个函数:loadFile() 函数加载并转换 XML 文件以供显示,updateFile() 函数将更改应用于 XML 文件。

<?php
function loadFile($xml, $xsl)
{
$xmlDoc = new DOMDocument();
$xmlDoc->load($xml);

$xslDoc = new DOMDocument();
$xslDoc->load($xsl);

$proc = new XSLTProcessor();
$proc->importStyleSheet($xslDoc);
echo $proc->transformToXML($xmlDoc);
}

function updateFile($xml)
{
$xmlLoad = simplexml_load_file($xml);
$postKeys = array_keys($_POST);

foreach($xmlLoad->children() as $x)
{
  foreach($_POST as $key=>$value)
  {
    if($key == $x->attributes())
    {
      $x->value = $value;
    }
  }
}

$xmlLoad->asXML($xml);
loadFile($xml,"tool_updated.xsl");
}

if($_POST["btn_sub"] == "")
{
  loadFile("tool.xml", "tool.xsl");
}
else
{
  updateFile("tool.xml");
}
?>

提示:如果您不知道如何编写 PHP,请学习我们的 PHP 教程

注意:我们正在服务器上执行转换并将更改应用于 XML 文件。这是一个跨浏览器解决方案。客户端将只从服务器获取 HTML - 这将在任何浏览器中工作。


ASP 文件

上面 "tool.xsl" 文件中的 HTML 表单有一个 action 属性,其值为 "edittool.asp"。

"edittool.asp" 页面包含两个函数:loadFile() 函数加载并转换 XML 文件以供显示,updateFile() 函数将更改应用于 XML 文件。

<%
function loadFile(xmlfile,xslfile)
Dim xmlDoc,xslDoc
'加载 XML 和 XSL 文件
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
'加载 XML 文件
set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load(xmlfile)

'将 rootEl 变量设置为根元素
Set rootEl = xmlDoc.documentElement

'遍历表单集合
for i = 1 To Request.Form.Count
  '消除表单中的按钮元素
  if instr(1,Request.Form.Key(i),"btn_")=0 then
    'selectSingleNode 方法查询 XML 文件以查找匹配查询的单个节点
    '此查询请求是具有与表单集合中当前键值匹配的 id 属性的 field 元素的 value 子元素。当匹配时 -
    '将 text 属性设置为表单集合中当前字段的值。
    '设置文本属性等于表单集合中当前字段的值。
    '将 text 属性设置为表单集合中当前字段的值。
    '将 text 属性设置为表单集合中当前字段的值。
    set f = rootEl.selectSingleNode("field[@id='" & _
    Request.Form.Key(i) & "']/value")
    f.Text = Request.Form(i)
  end if
next

'保存修改后的 XML 文件
xmlDoc.save xmlfile

'释放所有对象引用
set xmlDoc=nothing
set rootEl=nothing
set f=nothing

'使用样式表加载修改后的 XML 文件,该样式表
'允许客户端查看编辑后的信息
loadFile xmlfile,server.MapPath("tool_updated.xsl")
end function

'如果表单已提交,则更新 XML 文件并显示结果
' - 否则,转换 XML 文件以进行编辑
if Request.Form("btn_sub")="" then
  loadFile server.MapPath("tool.xml"),server.MapPath("tool.xsl")
else
  updateFile server.MapPath("tool.xml")
end if
%>

×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持