XML文档里面的标签属性

什么是XML?

XML曾一度是互联网上存储和传输结构化数据的标准。 ——《Javascript高级程序设计》

XML 被设计用来传输和存储数据,不用于表现和展示数据,HTML 则用来表现数据。 ——《XML教程 | 菜鸟教程》

可扩展标记语言(英语:Extensible Markup Language,简称:XML)是一种标记语言,是从标准通用标记语言(SGML)中简化修改出来的。它主要用到的有可扩展标记语言、可扩展样式语言(XSL)、XBRL和XPath等。 ——《XML教程 | 菜鸟教程》

XML 标签没有被预定义。您需要自行定义标签。——《XML教程 | 菜鸟教程》

教程地址:XML 教程 | 菜鸟教程 (runoob.com)

 

为什么要在这里解析下XML文档的结构?

BPMN2.0规范,常常使用XML类型的文件来定义一个流程,这里对其中的一些元素做一些注解,以助于在业务开发中理解和修改流程导出的XML文件。

XML基础

  • XML 文档形成一种树结构

DOM node tree

  • 第一行是 XML 声明。它定义 XML 的版本(1.0)和所使用的编码(UTF-8 : 万国码, 可显示各种语言),声明不是 XML 文档本身的一部分,它没有关闭标签
  • 下一行描述文档的根元素,XML 文档必须包含根元素。该元素是所有其他元素的父元素
  • 在 XML 中,省略关闭标签是非法的。所有元素都必须有关闭标签
  • XML 标签对大小写敏感。标签 <Letter> 与标签 <letter> 是不同的
  • XML 的属性值必须加引号
  • XML 元素必须被正确的嵌套
  • XML的注释:
1
<!-- this is comment -->
  • XML 元素 vs. 属性(案例引用自菜鸟教程)

第一个实例中使用了 date 属性:

1
2
3
4
5
6
<note date="10/01/2008">
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
</note>

第二个实例中使用了 date 元素:

1
2
3
4
5
6
7
<note>
    <date>10/01/2008</date>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
</note>

第三个实例中使用了扩展的 date 元素(这是我的最爱):

1
2
3
4
5
6
7
8
9
10
11
<note>
    <date>
        <day>10</day>
        <month>01</month>
        <year>2008</year>
    </date>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
</note>
  • XML语法检查验证器:XML 验证器 | 菜鸟教程 (runoob.com)
  • 命名空间:
    • 开发者自己定义元素名称,当两个不同的文档使用相同的元素名称时,就会发生命名冲突,XML无法解析这些冲突
    • 命名空间在根元素中声明
    • 下面的案例,就是使用了xmlns 属性,定义这样:”bpmn:“、“bpmndi:"、"camunda:"……用于前缀的命名空间,避免这样的冲突
    • 可以定义一个默认的命名空间,可以不用在所有的元素上使用前缀:xmlns="namespaceURI"
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions
    xmlns:camunda="http://camunda.org/schema/1.0/bpmn"
    xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn">
        <bpmn:process id="Process_1" isExecutable="false">
        </bpmn:process>
</bpmn:definitions>

未完待续……

posted @ 2022-09-15 09:22  学习学习学而时习  阅读(438)  评论(0编辑  收藏  举报