实验四 XML
目的:
1、安装和使用XML的开发环境
2、认识XML的不同类型
3、掌握XML文档的基本语法
4、了解DTD的作用
5、掌握DTD的语法
6、掌握Schema的语法
实验过程:
1、安装XML的编辑器,可以选择以下之一
a)XMLSpy
b)VScode,Vscode中安装XML插件
2、给定一个XML文档test.xml
<?xml version="1.0"?>
<students>
<student id="001">
<name>tom</name>
<age>24</age>
<major>
<course cid="c1">Python</course>
</major>
<phone>18611111111</phone>
<phone>18622222222</phone>
</student>
<student id="002">
<name>sammy</name>
<age>25</age>
<major>
<course cid="c2">C++</course>
<course cid="c3">computer principle</course>
</major>
<phone>18633333333</phone>
</student>
</students>
a)为test.xml定义一个内部的DTD,写出完整的xml文档
如下为进行DTD约束后的完整xml代码:
<?xml version="1.0"?>
<!DOCTYPE students [
<!ELEMENT students (student*)>
<!ELEMENT student (name,age,major+,phone+)>
<!ELEMENT major (course+)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
<!ELEMENT course (#PCDATA)>
<!ATTLIST student id ID #REQUIRED>
<!ATTLIST course cid ID #REQUIRED>
]>
<students>
<student id="s001">
<name>tom</name>
<age>24</age>
<major>
<course cid="c1">Python</course>
</major>
<phone>18611111111</phone>
<phone>18622222222</phone>
</student>
<student id="s002">
<name>sammy</name>
<age>25</age>
<major>
<course cid="c2">C++</course>
<course cid="c3">computer principle</course>
</major>
<phone>18633333333</phone>
</student>
</students>
b)为test.xml定义一个外部的Schema文档,写出schema文档和使用schema文档后的test.xml
如下是Schema文档代码和导入外部Schema约束的xml完整代码
Schema文档代码(test.xsd):
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.zhjTest.cn" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="students" type="zhj:studentsType" xmlns:zhj="http://www.zhjTest.cn"/>
<xs:complexType name="courseType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="cid" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="majorType">
<xs:sequence>
<xs:element type="zhj:courseType" name="course" maxOccurs="unbounded" minOccurs="0" xmlns:zhj="http://www.zhjTest.cn"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="studentType">
<xs:sequence>
<xs:element name="name">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="tom"/>
<xs:enumeration value="sammy"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="age">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="24"/>
<xs:enumeration value="25"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element type="zhj:majorType" name="major" xmlns:zhj="http://www.zhjTest.cn"/>
<xs:element name="phone" maxOccurs="unbounded" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="18611111111"/>
<xs:enumeration value="18622222222"/>
<xs:enumeration value="18633333333"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="id" use="optional"/>
</xs:complexType>
<xs:complexType name="studentsType">
<xs:sequence>
<xs:element type="zhj:studentType" name="student" maxOccurs="unbounded" minOccurs="0" xmlns:zhj="http://www.zhjTest.cn"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
xml完整代码:
<?xml version="1.0"?>
<!DOCTYPE students [
<!ELEMENT students (student*)>
<!ELEMENT student (name,age,major+,phone+)>
<!ELEMENT major (course+)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
<!ELEMENT course (#PCDATA)>
<!ATTLIST student id ID #REQUIRED>
<!ATTLIST course cid ID #REQUIRED>
]>
<students xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.zhjTest.cn"
xs:schemaLocation="http://www.zhjTest.cn test.xsd"
>
<student id="s001">
<name>tom</name>
<age>24</age>
<major>
<course cid="c1">Python</course>
</major>
<phone>18611111111</phone>
<phone>18622222222</phone>
</student>
<student id="s002">
<name>sammy</name>
<age>25</age>
<major>
<course cid="c2">C++</course>
<course cid="c3">computer principle</course>
</major>
<phone>18633333333</phone>
</student>
</students>
3、编写实验报告并提交至超星。