本文通过一个详细的例子 来阐述了在线编辑XML
文档数据的方法 由于Netscape对XML的支持比较弱 因此 要实现跨平台的数据交换 数据的处理必须在服务器端进行 要编辑XML文档 首先要做的事情就是怎样把这些数据提取并显示给访问者 XSL为我们显示XML
文件提供了一个很好的解决方案 下面的例子就是利用XSL样式单把XML文档显示出来 供用户进行编辑 然后再把编辑后的数据提交到服务器 在服务器端进行数据的更新 这里采用ASP(Active Server Pages)来完成我们的任务 首先 载入我们要进行编辑的XML文档 利用微软的文档对象模型(Microsoft XMLDOM Object)和XSL XML文档就可以在服务器端转换成可以在客户端显示的HTML文件内容 下面先看看我们使用的XML和XSL文件是什么样子的 XML文件 UserData xml<?xml version= encoding= gb ?><! edited with XMLSPY v rel U () by Dicky (Apple S Eden) ><UserInfo><Field ID= Name TabOrder= ><FieldValue>Dicky</FieldValue></Field><Field ID= Sex TabOrder= ><FieldValue>Male</FieldValue></Field><Field ID= UnitName TabOrder= ><FieldValue>ShangHai Ateam Company</FieldValue></Field><Field ID= Address TabOrder= ><FieldValue>ShangHai ZhongShan West Road # Room A</FieldValue></Field><Field ID= Tel TabOrder= ><FieldValue> </FieldValue></Field><Field ID= EMail TabOrder= ><FieldValue>AppleBBS@GMail Com</FieldValue></Field></UserInfo>XSL文件 UserData xsl<?xml version= encoding= gb ?><! edited with XMLSPY v rel U () by Dicky (Apple S Eden) ><xsl:stylesheet xmlns:xsl= xsl ><xsl:template match= / ><><meta equiv= Content Type content= text/charset=gb /><body><form method= post action= EditUserData asp ><h >Edit UserInfo </h ><table border= cellpadding= ><xsl:for each select= UserInfo/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= FieldValue /></xsl:attribute></input></td></tr></xsl:for each></table><br/><input type= submit id= btnSubmit name= btnSubmit value= Edit /></form></body></></xsl:template></xsl:stylesheet>XSL文件使用了XSL for each
元素的来遍历整个XML文件 XML文件里每个 field 元素的 id 属性和HTML表单的文本输入框的 id 和 name 相对应 这样 HTML表单的文本输入框就显示出了XML文件的元素值 此文件负责XML文档在服务器端的转换 以便能在各种浏览器上显示 下面是关键的程序 它实现打开和更新XML文档的功能 并根据表单的提交与否 来决定是否进行更新 它包含了两个函数 loadXMLFile负责载入和转换要显示的XML文件 updateXML函数负责更新XML文件 EditUserData asp程序如下:<% 定义函数 LoadXMLFile() 接收二个参数 strXMLFile XML 文件的路径和文件名字 strXSLFilee XSL 文件的路径和文件名字 Function LoadXMLFile(strXMLFile strXSLFile) Declare local variablesDim objXMLDim objXSL 实例化 XMLDOM 对象 以便载入 XML 文件 Set objXML = Server CreateObject( Microsoft XMLDOM ) 关掉文件异步载入模式 objXML Async = False 载入 XML 文件!objXML Load(strXMLFile) 实例化 XMLDOM 对象 以便载入 XSL 文件 Set objXSL = Server CreateObject( Microsoft XMLDOM ) 关掉文件异步载入模式 objXSL Async = False 载入 XSL 文件!objXSL Load(strXSLFile) 利用 XMLDOM 的 transformNode 方法 把 XSL 样式表应用到 XML 文档 然后输出到客户端 Response Write(objXML TransFormNode(objXSL))End Function 函数 updateXML() 接收一个参数 strXMLFile XML 文件的路径和文件名 Function UpdateXML(strXMLFile) 声明局部变量 Dim objDomDim objRootDim objFieldDim x 实例化 XMLDOM 对象 Set objDOM = Server CreateObject( Microsoft XMLDOM ) 关掉文件异步载入模式 objDom Async = False 载入 XML 文件 objDom Load strXMLFile 设定根元素 Set objRoot = objDom DocumentElement 遍历 FORM 集合 并把提交的数据写入 XML 文件 For x = To Request Form Count 检查提交的数据是否包含按钮 如果是 忽略此数据 If Instr( Request Form Key(x) btn ) = Then 按照 XSL 查询模式 建立 objField 变量 把表单的元素对应到 XML 文档里的相应元素[field_value] Set objField = objRoot SelectSingleNode( Field[@ID= &Request Form Key(x) &]/FieldValue ) 把表单提交的数据和 XML 文档里的节点值对应起来 objField Text = Request Form(x)End IfNext 保存编辑过的 XML 文件 objDom Save strXMLFile 释放所有对对象的引用 Set objDom = NothingSet objRoot = NothingSet objField = Nothing 调用 LoadXMLFile 函数 把新编辑后的 XML 文件用 UpdatedUserData xsl 样式单显示到客户端 LoadXMLFile strXMLFile Server MapPath( UpdatedUserData xsl )End Function 检查表单是否成功提交 如提交 更新 XML 文件 否则 转到编辑状态 If Request Form( btnSubmit ) = ThenLoadXMLFile Server MapPath( UserData xml ) Server MapPath( UserData xsl )ElseUpdateXML Server MapPath( UserData xml )End If%>当表单提交成功后 我们用UpdatedUserData xsl来显示我们刚刚编辑的数据 UpdatedUserData xsl如下:<?xml version= encoding= gb ?><! edited with XMLSPY v rel U () by Dicky (Apple S Eden) ><xsl:stylesheet xmlns:xsl= xsl ><xsl:template match= / ><><meta equiv= Content Type content= text/charset=gb /><body><h >Updated UserInfo </h ><table border= cellpadding= ><xsl:for each select= UserInfo/Field ><tr><td><xsl:value of select= @ID /></td><td><xsl:value of select= FieldValue /></td></tr></xsl:for each></table><form><input type= button value= Go Back onclick= history go( ) /></form></body></></xsl:template></xsl:stylesheet>以上只是XML跨平台应用的一个简单的例子 结合具体的需求 我们可以编写功能更强大的程序来完成我们更负杂的工作 所有程序在Windows En+IIS +IE +MSXML Dll环境下调试通过 lishixinzhi/Article/program/net/201311/13728
XSL 之于 XML ,就像 CSS 之于 HTML。它是指可扩展样式表语言 (EXtensible Stylesheet Language)。这是一种用于以可读格式呈现 XML 数据的语言。XSL 实际上包含两个部分:
* XSLT – 用于转换 XML 文档的语言
* XPath – 用于在 XML 文档中导航的语言
XSLT 是指 XSL 转换 (XSL Transformation),它是 XSL 最重要的部分。
XSLT 可以将 XML 文档转换为其它 XML 文档、XHTML 输出或简单的文本。这通常是通过将每个 XML 元素转换为 HTML 元素来完成的。由于 XML 标签是用户定义的,浏览器不知道如何解释或呈现每个标签,因此必须使用 XSL。XML 标签的意义是为了方便用户(而不是计算机)理解。
XSLT 还可以对 XML 树进行下列 *** 作:
* 添加和删除元素
* 添加和删除属性
* 对元素进行重新排列或排序
* 隐藏或显示某些元素
* 查找或选择特定元素
在什么情况下应该使用 XSL?
XSL 在设计时有几个目标用途,这些用途使它成为某些开发情况下的完美解决方案,而对另一些开发情况则毫无用处。
XSL 专门用于处理 XML 文档,并且遵循 XML 语法。因此,它只能在支持 XML 的应用程序中与 XML 结合使用。最合适使用 XML 和 XSL 的情况是:Web 门户、新闻聚合器、社区网站或其它任何需要向各种设备及大量客户端提供信息的 Web 应用程序。
XSLT 是一种基于模式匹配的语言。它会查找匹配特定条件的节点,然后应用相应的规则。因此,它不具备大多数编程语言的计算能力。例如,XSL 无法在运行时更改变量的值。它不应该用于从使用复杂公式的动态数据源(例如在线商店)来计算值。Web 编程语言更适于此用途。
XSL 不能代替或补充 CSS。它不应(也不能)用于设置 HTML 的样式。但是,您可以将其用于需要频繁重新设计可视化效果、频繁更换布局以及以灵活格式处理数据的网站。
XSL 不是内容管理工具。它不应(也不能)用于更改 XML 文档的内容或者编辑信息。但是,您可以将 XML 和 XSL 用于需要处理几种不同格式文档的内容管理系统。
评论列表(0条)