XML 02: 基本语法

<?xml version="1.0" encoding="UTF-8"?>  <!-- XML的文档声明, 必须放在第01行 -->
<goodslist>  <!-- 标签是大小写敏感的, 与HTML不同 -->
    <good id="1001" production_date="2018-4-1"> <!-- 每个标签都可以拥有属性, id是属性名, "1001"是属性值,必须使用双引号引用。它们都是自定义的 -->
         <price>12</price>  
         <name>香蕉</name>
         <place>广州</place>
    </good>     
    <good id="1002">
         <price>39</price>  
         <name>苹果</name>
         <place>北京</place>
    </good>     
    <good id="1003">
         <price>33</price>  
         <name>&lt;芒果</name>  <!-- 为了避免造成混淆, 特殊标记需要使用特殊符号来表示, &lt; 表示小于号 -->
         <place>上海</place>
    </good>     
   <xxx/> <!-- 这是一个单标记 --> </goodslist>

 

1.五个在XML文档中预定义好的实体:

&lt; < 小于号
&gt; > 大于号
&amp; & 和
&apos; ' 单引号
&quot; " 双引号

 

2.约束文档(给文档添加约束), 一般约束都是开发好了的, 遵守即可。

例如,DTD文档

<?xml version="1.0"?>
<!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>  <!-- 如果根元素是note,子元素必须依次是to,from,heading,body. 不可以添加属性 -->
  <!ELEMENT to      (#PCDATA)>         <!-- #PCDATA means 放置文本内容 -->
  <!ELEMENT from    (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body    (#PCDATA)>
]>  <!-- 约束规则 -->
<note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>  <!-- XML -->

3.  DTD文档约束的引入方式

<1>  内部引入: 直接在XML文件里书写

<2>  外部引入

  <a>  把DTD文档放在本地

  <b>  把DTD 文档放在网络上

<a-1>

在本地创建一个DTD file

 <a-2>

放置DTD代码

<a-3>

创建一个遵守DTD 的XML文档 (note2.xml)

需要添加如第二行所示的声明, "note.dtd"表示需要遵守的DTD文档的路径.

最终效果 (引入成功):

<b-1>  网络引入是更常见的方式

4.  Schema 约束

下面这个例子是一个名为 "note.xsd" 的 XML Schema 文件:

 <4-1>  创建一个Schema 文件

<?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" <!-- ns means name space, 命名空间一般都使用网址-->
elementFormDefault="qualified">

<xs:element name="note">  <!-- 定义了一个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>

<4-2> 如果有多种约束同时存在, 需要声明所写的代码遵循了哪种约束, 则需要表明命名空间, 类似于Java中的:

同理, 如果需要在XML里使用Schema约束文档:

<4-3>  创建一个新的XML文档, note3.xml

对 XML Schema 的引用

此文件包含对 XML Schema 的引用:

<?xml version="1.0"?>
<note
xmlns="http://www.w3school.com.cn"  <!-- 表示引入的Schema属于哪个命名空间 -->
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3school.com.cn note.xsd"> <!-- 表示约束文档的位置, 可以解释为命名空间"w3"对应着"note.xsd" -->
<!-- 把xmlns, xmlns:xsi, xsi:schemaLocation 这三个属性赋给根标签 note  -->
<!-- 遵守note.xsd 中的约束规则 -->

<to> </to>
<from> </from>
<heading> </heading>
<body> </body>

</note>

整体效果:

<4-4>  如果需要引入多个xsd (例如, 引入sikiedu发布的, 非本地的 xx.xsd)

 <4-5> 添加命名空间

<1> 给命名空间起一个别名

xmlns = "http://www.w3school.com.cn"      <!-- 默认的命名空间-->

xmlns:w3 = "http://www.w3school.com.cn"   <!-- 起别名为w3-->

xmlns:se = "http://www.sikiedu.com"       <!-- 起别名为se-->

<2>使用

 如果不声明命名空间, 则使用默认的命名空间


 

id="1001"
原文地址:https://www.cnblogs.com/JasperZhao/p/13454430.html