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

📄 0302-0205.htm

📁 xml帮助文档
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0071)http://162.105.170.55/ASPs/GetLearningArticleTemp.asp?section=0302-0205 -->
<HTML><HEAD><TITLE>XML中国论坛 - 初学进阶 - 3.2.2.5 Schema的特色——扩展数据类型</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>TABLE {
	FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"
}
.pt9 {
	FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"
}
.pt10 {
	FONT-WEIGHT: 700; FONT-SIZE: 10pt; LINE-HEIGHT: 18pt; FONT-FAMILY: "宋体"
}
.TempOutline {
	FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; COLOR: #666666; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.TempOutline1 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; COLOR: #666666; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.Outline {
	FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.Outline1 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.Outline11 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 38pt; TEXT-INDENT: -50pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage0 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage1 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage11 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 38pt; TEXT-INDENT: -50pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage111 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 51pt; TEXT-INDENT: -64pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
</STYLE>



<META content="Microsoft FrontPage 5.0" name=GENERATOR></HEAD>
<BODY vLink=#000000 aLink=#000000 link=#000000 leftMargin=0 topMargin=0 
onload=""><!-- 以下为主体内容 -->
<div align="center">
  <center>
<TABLE width="100%" border=0 style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
  <TBODY>
  <TR vAlign=top>
    <TD width=39 rowSpan=2></TD>
    <TD vAlign=center >
    <p align="center"><IMG height=33 
      src="image/title_learner.gif" width=226></TD>
    <TD width=39 rowSpan=2></TD>
    </TR>
  <TR vAlign=top>
    <TD  ><!-- 正文内容 -->
      <DIV class=pt10><B>3.2.2.5 Schema的特色——扩展数据类型</B></DIV>
     &nbsp;&nbsp;&nbsp;
      <DIV></DIV><BR>
      <DIV class=pt9>
      <P>Schema中共有23种扩展数据类型,包括bin.base64、bin.hex、boolean、char、date、dateTime、dateTime.tz、fixed.14.4、float、int、number、time、time.tz、i1、i2、i4、r4、r8、ui1、ui2、ui4、uri、uuid,已经可以覆盖相当广泛的应用。限于篇幅,这里只列表介绍几种最常用的类型。</P>
      <DIV align=center>
      <CENTER>
      <TABLE cellSpacing=1 width="90%" border=1>
        <TBODY>
        <TR>
          <TH vAlign=top align=middle width="15%" bgColor=#ffffff>
            <P align=center>类 &nbsp; 型</P></TH>
          <TH vAlign=top align=middle width="60%" bgColor=#ffffff>
            <P align=center>解 &nbsp; 释</P></TH>
          <TH vAlign=top align=middle width="25%" bgColor=#ffffff>
            <P align=center>举 &nbsp; 例</P></TH></TR>
        <TR>
          <TD vAlign=top width="15%">boolean</TD>
          <TD vAlign=top width="60%">布尔型:0 或 1, 其中0代表false,1代表true</TD>
          <TD vAlign=top width="25%">0,1</TD></TR>
        <TR>
          <TD vAlign=top width="15%">char</TD>
          <TD vAlign=top width="60%">单字符</TD>
          <TD vAlign=top width="25%">“a”、“b”</TD></TR>
        <TR>
          <TD vAlign=top width="15%">time</TD>
          <TD vAlign=top width="60%">时间类型,符合 ISO 8601格式, 无日期和时区部分。</TD>
          <TD vAlign=top width="25%">08:16:18</TD></TR>
        <TR>
          <TD vAlign=top width="15%">date</TD>
          <TD vAlign=top width="60%">日期类型,符合ISO 8601格式且无时间部分.</TD>
          <TD vAlign=top width="25%">2000-06-01</TD></TR>
        <TR>
          <TD vAlign=top width="15%">dateTime</TD>
          <TD vAlign=top width="60%">日期类型,符合ISO 
          8601格式,带可选时间部分但无时区部分,秒可精确到纳秒级。</TD>
          <TD vAlign=top width="25%">2000-06-01T20:08:18</TD></TR>
        <TR>
          <TD vAlign=top width="15%">fixed.14.4</TD>
          <TD vAlign=top 
          width="60%">数值类型,同“number”类似,但精度上小数点前不超过14位,小数点后不超过4位</TD>
          <TD vAlign=top width="25%">14.1234</TD></TR>
        <TR>
          <TD vAlign=top width="15%">float</TD>
          <TD vAlign=top width="60%">实数类型,位数不受限制,可以包含符号位和小数位以及指数。取值范围从 
            1.7976931348623157E+308 至 2.2250738585072014E-308</TD>
          <TD vAlign=top width="25%">.314159265358979E+1</TD></TR>
        <TR>
          <TD vAlign=top width="15%">int</TD>
          <TD vAlign=top width="60%">数值类型, 可以包含符号位,但不含小数位和指数位</TD>
          <TD vAlign=top width="25%">1, -10, 2566</TD></TR>
        <TR>
          <TD vAlign=top width="15%">number</TD>
          <TD vAlign=top width="60%">数值类型,位数不限,可以包含符号位和小数位以及指数。取值范围从 
            1.7976931348623157E+308 至 2.2250738585072014E-308</TD>
          <TD vAlign=top width="25%">12, 3.1415, -1.24E-10</TD></TR>
        <TR>
          <TD vAlign=top width="15%">uri</TD>
          <TD vAlign=top width="60%">统一资源标识(URI)类型。</TD>
          <TD vAlign=top width="25%"><A 
            href="http://www.ics.uci.edu/">http://www.ics.<BR>uci.edu</A><BR>/pub/ietf/uri/</TD></TR></TBODY></TABLE></CENTER></DIV>
      <P>元素和属性的数据类型可以使用元素<STRONG>datatype</STRONG>来定义,这个元素是Schema中一个重要元素,也是Schema的一大特色。datatype的语法表达如下:</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">&lt;datatype 
      dt:type="datatype"&gt;</TD></TR></TBODY></TABLE></CENTER></DIV>
      <P>除此以外,还有另一种更直接的方法,是在元素ElementType和AttributeType之中利用dt:type属性。下面分别给出具体的示例:</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="90%" border=1>
        <TBODY>
        <TR>
          <TH align=middle width="20%"> </TH>
          <TH width="40%">datatype</TH>
          <TH width="40%">dt:type</TH></TR>
        <TR>
          <TD align=middle width="20%">ElementType</TD>
          <TD width="40%">&lt;ElementType name="a"&gt;<BR>&nbsp; &lt;datatype 
            dt:type=" float"&gt;<BR>&lt;/ElementType&gt;</TD>
          <TD width="40%">&lt;ElementType name="a" dt:type="float"/&gt;</TD></TR>
        <TR>
          <TD align=middle width="20%">AttributeType</TD>
          <TD width="40%">&lt;AttributeType name ="b"/&gt; <BR>&nbsp; 
            &lt;datatype 
            dt:type="float"/&gt;&lt;/AttributeType&gt;<BR>&lt;ElementType 
            name="a"&gt; <BR>&nbsp; &lt;attribute 
            type="b"/&gt;<BR>&lt;/ElementType&gt; </TD>
          <TD width="40%">&lt;AttributeType name="b" 
            dt:type="float"/&gt;<BR>&lt;ElementType name="a"&gt; <BR>&nbsp; 
            &lt;attribute 
      type="b"/&gt;<BR>&lt;/ElementType&gt;</TD></TR></TBODY></TABLE></CENTER></DIV>
      <P>好了,现在我们结束这些枯燥的语法论述,来看个实际的例子:</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">&lt;AttributeType 
            name="更新时间"&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;datatype 
            dt:type="dateTime"/&gt;<BR>&lt;/AttributeType&gt;
            <P>&lt;ElementType name="description"/&gt;<BR>&lt;ElementType 
            name="品牌" dt:type="string"/&gt;<BR>&lt;ElementType name="价格" 
            dt:type="int"/&gt;<BR>&lt;ElementType name="是否全内置" 
            dt:type="boolean"/&gt;<BR>&lt;ElementType name="库存数量" 
            dt:type="number"/&gt;</P>
            <P>&lt;ElementType name="笔记本电脑" 
            content="eltOnly"&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;attribute 
            type="更新时间" /&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;element type="品牌" 
            /&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;element type="价格" 
            /&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;element type="是否全内置" 
            /&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;element type="库存数量" 
            /&gt;<BR>&lt;/ElementType&gt;</P></TD></TR></TBODY></TABLE></CENTER></DIV>
      <P><BR>上面给出的是一个关于笔记本电脑的Schema定义,在这里,我们为笔记本电脑定义了一个属性--资料更新时间,数据类型定为dateTime;笔记本电脑涉及的元素有:品牌,因为它实际上是一个名称,所以定为string类型;价格,因为考虑到经销商不会小气到连几毛钱都不放过,所以数据类型定为int型;是否全内置,不言而喻自然是铁板钉钉的布尔型了;库存数量,因为考虑到经销上可能会大量囤积以谋取高利,故而选取范围较大的number类型。下面我们再给出一个XML示例文档,以便大家对数据类型有一个更加直观的认识。</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">&lt;笔记本电脑 
            更新时间="2000-06-10T14:00:00"&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;品牌&gt;ACER 
            518TE&lt;/品牌&gt;<BR>&nbsp;&nbsp;&nbsp; 
            &lt;价格&gt;22800&lt;/价格&gt;<BR>&nbsp;&nbsp;&nbsp; 
            &lt;是否全内置&gt;1&lt;/是否全内置&gt;<BR>&nbsp;&nbsp;&nbsp; 
            &lt;库存数量&gt;258000&lt;/库存数量&gt;<BR>&lt;/笔记本电脑&gt;</TD></TR></TBODY></TABLE></CENTER></DIV>
      <P>可是,假设我们偏偏遇上了一个爱专牛角尖且极为小气的电脑经销商,他擅自将上面的实例文档加以改动挂在自己门口,于是就有下面的文档:</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">&lt;笔记本电脑 
            更新时间="2000-06-10T14:00:00"&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;品牌&gt;ACER 
            518TE&lt;/品牌&gt;<BR>&nbsp;&nbsp;&nbsp; 
            &lt;价格&gt;22800.21&lt;/价格&gt;<BR>&nbsp;&nbsp;&nbsp; 
            &lt;是否全内置&gt;1&lt;/是否全内置&gt;<BR>&nbsp;&nbsp;&nbsp; 
            &lt;库存数量&gt;258000&lt;/库存数量&gt;<BR>&lt;/笔记本电脑&gt;</TD></TR></TBODY></TABLE></CENTER></DIV>
      <P>就在他自鸣得意于自己的精明时,我们的语法分析器却报警了:“价格”取值与定义不符!当然了,明明是int类型,又岂能再加上一个小数点?除非我们将上面的Schema中的“价格”定义作下列修改:</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">&lt;ElementType name="价格" 
          dt:type="fixed.14.4"/&gt;</TD></TR></TBODY></TABLE></CENTER></DIV>
      <P><BR></P></DIV>
      <P></P>
      <P></P></TD></TR></TBODY></TABLE>
  </center>
</div>
<P></P>
<P>
<P></P></BODY></HTML>

⌨️ 快捷键说明

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