xml schema是定义xml的数据定义文件,以.xsd作为文件的扩展名。它也以被用来定义一类xml文件。
通常,一些特殊含义的数据不能通过系统预设的数据结构(类型)清楚地描述。
xml schema 规范中声明:可以通过facet来限制(restriction)简单类型,从而产生一些新的原子类型(atomic types)。
facet有pattern, enumeration,等等;
这里要说的是其中非常有用的一项是:
pattern+ 正则表达式语言(regular expression language)
结合正则表达式的强大功能,就可以进行一些复杂的数据结构的描述
examples可以通过xmlspy, xmlwrite,或js/vbs 等进行验证,下面举出了js验证的例子(需要msxml4.0支持)
有关定义 xml schema 的信息,可以在w3c 的 xml schema 规范的第一部分中找到。有关内置数据类型及其可用的局限性方面的信息,请检 查 xml schema 规范的第二部分。关于 这两部分 xml schema 规范的简易摘要,请查看 w3c primer on xml schema。
有关正则表达式,可以去http://www.regexlib.com/看看
examples:
/*** examples.xml ***/
<?xml version="1.0" encoding="gb2312"?>
<root xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation="examples.xsd">
<user>
<name>test</name>
<email>moonpiazza@hotmail.com</email>
<ip>127.0.0.1</ip>
<color>#000000</color>
</user>
<user>
<name>guest</name>
<email>guest@371.net</email>
<ip>202.102.224.25</ip>
<color>#ffffff</color>
</user>
</root>
/*** examples.xsd ***/
<?xml version="1.0" encoding="gb2312"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema">
<xsd:element name="root" type="root"/>
<xsd:complextype name="root">
<xsd:sequence>
<xsd:element name="user" type="user" minoccurs="0" maxoccurs="unbounded" />
</xsd:sequence>
</xsd:complextype>
<xsd:complextype name="user">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="email" type="email" />
<xsd:element name="ip" type="ip" />
<xsd:element name="color" type="color" />
</xsd:sequence>
</xsd:complextype>
<xsd:simpletype name="email">
<xsd:restriction base="xsd:string">
<xsd:pattern value="([a-za-z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)(([a-za-z0-9\-]+\.)+))([a-za-z]{2,4}[0-9]{1,3})(\]?)"/>
</xsd:restriction>
</xsd:simpletype>
<xsd:simpletype name="ip">
<xsd:restriction base="xsd:string">
<xsd:pattern value="(25[0-5]2[0-4][0-9][0-1]{1}[0-9]{2}[1-9]{1}[0-9]{1}[1-9])\.(25[0-5]2[0-4][0-9][0-1]{1}[0-9]{2}[1-9]{1}[0-9]{1}[1-9]0)\.(25[0-5]2[0-4][0-9][0-1]{1}[0-9]{2}[1-9]{1}[0-9]{1}[1-9]0)\.(25[0-5]2[0-4][0-9][0-1]{1}[0-9]{2}[1-9]{1}[0-9]{1}[0-9])"/>
</xsd:restriction>
</xsd:simpletype>
<xsd:simpletype name="color">
<xsd:restriction base="xsd:string">
<xsd:pattern value="#?([a-f][a-f][0-9]){3}(([a-f][a-f][0-9]){3})?"/>
</xsd:restriction>
</xsd:simpletype>
</xsd:schema>
/*** examples.htm ***/
<script language="javascript">
function validate()
{
var oxml ;
var nparseerror;
var sreturnval;
oxml = new activexobject("msxml2.domdocument.4.0") ;
oxml.async = false ;
oxml.validateonparse = true;
nparseerror = oxml.parseerror.errorcode ;
sreturnval = "" ;
if (0 != nparseerror)
{
//参看书籍教程中parseerror对象属性
sreturnval = sreturnval + "代码:" + oxml.parseerror.errorcode + "\n" ;
sreturnval = sreturnval + "错误原因:" + oxml.parseerror.reason + "\n" ;
sreturnval = sreturnval + "错误字符串:" + oxml.parseerror.srctext + "\n" ;
sreturnval = sreturnval + "错误行号" + oxml.parseerror.line + "\n" ;
sreturnval = sreturnval + "错误列数:" + oxml.parseerror.linepos + "\n" ;
}
else
{
sreturnval = sreturnval + "验证通过!"
}
alert(sreturnval);
}
function window.onload()
{
validate();
}
</script>
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器