1. 程式人生 > >Web Service學習總結(2) XML

Web Service學習總結(2) XML

Web Service學習總結(2) XML

理解xml是為了能更好的使用.net相關的xml類。碰到很多人都是對知識不求甚解,有的時候也不知道自己的堅持是對還是錯。知識懂,但是境界大概上還是會有差別。

轉載自:

xml基礎概念:https://www.cnblogs.com/zhengcheng/p/4278764.html
xml名稱空間:https://www.cnblogs.com/zhengcheng/p/4278787.html
dtd驗證:https://www.cnblogs.com/zhengcheng/p/4278899.html
xsd驗證:https://www.cnblogs.com/zhengcheng/p/4279092.html

列出xml,dtd,xsd的例子如下程式碼,也可在資源中下載:https://download.csdn.net/download/qq_37326058/10835504
pencil圖可以去相應網址下載檢視。
https://download.csdn.net/download/qq_37326058/10835704

1,XML例子

<?xml version="1.0" encoding="UTF-8"?> <!--宣告部分-->
<studentlist>  <!--根節點-->
<student id="10086">  <!--子節點,id節點屬性-->
<name>張三</name> <age>20</age> <description> <![CDATA[個人說明:<title></title>]]> </description> </student> <student id="10087"> <name>李四</name> <age>22</age> </student> </studentlist>

2.DTD例子

<?xml version="1.0" encoding="UTF-8"?>
    <!ELEMENT studentlist (school,teacher,student*,address)>
    <!ELEMENT school EMPTY>
	<!ELEMENT teacher (#PCDATA)>
	<!ELEMENT student (name?, age+,age1*,sex(男人|女人))>
	<!ELEMENT address ANY>
	
	<!ELEMENT name (#PCDATA)>
	<!ELEMENT age (#PCDATA)>
	<!ELEMENT age1 (#PCDATA)>
	<!ELEMENT sex (#PCDATA)>
	
	<!ATTLIST name 
	value CDATA #REQUIRED
	id    ID #IMPLIED
	sex(男|女) Default 男
	> 
	<!ENTITY writer  "testDTD">
    <!ENTITY copyright  "testDTD"> 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE studentlist SYSTEM "testDTD.dtd" [
<!ENTITY writer2 "Bill Gates">
<!ENTITY copyright2 "Copyright W3School.com.cn">
<!ENTITY writer SYSTEM "testDTD.dtd">
<!ENTITY copyright SYSTEM "testDTD.dtd"> ] >
<studentlist>
<school></school>
<teacher> PCDATA </teacher>
<student>
<name value="" id="" sex=""  ></name>
<age>22</age>
<age1>234</age1>
<age1>234</age1>
<age1>234</age1>
<sex></sex>
</student>
<address>隨意取值&writer;&copyright;&writer2;&copyright2;</address>
</studentlist>

3.XSD例子

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
targetNamespace="http://www.w3school.com.cn"
elementFormDefault="qualified" 
attributeFormDefault="qualified"><!--unqualified-->
    <xs:element name="students">
        <xs:complexType>
		<!--complexType型別的四種約束 choice、list、sequence、restriction-->
		<!--表示元素必須按照規定的序列進行顯示。-->
            <xs:sequence>
                <xs:element name="student" maxOccurs="unbounded">
                    <xs:complexType>
					<!--屬性  attribute-->
					<xs:attribute name="name" type="xs:string" user="required" default="york" />
                    <xs:attribute name="age" type="xs:byte" user="required" default="11" />
					<!--引用屬性組-->
					<xs:complexType>
                          <xs:attributeGroup ref="Astuattgroup"></xs:attributeGroup>
                    </xs:complexType>
					<!--元素 element-->
					<xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="unbounded"></xs:element>
                    <xs:element name="age" type="xs:byte" minOccurs="1" maxOccurs="unbounded"></xs:element>
					<!--元素 element組  引用元素分組-->
					 <xs:group ref="Estuinfo" maxOccurs="unbounded"></xs:group>
                    </xs:complexType>
                </xs:element>
				
				<!--choise XML中只能出現限定選項中的一個元素-->
	            <!--設定交通工具只能是自行車,小汽車,摩托車中的一項-->
                <xs:element name="T">
                 <xs:complexType>
                    <xs:choice>
                        <xs:element name="T1" type="xs:string"></xs:element>
                        <xs:element name="T2" type="xs:string"></xs:element>
                        <xs:element name="T3" type="xs:string"></xs:element>
                    </xs:choice>
                 </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
	<!--定義一個分組標記-->
    <xs:group name="Estuinfo">
        <xs:sequence>
            <!--自定義的子元素:name和age,name型別為string,age型別為byte,只能出現1次-->
            <xs:element name="Gname" type="xs:string" ></xs:element>
            <xs:element name="Gage" type="xs:byte" ></xs:element>
			<xs:element name="scores" type="stuScore"></xs:element>
        </xs:sequence>
    </xs:group>
	<!--定義屬性組:stuattgroup-->
<xs:attributeGroup name="Astuattgroup">
    <xs:attribute name="GAname" type="xs:string" user="required" default="york"/>
    <xs:attribute name="GAage" type="xs:byte" user="required" fixed="11"/>
	<!--引用定義簡單型別:simpleType restriction約束 將原來的xs:int換位age型別-->
	<xs:attribute name="GAage1" type="age1"/>
</xs:attributeGroup>
<!--擴充套件int型別,設定int取值只能是18到100,包含18和100-->
<xs:simpleType name="age1">
    <xs:restriction base="xs:int">
        <xs:minInclusive value="18" />
        <xs:maxInclusive value="100" />
    </xs:restriction>
</xs:simpleType>
<!--定義列表資料,其每項子元素為自定義擴充套件型別-->
<xs:simpleType name="stuScore">
    <xs:list itemType="stuScoreItem"></xs:list>
</xs:simpleType>
<!--定義擴充套件型別限定0-100之間-->
<xs:simpleType name="stuScoreItem">
    <xs:restriction base="xs:int">
        <xs:minInclusive value="0" />
        <xs:maxInclusive value="100" />
    </xs:restriction>
</xs:simpleType>

</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<students 
xmlns="http://www.w3school.com.cn"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="testXSD.xsd">
<student name="zhangsan" age="29" GAname="york1" GAage="11" GAage1="19">
	<name>張三</name>
	<age>33</age>	
	<Gname>張三</Gname>
	<Gage>100</Gage>	
	<scores>33   33  33 3   3</scores>	
</student>
	<T>
	<T1>自行車</T1>
	</T>
	
</students>

根據上面4篇文章,貼出知識總結如下:
在這裡插入圖片描述