XML学习笔记


        XML相对于HTML来说实在是轻松方便了不少。总觉得HTML中的各种预制标签和属性真心让人难过不已。XML中的任何元素都能够自定义以及可以使用CSS来进行显示,这样方便不少。

        总算是明白JSON到底是什么东西了,之前考阿里的笔试的时候要求用JSON写一个什么来验证什么API之类的完全就不会啊。JSON就是一个数据格式吧,在JavaScript中是一个对象,在Java中就相当于一个Map。JSON的写法可以有

xx={
    XX:xx,
    XX:{
         XX:xx
         },
    XX:function(){
        alert();
    }
}
其中XX就是自定义的key,然后xx就是value。JSON也可以定义数组,通过使用[ ]来定义,除了最后一个属性或者元素不需要使用逗号,其他都需要使用逗号。
xxs=[
{

},
{

}];

        在xml中&lt;表示小于号;&gt;表示大于号;&amp;表示符号&;&apos;表示单引号;&quot;表示双引号;各种代理符号中的分号不可忽略。如果一个文档中的特殊符号过多的话可以使用CDATA标记<![CDATA[文本内容]]>来表示,文本内容直接显示,即使文本内容中有合法的子元素。即XML不会对CDATA中的内容进行解析。

        XML的处理指令使用<?指令内容?>来表示。常用的处理指令有xml的文档声明(一定出现在文本的第一行),xml-stylesheet(用来声明XML的显示格式)。

        windows使用\r\n表示换行,linux使用\r表示换行,Mac使用\n表示换行。XML使用\n表示换行。

        如果严格按照XML的格式来书写XML文档的话,那么XML文档仅仅是格式良好的,因为这样的格式并没有携带任何的语义,所以加上语义约束的话,那么XML文档就成为了有效的XML文档,语义约束有两种方式:DTD和Schema。

 

       DTD(内部DTD、外部DTD、公用DTD):

       定义XML文档里的根元素、内容和结构

      定义XML文档里可以接受哪些元素

        定义XML文档里每个元素能接受的合法内容:包括是否为空,是否可以包含文本,可接受哪些子元素以及子元素之间的顺序和子元素出现的次数等。

       定义XML文档中每个元素能接受哪些属性

       定义属性的类型,能接受哪些值,元素对属性的约束

        定义属性的默认值和固定值

        定义XML文档或DTD中可用的实体。


        内部DTD:

<!DOCTYPE 根元素名[
元素描述
]>

        外部DTD:
<!DOCTYPE 根元素名
SYSTEM "外部dtd文件的url">

        公共DTD:

使用PUBLIC关键字引入(PUBLIC "DTD的标识名" "公共DTD的URL")注意以上的双引号都不能省略。


        使用Schema约束xml文档的时候注意schema本身就是一个xml文档,其本身使用schema来约束自身。命名空间的名字是自定义的。这种自定义的方式能够将较长的命名空间简化成较短的字母组合。

        使用schema的列表list构造列表时,若为其指定pattern,则这个pattern对整个列表进行正则匹配,所以如果要求列表里的每一项都满足正则匹配的话则应该对列表包含的基本类型定义pattern。在xml Schema中,如果定义了属性(attribute),这个属性在xml文件元素中不一定需要出现。


        可以用CSS和XSLT来控制xml文件的显示方式。

        在XSLT中,<template>属性用来定义替换匹配成功的原xml文档内容,<template-applies>用来指定替换内容的位置。这里的替换内容是当前上下文中的节点集。所以XSLT处理XML文档的方式是建立在当前上下文环境的基础上的。

        XSLT的<value-of>使用深度优先的方式返回某个指定节点的值。XSLT选择节点的属性值方式如下:

<book id="1">
    <name>helloworld</name>
</book>

如果要得到book的id属性值,则使用一下方式进行选择:

<template match='/'>
   <value-of select='book/@id'/>
</template>


       

       注意指定book节点然后用'/'和@符号来选择属性名称。匹配子节点则只需使用'/'就可以完成,匹配后代节点的方式是'//'即select='appendix//para‘表示匹配祖先节点为appendix的appendix的所有para节点。


XSLT内置的模板规则可以匹配所有元素的节点和根节点。

<template match='*|/'>

       <apply-templates/>

</template>

      由于这条规则的存在,使得如果对某节点无需特殊处理而只要XSLT依次处理其子节点,则对该节点无需定义任何模板规则。<apply-templates../>会隐式迭代当前节点的子节点。


        SAX和DOM的区别:SAX采用事件驱动模式,即当解析器发现某些内容时发送事件给监听器,然后监听器根据送来的事件可以得到具体的xml文档中的内容,而DOM把整个XML文档解析到内存中,然后采用构建树的方式进行内容的构建,这样能够更加方便地进行整篇文档的更改,不足就是会占用大量内存空间。


很容易混淆的两个概念:节点和元素

元素由开始标签、结束标签和标签之间的数据构成

而节点是元素中的标签。


Web Service的三个重要基础SOAP、WSDL、UDDI

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值