在本例中,将电子邮件或电话号码的条目约束为有效的电子邮件或电话号码 — 或者至少将其约束为正确的形式,都会有所帮助。为此,您需要向文档添加模式(见清单 2)。
清单 2. 添加模式
…
<xforms:model>
<xsd:element name="contact">
<xsd:complexType>
<xsd:element name="name" xsd_type="xsd:string" />
<xsd:element name="email" />
<xsd:element name="phone" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
<xforms:instance id="content">
<contact >http://www.codesynthesis.com/projects/xsstl/ 下载 XML schema standard type library。导入正确的名称空间和文档即可将该库添加到模式中(见清单 3)。
清单 3. 导入模式定义
<?xml version="1.0"?>
<html >http://www.w3.org/1999/xhtml"
>http://www.w3.org/2001/xml-events"
>http://www.w3.org/2002/xforms"
>http://www.w3.org/2001/XMLSchema"
>http://www.codesynthesis.com/>http://www.codesynthesis.com/>http://www.codesynthesis.com/xmlns/xsstl"
schemaLocation="xsstl.xsd"/>
<xsd:element name="contact">
<xsd:complexType>
<xsd:element name="name" xsd_type="xsd:string" />
<xsd:element name="email" xsd_type="stl:EmailAddress" />
<xsd:element name="phone" xsd_type="stl:PhoneNumber" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
<xforms:instance id="content">
<contact xmlns="">
<name />
<email />
<phone />
</contact>
</xforms:instance>
<xforms:bind nodeset="/contact/email"
type="stl:EmailAddress"/>
<xforms:bind nodeset="/contact/phone"
type="stl:PhoneNumber"/>
<xforms:submission id="submitContact" method="post"
action="." />
…
您可以在任意模式文档中使用此处介绍的技术,而不仅仅是嵌入 XForms 表单中的文档。确保定义了正确的名称空间别名(在本例中是 stl:),并导入实际的名称空间和模式文档。然后您可以像使用任何其他模式定义类型那样使用这些类型。在本例中,表单使用 EmailAddress 和 PhoneNumber 类型。
此示例中导入了主文档,使所有的类型都可用。但是,您可以只导入实际需要的文档。XML Schema Standard Type Library 包含了几个单一类型的文档:
email-address.xsd:EmailAddress 类型约束数据为标准的电子邮件地址。
percentage.xsd:Percentage 类型表示从 0 到 100 之间的数字(包括 0 和 100)。
iso3166-country-code.xsd:ISO3166CountyCode 类型约束数据为两个字母的字符串并且要求其必须为一个实际的 ISO 3166-1 国家区号。
rfc822-date-time.xsd:RFC822DateTime 类型要求数据格式符合 RFC822 的指定要求。
其他文档包含了单一类型的变体:
ipv4-address.xsd:此文件包含了一个适当端点的变体,比如 IPv4Address、Port 和 IPv4Endpoint,表示一个适当的 IP 地址(使用 dot 表示法)和一个端口。还包含了 IPv4EndpointStruct,它是一个结构体类型数据而不是单个字符串。
phone-number.xsd:此文档指定电话号码的各个部分 PhoneCountryCode、PhoneAreaCode、PhoneSubscriberNumber 和 PhoneExtensionNumber,以及 PhoneNumber(它是将上述四者全部组合起来的一个字符串并至少需要一个订阅号)和 PhoneNumberStruct(将各个部分分隔到单个元素中的结构体)。
us-state-code.xsd:此文档包含了 “US state” 定义的几个变体,包括 USStateTerritoryCode(包含 50 个州和 9 个美国海外属地)、USStateCode(只针对州和华盛顿特区)、USTerritoryCode(只针对行政区,如美属维尔京群岛,不包含华盛顿特区)、USContinentalStateCode(所有的除夏威夷外的州,外加华盛顿特区)和 USContiguousStateCode(所有除夏威夷和阿拉斯加之外的州,外加华盛顿特区)。
XML Schema Standard Type Library 是创建模块定义以简化开发的一个示例。当您将它们导入到自己的模式中后,您就可以直接使用这些类型而无需亲自定义。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
开发者的黄金时代=运维人员的恶梦?
开发与运维常常被人们放在一起,而如今DevOps的流行也与他们脱不了关系。目前软件环境的变化可以说是开发者的黄金时代,而对于运维来说,这些变化正给他们带来新的挑战和期望。
-
BEST:SOAP/XML和REST的替代方案
虽然拥有大量的机架服务器,以及大量软件开发人员的组织,基于web和集成服务的SOAP和REST很适合他们,但也会出现问题。
-
Spring 烂!差!
有些人可能对Spring的第一印象不太好,它真的很烂,很差吗,也许这只是你的一种偏见,它也有是自己的优点的。
-
基于SOA架构的业务安全性研究
SOA在提供价值链上企业之间信息共享和业务流程自动化的同时,也给业务信息安全带来了负面影响,且存在安全隐患,这些你知道吗?