首页 > 代码库 > XML简单学习

XML简单学习

XML简单概述                                              

1.Extensible Markup language可扩展标记语言;

2.作用:具有层次性的描述有关系的数据;

  体现在:描述数据关系;软件配置,以描述程序模块之间的关系;

语法介绍                                                    

1.文档声明:

<?xml version="1.0" encoding="utf-8" ?>

注意编码的统一性 储存在内存中的编码格式,与解析器打开的两者统一

2.元素:element

成对标签 <label>pcdata</lable>

元素属性 也可以理解或写成子元素;对XML标签中出现的所有空格和换行,XML解析程序都会当做是标签内容处理

3.注释:

<!-- 局部注释 -->

<!--
...大段注释
...
-->

4.不解析的部分:当做原始内容直接输出

<![CDATA[内容]]>

5.处理指令:

用来指挥解析器如何解析文档的内容,如:xml文档中可以用xml-stylesheet指令来通知xml解析引擎,引用css文件来显示xml文档内容:

<? xml-stylesheet type="text/css" href="http://www.mamicode.com/1.css"?>

------------------简单例子--------------------------------

<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/css" href="http://www.mamicode.com/style.css"?>
<menu>
    <!--this is a menu-->
    <![CDATA[
         with it was;
    ]]>
    
    <vegetables>
            <name>
                蔬菜
            </name>
            <vegetable>
                <cabbage>白菜</cabbage>
                <carrot>萝卜</carrot>
            </vegetable>
            
    </vegetables>
    
    <fruits>
            <name>
                水果
            </name>
            <fruit>
                <apple>苹果</apple>
                <banana>香蕉</banana>
            </fruit>
    </fruits>

</menu>
View Code

XML的dtd约束                                            

1.约束--->   编写来约束其书写规范

dtd文件:document type definition,写一个文档来约束xml文档的元素组成,规定其书写  .dtd后缀名;

2.元素类型:element

<!ELEMENT 约束元素名(子属性,,,)>

在XML文件中如何引入:

<!DOCTYPE 文档根节点 SYSTEM "dtd文件.dtd">

3.元素属性说明 attribute

<!ATTLIST 元素名
  属性名 属性值类型 设置说明
  属性名 属性值类型 设置说明
>

如:

<!ATTLIST 商品
  类别 CDATA #REQUIRED
  颜色 #IMPLIED
>

1.设置说明

REQUIRED 必须有此属性,
IMPLIED 可有可不有
FIXED 属性固定值
默认值

2.属性值类型:id ,enumerated ,entity, cdata

  .............

实体定义:为一段内容创建一个别名,以后可以用此别名来在文档中代替原来内容,

引用实体:在xml文档中被引用,

<!ENTITY 实体名称 "引用实体内容">

参数实体:在dtd文件中被引用可以做到复用的作用

!ENTITY % 实体名称 "参数实体内容">

3.为了清除的看到DTD对有其引入的XML文件进行约束,可在MyEclipse自动检测

<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY % has "yes|no|true|false">
<!ENTITY blank "[   ]">
<!ENTITY % common-attributes
    "name CDATA #REQUIRED
    id ID #REQUIRED
    price CDATA #REQUIRED
    description CDATA #IMPLIED
    has (%has;) #REQUIRED" 
    >

<!ELEMENT goods (clothes*,shoes?)>
<!ATTLIST goods shop-name CDATA #REQUIRED>

<!ELEMENT clothes (jean*,shirt*)>
<!ELEMENT jean (#PCDATA)>
<!ELEMENT shirt (#PCDATA)>

<!ATTLIST jean %common-attributes;>
<!ATTLIST shirt %common-attributes;>
goods.dtd
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE goods SYSTEM "goods.dtd">
<goods shop-name="best">
    <clothes>
        <jean has="no" name="jean1" price="111" id="jean1"></jean>
        <jean has="yes" name="33" price="33" id="jean2"></jean>
        <shirt has="yes" name="hehe" price="0.0" id="ee">&blank;</shirt>
    </clothes>

</goods>
goods.xml

XML的schema约束                                      

  ---详细见W3C

--是一种定义和描述xml文档结构和内容的模式语言,其出现是为了克服dtd的局限性;

1.VS  DTD:

1 符合xml语法格式
2 Dom,sax XmlAPI很容易解析出XML Schema中的内容
3 约束强大,更多数据类型,还可以定义自己的数据类型
4 当不能定义实体,有自己的方式。

2.语法简介:命名空间的引入,、

1.simpleType元素 约束

元素:<xs:element name="ElementName" type="DataTypeOfElement">

---DataTypeOfElement
xs:string
xs:decimal
xs:integer
xs:boolean
xs:date
xs:time

属性:<xs:attribute name="attributeName" type="attributeValueType">

属性值说明包括:默认default  指定fixed 必选required

元素限定:

限定的类型基于:

<xs:restriction base="xs:string/integer/boolean/date/time/decimal">

限定的内容or:maxInclusive minInclusive enumeration、,,,

  <xs:minInclusive value="http://www.mamicode.com/0"/>

  <xs:maxInclusive value="http://www.mamicode.com/110"/>

   <xs:enumeration value="http://www.mamicode.com/apple"/>

<xs:enumeration value="http://www.mamicode.com/banana"/>

<xs:pattern value="http://www.mamicode.com/[A-Z][A-Z][A-Z]"/>

</xs:restriction>

类似实体的复用:

<xs:element name="name" type="nameValue"/>

<xs:simpleType name="nameValue">
<xs:restriction base="xs:string">
<xs:pattern value="http://www.mamicode.com/[a-zA-Z0-9]{8}"/>
</xs:restriction>
</xs:simpleType>

2.复杂元素的 约束:合元素指包含其他元素及/或属性的 XML 元素。

<xs:complexType> 、、</xs:complexType>
<xs:sequence> </xs:sequence>

等等........

3.类型指示器:

Order:all choice Sequence
Occurrence:Maxoccur minoccur
Group:Group name attributeGroup name

3.简例:

<?xml version="1.0" encoding="UTF-8"?>

<!-- 
    xmlns="http://www.w3.org/2001/XMLSchema            
        来自外界的命名空间,
        是否默认来确定是否有书写当前模式文件的前缀命名
    targetNamespace="http://www.example.org/letter" 
        自身作为其他xml目标文件约束的命名空间

 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"  
    targetNamespace="http://www.example.org/letter"
    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>

 

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
        xmlns="default namespace"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="{namespace} {location}"
 -->
<note xmlns="http://www.example.org/letter"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.example.org/letter letter.xsd"
    >
    <to>逗B</to>
    <from>猴子</from>
    <heading>呵呵</heading>
    <body>呵呵呵呵</body>
</note>