⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xml技术系列讲座(12)验证xml数据合法性(下) - fanqiang_com.htm

📁 详细的讲述了XML相关知识
💻 HTM
📖 第 1 页 / 共 2 页
字号:
              <TR>
                <TD class=a14>由于XML Schema是一种内容开放的模型,这种可扩展性就意味着用户可以在XML 
                  Schema中使用自己定义的元素和属性。例如:</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>&lt;ElementType name=“price” 
</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD 
                class=a14>xmlns:myExt=“urn:myextensions”dt:type=“float”&gt;</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD 
                class=a14>&lt;myExt:salestax&gt;17.5&lt;/myExt:salestax&gt;</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD 
              class=a14>&lt;myExt:bulkbuy&gt;20&lt;/myExt:bulkbuy&gt;</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD 
                class=a14>&lt;myExt:discount&gt;5.0&lt;/myExt:discount&gt;</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>&lt;/ElementType&gt;</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD 
                  class=a14>其中本地的属性定义只声明了&lt;price&gt;元素为“float”类型,而通过名称空间又引用了其他3个标签来分别说明书籍的销售税、批量定额和折扣率。这种扩展性增强了Schema的灵活性。 
                </TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>我们还可以使用DOM技术来访问扩展的Schema:</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>&lt;book 
            isbn=“9-001-122-01”&gt;</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>&lt;title&gt;Straight Talk About 
                  Computers&lt;/title&gt;</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD 
            class=a14>&lt;price&gt;19.99&lt;/price&gt;</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>&lt;/book&gt;</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD 
                  class=a14>假设上述XML数据就是根据刚才的Schema定义的,而且我们已经用DOM定位了&lt;book&gt;元素,那么,接下来就可以访问&lt;price&gt;节点,并利用它的definition属性从Schema中得到&lt;ElementType&gt;的定义:</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>Set priceNode = 
                  bookNode.selectSingleNode(“price”)</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>Set priceElementTypeNode = 
                priceNode.definition</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>salestax = 
                  priceElementTypeNode.childNodes(0).text</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>bulkbuy = 
                priceElementTypeNode.childNodes(1).text</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>discount = 
                  priceElementTypeNode.childNodes(2).text</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>这样,就可以根据需要处理这些数据了。</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14><B>3、在客户机/服务器环境中验证XML</B></TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD 
                  class=a14>在C/S(客户机/服务器)环境中,客户机和服务器都可以使用Schema来验证文档。在客户机端验证的对象可以是从服务器发来的文档,也可以是即将发送出去的文档。下面的这个例子就是用一个名为CustomerSchema.xml的Schema来验证docSubmit的xml文档,然后发送给服务器:</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>Set rootnode = 
              docSubmit.documentElement</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>rootnode.setAttribute “xmlns”, 
            </TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD 
              class=a14>“x-schema:http://server/CustomerSchema.xml”</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD 
              class=a14>DOM首先取得根元素的访问权,然后把xmlns设为Schema的地址,使之开始验证。</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD 
                  class=a14>相对客户机而言,在服务器上进行验证的意义更重大,在实际中也更为常见。由于连接到服务器上的客户数非常多,所以有必要在处理它们发送来的数据前,检查收到的文档是否与预期的结构一致。验证步骤如下:</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>1.将XML文档载入DOM树,开始验证:</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>Set docReceived = 
                  CreateObject(“Microsoft.XMLDOM”)</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>docReceived.validateOnParse = 
            True</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>docReceived.async = False</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>docReceived.load Request</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>2.判断是否链接XML 
              Schema(只需检验一下根元素中是否设置了xmlns属性):</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>Set rootnode = 
              docReceived.documentElement</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>If rootnode.getAttribute(“xmlns”) 
            =</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD 
              class=a14>“x-schema:http://sever/CustomerSchema.xml”</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>Then</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>〈!--有,开始验证!--〉</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>Else</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>〈!--没有…… --〉</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>End If</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD 
                  class=a14>3.如果没有链接,服务器就要指定一个Schema进行链接,然后将更新的文档重新装入到另一个DOM树中:</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>path = 
              Server.mapPath(“CustomerSchema.xml”)</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>attr = “x-schema:” &amp; 
path</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>rootnode.setAttribute “xmlns”, 
            attr</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>Set docTested = 
                CreateObject(“Microsoft.XMLDOM”)</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>docTested.validateOnParse = 
            True</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>docTested.async = False</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>docTested.loadXML 
            docReceived.xml</TD></TR></TBODY></TABLE>
            <TABLE width=620 align=center>
              <TBODY>
              <TR>
                <TD class=a14>由于XML 
                  Schema具有许多优秀的特性,国际上许多著名公司和大企业纷纷开始向Schema倾斜,比如微软的IE 5.0就已经支持XML 
                  Schema。虽然Schema还需要在不断的实践中逐步完善,但XML 
                  Schema取代DTD已经是大势所趋,因此,笔者建议应学习并掌握这一技术。</TD></TR></TBODY></TABLE><BR><!--HTML_END--><BR><!-- 正文end --><BR>(http://www.fanqiang.com)<BR></FONT><BR><FONT 
            color=#999999><SMALL></SMALL></FONT><BR></FONT></TD></TR></TBODY></TABLE><BR></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=750 border=0>
  <TBODY>
  <TR>
    <TD align=middle width=620>
      <TABLE cellSpacing=0 cellPadding=0 width=562 border=0>
        <TBODY>
        <TR>
          <TD width=562>
            <TABLE cellSpacing=0 cellPadding=0 width=562 border=0>
              <TBODY>
              <TR>
                <TD></TD></TR>
              <TR>
                <TD height=10></TD></TR></TBODY></TABLE><!--结束:底部-->
            <TABLE width=750 border=0>
              <TBODY>
              <TR>
                <TD width="100%" bgColor=#d09f0d colSpan=5 height=2><IMG 
                  height=1 
                  src="XML技术系列讲座(12)验证XML数据合法性(下) - fanqiang_com.files/c.gif" 
                  width=1></TD></TR>
              <TR>
                <TD vAlign=top width="100%" colSpan=5 height=40>
                  <P align=center><FONT color=#ffffff>★&nbsp;&nbsp;樊强制作 
                  欢迎分享&nbsp;&nbsp;★ </FONT></P></TD></TR></TBODY></TABLE>
            <CENTER></CENTER></TR></TBODY></TABLE></TR></TBODY></TABLE></CENTER></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -