Markup Language

xml #

介绍
    可扩展性标记语言,使用DTD和XML Schema标准化XML结构
    优点: 格式统一,符合标准,用于互不兼容系统
    缺点: 格式复杂,占流量大,解析占资源
    解析器
        DOM     # 树形结构
        SAX     # 事件模型
标签头
    <?xml version="1.0" encoding="utf-8"?>
命名空间
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        # xmlns:beans="http://www.springframework.org/schema/beans"  # 引用其它uri空间
        ## jar 包中的dtd/xsd文件直接用相对路径引用即可(相当于src/目录下的文件)
    <h:table xmlns:h="http://www.w3.org/TR/html4/">
       <h:tr>
       <h:td>Apples</h:td>
       <h:td>Bananas</h:td>
       </h:tr>
    </h:table>
        # 命名空间约束文件的查找
                1.联网
                2.myeclipse中的xml
                3.同目录下
                4.jar包中
        # xmlns:只能有一个没有别名
    注意
        命名空间不可以分层使用,如 <r:g:element> 是不允许的
    例子
        <?xml version="1.0" encoding="GB2312" ?>
        <c:customer xmlns:c="http://www.customer.com/">
            <c:name>ZhangSan</c:name>
            <c:phone>09098768</c:phone>
            <c:host xmlns:e="http://www.employee.com/">
                <e:name>LiSi</e:name>
                <e:phone>89675412</e:phone>
            </c:host>
        </c:customer>

        <?xml version="1.0" encoding="GB2312"?>
        <book xmlns="http://www.library.com/">
            <title>The C++ Standard Library</title>
            <author>Nicolai M.Josutis</author>
        </book>

        <?xml version="1.0" encoding="GB2312"?>
        <customer xmlns="http://www.customer.com/"
                        xmlns:e="http://www.employee.com/">
            <name>ZhangSan</name>
            <phone>09098768</phone>
            <host>
                <e:name>LiSi</e:name>
                <e:phone>89675412</e:phone>
            </host>
        </customer>
    语法
        xmlns:[prefix]=”[URI of namespace]”


dtd文件路径解析
    system声明方式:根据给出URL寻找DTD?DTD通过URL显式地直接定位。
    public声明方式:查找众所周知词汇表,应用程序自行确定从数据库中定位dtd,或是从声明的网站中下载(存入数据库缓存中)。
            # myeclipse中通过xml Catalog选项来定位dtd约束

schema文件路径解析
    xsd文件中:targetNamespace="http://www.w3school.com.cn"        # 定义自己的uri标识空间名
    xml文件中:xsi:schemaLocation="http://www.w3school.com.cn note.xsd"                # 指定约束文件的uri地址,一般是空间名加/文件名(目前只有cxf的jaxws约束文件例外【把路径换成了包名】)

dtd #

注意
    同名元素只能用命名空间来区分定义

