xml很难懂,有没有,浅显且全面的解释?感谢了
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xml很难懂,有没有,浅显且全面的解释?感谢了相关的知识,希望对你有一定的参考价值。
历史老照片揭露你所不知道...相信自己是最棒的! 第 8 页 3/29/2013
又读完了一页感觉真好 8
4.根元素,每篇XML文档都需要有且只能有一个根元素。由元素是文档的第一个元素,包含其它所有元素。下例的portal就是根元素,如:
<portal>
<name>jims</name> <email></email> „ </portal>
属性,每个元素都可以设置一个或多个属性,如:
<portal>
<name id=’1’,sex=”male”>Jims</name> </portal>
元素和属性都可以表示信息,什么时候使用元素,什么时候使用属性呢?属性信息表现能力有限,它只能表示字符串。所以当需灵活表示信息时应该使用元素。一般把信息主体放到元素中,属性只放一些注释或额外的信息。
CDATA部份,它用<![CDATA[和]]>表示,它们之间的数据作为原始字符显示,唯一不能出现的标志是]]>。
注释,注释是很重要,不论是在编写程序和文档时,所以XML也提供了注释功能,以<!--开头-->结尾的一对区间为注释。在以-->结束之前,不能出现“--”号,“---”更不允许。
处理指令,处理指令以<?开头以?>结尾。如php处理指令可写成,<?php ... ?>。处理指令是标记,而不是元素。因此,与注释一样,处理指令可出现在XML文档的标签外的任何位置,包括根元素之前或之后。最常见的处理指令是,xml-stylesheet样式表指令,它会告诉浏览器在显示文档时应用什么样式表。如:
<?xml-stylesheet href=”sample.css” type=”text/css”?> <portal>
相信自己是最棒的! 第 9 页 3/29/2013
又读完了一页感觉真好
9
<name>„</name> „ </portal>
第四章 介绍DTD的基本要素
DTD的全称是“Document Type Definition“(文件类型定义)。他是用来规范XML文件的格式,它必须出现在文件头(Prolog)中,以便XML校验器在一开始便可以得到该份XML文件的格式定义。
XML分为两类:有效XML文档和简化格式XML文档。有效是指有一个DTD参考文件的XML文档 ,一个有效的XML文档必须是简化格式的XML文档,跟随着这个文档的DTD文件的有效性,促进了XML执行程序的运行以及文档在兼容XML浏览器的显示。
要使用DTD进行有效性检验,就要使用文档类型定义声明指定DTD。例如:<?xml version="1.0" standalone="no"?>
<!DOCTYPE portal SYSTEM "http://www.w3c.com/dtd/portal.dtd"> <portal>
<name>Jims</name>
<email>Jims@163.com</email> <email>Jims@21cn.com</email> </portal>
文档类型声明位于XML声明之后,根元素之前。如果DTD文档位于本机,可用路径名直接指出DTD文档的位置。如果DTD位于XML文档外,则叫外部DTD子集。我们可以结合内外DTD,共同组成一个DTD来为XML文档作验证。
具体地说,DTD是一个或是一些用XML书写的文件。它包含了对一种文件的正式定义。它定义了文件中的元素能用什么名字,能放在什么位置,应该怎样组合。在这里举一个简单的例子。比如说想要文件可以描述一组<List>,其中每个<List>由可以包含若干个<Item>。那么DTD中应该有以下语句:
相信自己是最棒的! 第 10 页 3/29/2013
又读完了一页感觉真好 10
<!ELEMENT List (Item)+> <!ELEMENT Item (#PCDATA)>
这样一个框架定义了一个表(list),它可以包含若干个项(items)。每一个项只能包括文本的内容。当处理器处理XML文件时将自动检查DTD,以此确定文件中元素从哪而来,以及它们之间是什么关系。上面的框架允许生成下面的一个表:
<List><Item>Chocolate</Item><Item>Music</Item><Item>Surfing</Item></List>
而这样一个表在屏幕上是怎样一个表象,取决于样式表(Stylesheet)。在html中要在文件中指定应是怎样的形式。使用DTD表明你能够确定一类文章的结构和格式。
文档类型声明中的每一项都是元素声明,定义了每个元素的约束。元素声明的格式为:
<!ELEMENT element_name (content_model)>
内容包括:1. #PCDATA,规定元素只包含已析的字符数据。
2. 子元素,可指明元素的子元素。也可用逗号为分隔符,指明多个子
元素。并且子元素出现的次序必须按定义时的顺序。
3. 子元素的个数,我们可通过正则表达式来规定子元素的个数。①?,允许零个或一个该元素 ②*,允许零个或多个该元素 ③+,允许一个或多个该元素
4. 可选项(|),选项是一个参数列表,每个参数间用“|”分隔,代表能且只能选一个子元素。
5. 小括号,可用小括号把选项括起来,以表达更丰富的意思,如我们想表示choice元素必须包含一个good子元素,并且必须包含ok子元素或bad子元素的一个。
6. 混合内容,在一些文档中,一个元素可能既包含子元素,也包含字符串,这些内容叫混合内容。
7. 空元素,某些元素不用包含任何内容,称之为空元素。写成以/>结束的独立标签。
相信自己是最棒的! 第 11 页 3/29/2013
又读完了一页感觉真好
11
8. ANY,允许元素内包含任意内容。该选项在dtd测试时很有用,在生产系统中尽量不要使用。
一个有效的XML文档,必须对元素的属性进行声明。使用ATTLIST声明来完成,一个ATTLIST可以为一个元素类型声明多个属性。
有效文档中使用的每个元素都必须在文档的DTD中用元素声明进行声明。element_name可是任何合法的XML名称,content_model(内容模型)指定元素可以或必须包含的子元素以及子元素的顺序。
第五章 XML的应用与未来
现在已经知道XML。确实,结构有点复杂,而且DTD有各种可以定义文档可以包含的内容的选项。但还不只这些。 同时还有XML Schema、SOAP、CSS、XSP等更为深入的内容,而这些跟我们所介绍的却有着千丝万缕的关系,不可分割。下面我们把这些都很简略的介绍一下:
XML Schema:它也是一个用来验证XML文件的验证语法,那我们就要问已经有DTD了为什么还要有他呢?可以回顾一下,既然XML是取SGML的某一常用子集制定而成,自然也采用了DTD作为验证语法的规则言语。可是DTD是用的并非XML的标记是语法,所以,我们必须另外学习DTD的语法才能够使用DTD为XML文件制作格式定义。正因为如此XML Schema诞生了。他完全遵循了XML的基本语法,目的即在于取代DTD作为下一代XML标准的验证语法。
SOAP:它是基于XML的协议,用于在分散的分布式环境中交换信息。它视为Web制定的一个XML和HTML的结合物,他为松耦合的Web环境中的分布式数据交换和交互作用提供了新的选择。
CSS样式表:他可不是网络游戏CS的升级版,它是串接式样式表,使网际网络上被广泛应用的一种样式表,它不仅可以用来指定XML文件的排版样式,也可以指定HTML文件的排版样式。
„„
相信自己是最棒的! 第 12 页 3/29/2013
又读完了一页感觉真好 12
XML应用于多个行业如财务、银行业、科学和技术以及人力资源,他并不只限于特定行业的数据描述,已经成功的应用于解决跨行业的问题。许多企业支持XML集成;使用样式表技术,就可通过浏览器立即访问数据;XML提供了建立数据标准的机会。XML应用这么广它的未来又会怎样呢?
盖茨先生表示:当我们在几年前关注电子商务行业所发生的事情时,我们清楚地意识到,该行业需要的是一套全新的技术,可以帮助企业以全新的方式做生意,并改善它们现有商业处理手段的效率。XML就是这一切的基础。它可以极大地减少集成商业系统的损耗,帮助企业更好地和商业伙伴及客户结合到一起。它还可以帮助人们充分利用智能设备和对等网络技术所具有的巨大威力。XML有 潜力成为一种粘合剂,使软件开发者编写出适用于互联网的分布式应用程序。我们把企业的前途压在XML,以及它能为企业和消费者所做的事情上。
以上就是我所介绍的XML,希望浏览者能够有所收获追问
我觉得已经沾边了。但是还是不够凝练,理解的或者表达的没显示出很深刻
参考技术A 可扩展标记语言,标准通用标记语言的子集,一种用于标记电子文件使其具有结构性的标记语言。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
中文名:可扩展标记语言
外文名:eXtensible Markup Language
类型:标记语言
外语缩写:XML(也做文件扩展名)
其他称呼:可扩展置标语言、可扩展标识语言 参考技术B 首先我认为,xml只是一个数据传输格式,不必深究,只要记住xml的格式即可,要深入研究的是如何解析和创建xml。
其次,xml头是固定的,下面的节点只要<XXX><XXX>对应出现即可,然后加上一些属性 参考技术C 这年头技术不值钱追问
我是初学者,接受JAVAweb培训里。还是学生,还是想学点本事,将来也好混
追答最好网上看教程然后做项目,经验最重要,师傅领进门修行靠个人
Kruskal算法浅显的讲解
前言
本文 不同步 发表于Luogu Blog
正文
前言*2
最小生成树的定义非常浅显,就是边权值最小的一棵树(给定我们好几种连边方式,来求最小生成树)
求最小生成树有好几种算法
-
- 适用于稠密图的Prim算法(太弱了还没学)
-
- 适用于稀疏图的Kruskal算法(比较简单所以拿捏了)
-
- 没有人知道但是被大佬提过一嘴的 Borůvka (Sollin) 算法(实际上是Prim算法的升级版
更难懂了)
- 没有人知道但是被大佬提过一嘴的 Borůvka (Sollin) 算法(实际上是Prim算法的升级版
本篇Blog先介绍第二种
前置知识
1.并查集
2.知道树是啥玩意
3.贪心(刚讲了肯定会)
正题
Kruskal算法实际上非常简单,我们先来一道例题结合着讲解
很显然,为了求最小生成树,我们先需要存入所有的数据,为了方便,我们使用万能的 结构体
来存数据
struct node
{
int x,y,t;//x表示一个点,y表示另一个点,t表示连接这条边需要的价值(也就是权值)
}k[200005];
然后我们输入数据
for(register int i=1; i<=m;i++)
{
scanf("%d%d%d",&k[i].x,&k[i].y,&k[i].t);
}
最小生成树,肯定得有个求“最小”的过程,这里我们利用贪心的思想,把权值最小的连边放在数组的前面
inline bool cmp(node a,node b)
{
return a.t<b.t;//从小到大排序
}
sort(k+1,k+m+1,cmp);
然后前提准备好了,我们进入程序的主题,即“建树”的环节,这里我们用并查集的思想
inline int find(int x)//路径压缩并查集查找,这里不再细说
{
if(f[x]==x) return f[x];
return f[x]=find(f[x]);
}
int now=0;//现在所建边的权值总数
for(register int i=1; i<=m;i++)
{
if(n==1)//这里需要理解一下,当联通块的数量降为1的时候,我们就已经建好了树,直接输出退出即可(自己画个树试试,边数一定是节点数-1)
{
cout<<now;
return 0;
}
int f1=find(k[i].x),f2=find(k[i].y);//看这俩节点是否连通
if(f1!=f2) //如果不连通
{
f[f1]=f[f2];//让他俩连通
now+=k[i].t;//权值++
n--;//连通块--
}
else continue;
}
cout<<"orz";//如果没有要输出orz
然后这题就AC力
完整AC代码
#include<bits/stdc++.h>
using namespace std;
int n,m;
int f[200005];
inline int find(int x)
{
if(f[x]==x) return f[x];
return f[x]=find(f[x]);
}
struct node
{
int x,y,t;
}k[200005];
inline bool cmp(node a,node b)
{
return a.t<b.t;
}
int main()
{
cin>>n>>m;
for(register int i=1; i<=n;i++) f[i]=i;
for(register int i=1; i<=m;i++)
{
scanf("%d%d%d",&k[i].x,&k[i].y,&k[i].t);
}
sort(k+1,k+m+1,cmp);
int now=0;
for(register int i=1; i<=m;i++)
{
if(n==1)
{
cout<<now;
return 0;
}
int f1=find(k[i].x),f2=find(k[i].y);
if(f1!=f2)
{
f[f1]=f[f2];
now+=k[i].t;
n--;
}
else continue;
}
cout<<"orz";
return 0;
}
然后附一张Kruskal算法的示意图,方便理解
以上是关于xml很难懂,有没有,浅显且全面的解释?感谢了的主要内容,如果未能解决你的问题,请参考以下文章