;
</xsl:template>
</xsl:stylesheet>
这个样式表将把内容转成布局。错误检查是很重要的,存储过程通过确定数据是否需要处理来检查数据。对于不能为空但又没有填充数据的每个域返回一个“errors”节点。这个XML的输出大致如下:
<user>. . .</user><errors><error>first_name</error>. . .</errors>
这个样式表将把内容转成布局。错误检查是很重要的,存储过程通过确定数据是否需要处理来检查数据。对于不能为空但又没有填充数据的每个域返回一个“errors”节点。这个XML的输出大致如下:
<user>. . .</user><errors><error>first_name</error>. . .</errors>
注意如果有一个错误匹配了节点名,那么产生的输出将会是红色的。我们需要下面的一个ASP将前面的所有东西组合起来。
<%@ Language=VBScript %>
<%
Option Explicit
Dim oUser
Set oUser = New CUser
If oUser.validate() Then
Set oUser = Nothing
Server.Transfer "NextPage.asp"
End If
%>
<html>
<body>
<form method="POST" action="GetUser.asp" name="thisForm" id="thisForm">
<%
Response.Write xslTransform(oUser.DOM, "user.xsl")
%>
<input type="hidden" name="txtUserXML" id="txtUserXML"
value="<%=oUser.DOM.xml%>">
<input type="submit" value="Submit">
</form>
</body>
</html>
<%
Set oUser = Nothing
Function xslTransform(vXML, XSLFileName)
Dim m_xml, m_xsl
If VarType(vXML) = 8 Then
Set m_xml = m_dom
m_xml.loadXML vXML
ElseIf VarType(vXML) = 9 Then
Set m_xml = vXML
End If
If m_xml.parseError.errorCode <> 0 Then _
Err.Raise vbObjectError, "XMLTransform(...)", m_xml.parseError.reason
Set m_xsl = Server.CreateObject("MSXML2.DOMDocument")
m_xsl.async = False
m_xsl.load Server.MapPath(XSLFileName)
If m_xsl.parseError.errorCode <> 0 Then _
Err.Raise vbObjectError, "XMLTransform(...)", m_xsl.parseError.reason
xslTransform = m_xml.transformNode(m_xsl)
Set m_xsl = Nothing
End Function
%>
<!--#include file="CUser.asp"-->
ASP代码创建CUser对象,如果有数据就填充数据。然后使用CUser的DOM通过XSL转换来创建结果HTML。转换被包装到一个叫做xslTransform的函数之中。而且,记住要将结果CUser DOM存储到一个隐藏的<INPUT>元素中。或者你可以将CUser DOM存储到一个Session变量中并在初始化过程中将其取出。
在完成这个页面之后,你可以基于前面的骨架代码创建其它的页面。现在你已经创建了一个数据收集的拷贝-粘贴方案。这个方案最优美的部分在于所有的输出都是纯HTML,没有任何浏览器特有的性质或者样式表。而且由于功能都被包装到类中,所以你可以使用XSLT产生布局,代码运行相当快。
--------------------------------------------------------------------------------
本文作者:Phillip Perkins是Ajilon Consulting的签约人。他的经验很丰富,从机器控制和客户/服务器到企业内部网应用。
|
||
相关热词搜索: |
||
收藏到网摘: | ||
|