例子
    <?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE poem[
    <!ELEMENT poem (author, title, content)>
    <!ELEMENT author (#PCDATA)>
    <!ELEMENT title (#PCDATA)>
    <!ELEMENT content (#PCDATA)>
    ]>

    <poem>
    <author>王维</author>
    <title>鹿柴</title>
    <content>空山不见人, 但闻人语声, 返景入深林,复照青苔上。</content>
    </poem>
    外部引用
            <?xml version='1.0' encoding='utf-8'?>
            <!DOCTYPE poem SYSTEM "outer.dtd">

            // outer.dtd
            <?xml version="1.0" encoding="utf-8"?>
            <!ELEMENT poem (author, title, content)>
            <!ELEMENT author (#PCDATA)>
            <!ELEMENT title (#PCDATA)>
            <!ELEMENT content (#PCDATA)>
语法
    <!ELEMENT author (#PCDATA)> 之中的两个空格必须要有

元素类型
    EMPTY                        # 可以有属性
    ANY                                # 根元素设为ANY类型后,元素出现的次数和顺序不受限制
    #PCDATA
    纯元素类型
    混合类型                        # 可以是元素与内容的混合
        例子
                <!ELEMENT 家庭 (人+, 家电*)>
        修饰符说明
                ()                # 用来给元素分组
                        如
                                (古龙|金庸|梁羽生), (王朔|余杰), 毛毛
                |                # 选择一个
                        如
                                (男人|女人)
                +                # 出现一或多次
                        如
                                (成员+)
                *                # 出现零或多次
                ?                # 出现零或一次
                ,                # 对象必须按指定的顺序出现
                        如
                                (西瓜, 苹果, 香蕉)
属性类型

schema #

Schema约束
    tld文件是Schema约束的
引入
    根元素添加
            文件books.xsd
            <xs:schema        xmlns:xs="http://www.w3.org/2001/XMLSchema"                                // ns  是 namespace
                    targetNamespace="http://www.jnb.com"                        // 给当前约束文件起一个名字
                    elementFormDefault="qualified">                                        // 添加属性,qualified指所有都来自xs空间
                            可选attributeFormDefault="unqualified"                                // unqualified        默认来自的空间
            文件books.xml
            从根元素开始约束
            <jnb:书架 xmlns:jnb="http://www.jnb.com"                                        // 在被约束文件根元素添加属性,约束命名空间
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"        // 找到xsi
                    xsi:schemaLocation="http://www.jnb.com books.xsd">        // 指定对应约束文件的物理地址
                    <jnb:书>
                    </jnb:书>
            </jnb:书架>                                                                                                // 在被约束所有元素添加指定空间前缀
            // 保存并检验
语法
    元素约束
    <xs:element name="xxx" type="yy" defaule="" />                                                        // name 元素名 type 类型
    元素类型
            xs:string                // 字符串
            xs:decimal                // big decimal 数字类型
            xs:integer                //
            xs:boolean
            xs:date                        // 日期
            xs:time                        // 时间
    属性约束,在元素标签体里
            <xs:attribute name="" type="" />                                                                        // name 属性名 type 类型
    属性类型和元素类型一样
    属性说明
            <xs:attribute use="required" />
    限定约束
            对值的限定
            枚举限定
            正则限定
            选择限定
            长度限定

    混合内容
            <xs:complexType mixed="true">                        // 只有文本和子元素,mixed可以不使用
            </xs:complexType>

    指示器
            All
            Choice                                                                // 选择出现
            Sequence                                                        // 按声明顺序出现
            maxOccurs
            minOccurs
            Group name
            attributeGroup name
            <xs:all>                                                        // 指定以下元素随意出现
            </xs:all>

uml #

Unified Modeling Languag
静态模型
    用例图(需求分析):客户看           # 项级图(突出重点),一级图,二级图,三级图
        参与者(泛化)
        (关联)
        用例(包含,扩展【继承】)                # 是动词,表示功能模块
        注释
    类图:类结构、类关系(可以自动生成java类)
        继承
        实现
        关联(全局变量)【导航性:一对多关系等】【聚合(所有引用),组合(生命周期相同,如int类型属性)】
            # spring 中的依赖注入是关联
        依赖(局部变量)
    实体关系图ER
动态模型
    时序图:可以根据时序图写代码
        # rose工具中时序图中加入参与者:用例图中创建参与者,拖入时序图中

plantUML #

分类
    salt
        wireframe
    uml
        activity
        class
        component
        sequence
        state
        use case

mermaid.js #

  • 流程图(flowchart)
        graph TD;
            A-->B;
            A-->C;
            B-->D;
            C-->D;
        
  • 时序图(sequence diagram)
        sequenceDiagram
            participant Alice
            participant Bob
            Alice->>John: Hello John, how are you?
            loop Healthcheck
                John->>John: Fight against hypochondria
            end
            Note right of John: Rational thoughts 
    prevail! John-->>Alice: Great! John->>Bob: How about you? Bob-->>John: Jolly good!
  • 甘特图(gantt diagram)
        gantt
            dateFormat  YYYY-MM-DD
            title Adding GANTT diagram functionality to mermaid
    
            section A section
            Completed task            :done,    des1, 2014-01-06,2014-01-08
            Active task               :active,  des2, 2014-01-09, 3d
            Future task               :         des3, after des2, 5d
            Future task2               :         des4, after des3, 5d
    
            section Critical tasks
            Completed task in the critical line :crit, done, 2014-01-06,24h
            Implement parser and jison          :crit, done, after des1, 2d
            Create tests for parser             :crit, active, 3d
            Future task in critical line        :crit, 5d
            Create tests for renderer           :2d
            Add to mermaid                      :1d
        
  • 类图(class diagram)
        classDiagram
        Class01 <|-- AveryLongClass : Cool
        Class03 *-- Class04
        Class05 o-- Class06
        Class07 .. Class08
        Class09 --> C2 : Where am i?
        Class09 --* C3
        Class09 --|> Class07
        Class07 : equals()
        Class07 : Object[] elementData
        Class01 : size()
        Class01 : int chimp
        Class01 : int gorilla
        Class08 <--> C2: Cool label
        
  • git graph
        gitGraph
        options
        {
            "nodeSpacing": 150,
            "nodeRadius": 10
        }
        end
        commit
        branch newbranch
        checkout newbranch
        commit
        commit
        checkout master
        commit
        commit
        merge newbranch
        

markdown #

标题
    # 到 ######开头    # 分别表示一号 到 六号 标题

字体
    **a**或__a__   # 加粗
    *a*或_a_ # 斜体
    ***a***或___a___ # 加粗斜体
    ~~a~~   # 删除线
格式
    换行 结尾两空格 或 <br/>

引用
    >a
    >>b # 不断增加>来多层引用

分割线
    --- # 三个及以上
    *** # 三个及以上,与---显示无分别

图片
    ![alt内容](url "title内容") # alt显示在图片下,title在鼠标悬停时显示

超链接
    [文本](url)
    <a href="url" target="_blank">文本</a>    # 可以用a标签指定target,在新页面显示

列表
    -或+或*开头 # 无序列表-
    数字加点开头  # 有序列表,行数自动
    多空格(至少两个)加列表开头  # 嵌套列表

表格
    标题1|标题2|标题3 # 默认居中对齐
    -|-|-   # -可以多个,:-控制标题和内容左对齐,:-:居中,-:右对齐
    1|2|3   # 默认左对齐

代码
    `a + b;`    # 单选代码
    ```
    function a(){
    }
    ``` # 多行代码
        # tab开头


流程图
    略

org-mode #

restructedText #

LaTeX #

KaTeX #