schema php 验证程序
<?php
$dom = new DOMDocument;
$dom->Load('demo.xml');
if($dom->schemaValidate("book.xsd")){
echo "validate";
}else{
echo "not validate";
}
1. 简易元素
那些仅包含文本的元素 包括 XML Schema 定义中包括的类型中的一种(布尔、字符串、数据等等),或者它也可以是您自行定义的定制类型 boolean string data etc.syntax : <xs:element name="xxx" type="yyy">
内建类型
- xs:string
- xs:decimal
- xs:integer
- xs:boolean
- xs:date
- xs:time
- xs:positiveInteger
DEMO
<lastname>Smith</lastname>
<age>28</age>
<dateborn>1980-03-27</dateborn>
变成
<xs:element name="lastname" type="xs:string">Smith</xs:element>
<xs:element name="age" type="xs:integer">28</xs:element>
<xs:element name="dateborn" type="xs:date">Smith</xs:element>
默认值 和固定值
<xs:element name="color" type="xs:string" default="red"/> 默认值
<xs:element name="color" type="xs:string" fixed="red"/> 固定值
2. 属性
简易元素无法拥有属性。假如某个元素拥有属性,它就会被当作某种复合类型。但是属性本身总是作为简易类型被声明的
syntax: <xs:attribute name="xxx" type="yyy"/>
xml
<lastname lang="EN">Smith</lastname>
xsd
<xs:attribute name="lang" type="xs:string"/>
也可以设置默认和固定值 type 可以对元素或者属性的内容进行限定 xs:date 的值不能使Hello World 也可以添加自己的限定条件 称之为facet 限定面
3.restriction 限定/Facet
-
区间限制 minInclusive 最小值 maxInclusive 最大值
<xs:element name="age">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="120"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
涉及到的xs函数
xs:simpleType
xs:restriction
xs:maxInclusive // integer 最大
xs:minInclusive // integer 最小
xs:enumeration //枚举类型
也可以使用下面的格式写
-
enumeration 枚举
<xs:element name="car" type="clssType">
<xs:simpleType name="clssType">
<xs:restriction base="xs:string">
<xs:enumeration value="BWM"/>
<xs:enumeratiion value="AUDI"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
还支持pattern constraint (模式限制)
-
pattern 模式
下面可以接受一个a-z 之间的一个字符
<xs:element name="title">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:patten value="[a-z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
可以接受 ([a-z])* , ([a-z][A-Z])+ ,male|female ,[a-zA-Z0-9]{8} 这些都可以 正则嘛
-
whiteSpace 空白限定
<xs:whiteSpace value="perserve"/>
- perserve 保留空白 这意味着 XML 处理器不会移除任何空白字符 - replace 替换空白 这意味着 XML 处理器将移除所有空白字符(换行、回车、空格以及制表符 - collapse 这意味着 XML 处理器将移除所有空白字符(换行、回车、空格以及制表符会被替换为空格,开头和结尾的空格会被移除,而多个连续的空格会被缩减为一个单一的空格)
-
长度限制 length、maxLength 以及 minLength
数据类型的限定
限定 | 描述 |
---|---|
enumeration | 定义可接受值的一个列表 |
fractionDigits | 定义所允许的最大的小数位数。必须大于等于0。 |
length | 定义所允许的字符或者列表项目的精确数目。必须大于或等于0。 |
maxExclusive | 定义数值的上限。所允许的值必须小于此值。 |
maxInclusive | 定义数值的上限。所允许的值必须小于或等于此值。 |
maxLength | 定义所允许的字符或者列表项目的最大数目。必须大于或等于0。 |
minExclusive | 定义数值的下限。所允许的值必需大于此值。 |
minInclusive | 定义数值的下限。所允许的值必需大于或等于此值。 |
minLength | 定义所允许的字符或者列表项目的最小数目。必须大于或等于0。 |
pattern | 定义可接受的字符的精确序列。 |
totalDigits | 定义所允许的阿拉伯数字的精确位数。必须大于0。 |
whiteSpace | 定义空白字符(换行、回车、空格以及制表符)的处理方式。 |