<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3school.com.cn" xmlns="http://www.w3school.com.cn" elementFormDefault="qualified"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>note.xml @H_301_0@
@H_301_0@
<?xml version="1.0"?> <note xmlns="http://www.w3school.com.cn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3school.com.cn note.xsd"> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>[如果xsd与xml文件在同一目录下] @H_301_0@
@H_301_0@ 其中xml文件第5行也可以写为:xsi:noNamespaceSchemaLocation="note.xsd" @H_301_0@ 也就是说根据路径引用。 @H_301_0@ xsd的需要注意的点: @H_301_0@ 1、最简单的xsd文件: @H_301_0@
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" </xs:schema>最简单也就意味着这三行是必须要有的,至于理由,暂时还看不太懂 @H_301_0@
@H_301_0@ 2、一个一般的xsd是这样写的: @H_301_0@
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3school.com.cn" xmlns="http://www.w3school.com.cn" elementFormDefault="qualified"> </xs:schema>targetNamespace的作用:为这个xsd文件中定义的元素指定一个名称空间。一个xml文件[包括这个xsd文件本身]要引用这个xsd文件定义的元素时,需要指明引用的是哪个名称空间中的元素。 @H_301_0@
@H_301_0@ 再下一行: xmlns="http://www.w3school.com.cn" @H_301_0@ 是用来定义引用的名称空间前缀,可以看到和第一次出现的xmlns不同,也就是没有:xs,意为引用一个默认的命名空间,在一个xml文件中,只能有一上默认命名空间 @H_301_0@ 再下一行:elementFormDefault @H_301_0@ 此行太复杂,斩时不管 @H_301_0@
@H_301_0@ xml中引用xsd @H_301_0@ 1、note中 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 是必须的 @H_301_0@ 2、note中 xsi:schemaLocation="http://www.w3school.com.cn note.xsd" 即为指明要引用哪个命名空间中定义的元素 @H_301_0@ 3、note xmlns="http://www.w3school.com.cn" 就是为引用的命名空间加一个前缀,可以看到在这里是默认的命名空间