从YAML了解标记语言

因为对yaml不是很了解,就搜索了相关的知识用来了解一些常见的标记语言
居然是手动复制到csdn, 感觉缝都缝了,不发怪可惜的
再考虑要不要抄一个转发到csdn,又怀疑自己是否真的需要(

最近在试图学习用思维导图总结学习的知识,这里也试试总结下吧

总结这篇博客的内容

标记语言|Markup Language

首先看标记语言的概念

标记语言,是一种将文本以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的电脑文字编码。与文本相关的其他信息(包括文本的结构和表示信息等)与原来的文本结合在一起,但是使用标记(markup)进行表示。

标记语言不仅仅是一种语言,就像许多语言一样,它需要一个运行时环境,使其有用。提供运行时环境的元素称为用户代理

我这里理解为标记语言就是将数据用一种规范的格式呈现的方式,常用于格式化和链接

常见的标记语言介绍

所以这里就可以引出常见的几种标记语言了

xml,html,xhtml(xml和html的合体)

json,yaml

比较常见用于承载数据的应该就是json,xml和yaml了

大家都知道了

html属于是上网冲浪天天见了,网页都是html编写的

当然包括这篇博客,用f12或者右键检查都能看到网页的html代码

html用于格式化并显示数据

XML | 可拓展标记语言

XML(eXtensible Markup Language)是独立于软件和硬件的信息传输工具

img

以前写Android的时候经常见到.xml文件,但没怎么了解过多写几个例子也能领悟怎么用(至少是自己需要的部分直到该怎么做)
这里就放一个XML的实例吧

<!-- 首先进行一个例子的引,首先这个是注释 -->
<!-- 第一行是XML的声明,它定义了XML的版本(1.0)和所使用的编码(UTF-8:万国码,可显示各种语言) -->
<?xml version="1.0" encoding="UTF-8"?>
<!-- 必须要有根元素 此处是msg -->
<msg>
    <!-- 可以嵌套标签 -->
    <receiver>Xqh</receiver>
    <sender>Hsy</sender>
    <title>A xml example</title>
    <!-- 标签大小写敏感 -->
    <Time>2022-4-30 22:06:30</Time>
    <content>
    	This is msg content.
        And next is a attach file.
        <!-- 标签可以添加属性提供有关元素的额外信息,但属性值必须加引号 -->
        <file type="gif">emoji.gif</file>
    </content>
</msg>

上面就是一个XML的实例,它包含了发送者和接收者的信息,同时具有标题以及内容。

更多的使用方法和定义描述或许以后会写一篇博客记录,想了解更多可以参考

XML 树结构 | 菜鸟教程 (runoob.com)

Json | Js对象标记

Json指的是JavaScript对象表示法(JavaScript Object Notation)

img

img

是比较简单的键值对形式的语言,直接看一个实例

{
    "code":200,
    "msg":"success",
    "content":{
        "receiver":["Xqh","Hsy"],
        "files":[
            {
                "name":"emoji.gif",
                "url":"http://www.xxx.yyy/zzz.gif"
            }
        ]
    }
}

可以通过对象,数组,键值对三种方式存储数据,可以放在js文件内,也可以存放在.json文件内

一些网页的api返回通常也是json格式

YAML | YAML 不是一种标记语言

YAML 是 “YAML Ain’t a Markup Language”(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)。

主要是依赖空白符号缩进,适合用于表达配置,数据结构等,例如这篇博客上传时就在开头使用了YAML编写了FrontMatter,文件后缀名通常是.yml(虽然开发者建议使用.yaml)

#为上传的md文件声明的一些参数
---
title: 从YAML了解标记语言
date: 2022-04-29 14:55:12
updated: 2022-05-01 02:22:37
tags: 
- 标记语言
categories: 
- 基本概念
---
基本语法
  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进不允许使用tab, 只允许空格
  • 缩进的空格数不重要, 只要相同层级的元素左对齐即可
  • #’ 表示注释

数据类型有三种

  • 对象: 键值对的集合,也称为映射(mapping)/哈希(hashes)/字典(dictionary)

  • 数组: 一组依次序排列的值,又称为序列(sequence)/列表(list)

  • 纯量(scalars): 单个的,不可再分的值

实例
title: 这里是标题捏
array: [这,是,一,个,多,维,数,组]
#这一行是注释捏
list:
 - 这样
 - 也是数组,同级缩进要对齐
 - 记得冒号和-后面都要加上一个空格
 - '这也算纯量吧,可以用引号包裹特殊字符'
 #大小写true false都可以
 - FALSE
 - TRUE
compound:
 YAML: 就是现在写的格式
 JSON: 这是数组和对象的符合结构
 XML: 如果用xml和json写会比较复杂
value:
 float:
  - 3.14
  - 1e+5
 null:
  des: 使用~表示null
  exp: ~
 date:
  #只能使用ISO 8601格式 即yyyy-MM-dd 虽然开头的yaml直接写成yyyy-MM-dd hh:mm:ss了
  - 2022-05-01
 datetime:
  #时间使用ISO 8601格式,时间和日期之间使用T连接,最后使用+代表时区
  - 2022-05-01T01:30:54+08:00
#引用和锚点 注意锚点间不要加上引用
simple: 一个简单的量

def: &def
 name: '格式化后可以看到使用锚点引用之后的结果'
 desc: '&用于建立锚点,<<表示合并到当前数据,*用来引用锚点'
 reuse: 或许是一些通用的玩意会用

useDef:
 - attr: '一用到& 和 * 就想起c语言的指针了'
 - &anchor 第二个锚点
 - ac: *anchor
 - <<: *def

可以自己编写后使用YAML在线验证 (verytoolz.com)验证一下

image-20220501020615408

为了这醋包了好久的饺子,最后加上三种标记语言的对比吧

三种信息标记形式的比较

  • XML: 最早的通用信息标记语言, 可拓展性好, 但繁琐
  • JSON: 适合程序处理,比XML简洁
  • YAML: 文本信息比例最高,可读性好, 强调以数据作为重心

基于技术栈,使用JavaScript时json是相对适合的序列化语言,对于java则更多使用xml,因为都是用空格缩进,使用python时使用yaml或许更加友好

虽然python与yaml更搭配,但原作者在Python项目中却选择了json

没了

引用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值