zoukankan      html  css  js  c++  java
  • xml笔记

    xml:
        有且只有一个根元素
        默认utf-8 如果是中文且为不是utf-8的必须指定编码
        声明的编码必须和文档的内容保持一致
        well-formed XML :是否符合xml语法
        valid xml:验证此xml是否符合dtd规则
        
    dtd定义了哪些:
            1.元素定义规则,只能有哪些标签
            2.元素间关系的的定义,标签出现的顺序,位置
            3.使用的实体或符号规则 &lt &copy
            
    //行内dtd写法
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE root[
        <!ELEMENT root EMPTY>
    ]>
    <root></root>
    //外部dtd写法 ,对于公共dtd如果浏览器能识别名称,则不会在去请求dtd文件
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE root SYSTEM "test.dtd">
    <root />
    
    //test.dtd
    <!ELEMENT root EMPTY>
    
    
    PCDATA:解析
    CDATA:不解析,这样就可以不用在乎里面的特殊字符
    
    元素声明使用<!ELEMENT 元素名称 (元素内容)><!ELEMENT 元素名称 类别>的语法<!ELEMENT root EMPTY> //EMPTY关键字表示元素是个空元素
        <!ELEMENT root ANY> //ANY关键字表示元素中可以出现任何内容,也可以为空
        //下面这个声明表示root中可以有文本,也可以是空
        <!ELEMENT root (#PCDATA)> //()表示一个分组,其中是放的允许在元素出现的内容,#PCDATA表示文本
        <!ELEMENT root (child)> //child是子元素的名称,这个声明表示root中必须且只能有一个child元素
        <!ELEMENT root (child1,child2)> //以逗号分隔,表示子元素依次出现
        <!ELEMENT root (child1|child2)> //竖线与"OR"的意思相近,表示root元素中只能出现child1或child2
        <!ELEMENT root (child?)> //root中child子元素可以出现一次,也可以不出现
        <!ELEMENT root (child+)> //root中child子元素至少出现一次
        <!ELEMENT root (child*)> //root中child子元素可以出现任意次数或不出现
        <!ELEMENT root (child,(a,b))> //()还可以嵌套,这里表示root元素中第一次子元素必须是child
        //紧接着是a或b
        <!ELEMENT root (child,(a,b)+)> //*,?,+这些量词可作用于分组,这里表示root元素中第一次子元素必须是child
        //紧接着是a或b出现一次或多次
        
        
    属性声明使用<!ATTLIST 元素名称 属性名称 属性类型 默认值>的语法.示例如下:
    类型     描述
    CDATA     值为字符数据 (character data)
    (en1|en2|..)     此值是枚举列表中的一个值
    ID     值为唯一的 id
    IDREF     值为另外一个元素的 id
    IDREFS     值为其他 id 的列表
    NMTOKEN     值为合法的 XML 名称
    NMTOKENS     值为合法的 XML 名称的列表
    ENTITY     值是一个实体
    ENTITIES     值是一个实体列表
    NOTATION     此值是符号的名称
    xml:     值是一个预定义的 XML 值
    
    值     属性的默认值.该属性可以出现,也可以不出现,当没有明确指定该属性时,属性值使用默认值
    #REQUIRED     属性值是必需的
    #IMPLIED     属性不是必需的,可以出现,可以不出现
    #FIXED value     属性值是固定的.属性可有可无,但有的时候,其值必须是value
    
        <!ATTLIST img src CDATA #REQUIRED> //img元素的src属性是必须的,值为字符串
        <!ATTLIST script type CDATA "text/javascript"> //script元素的type属性默认值是text/javascript
        <!ATTLIST div id ID #IMPLIED> //div元素的id属性是唯一的ID标识,可有可无
        <!ATTLIST input type(text|radio|checkbox) "text"> //input元素的type属性是三个值中的一个,默认值是text
        <!ATTLIST label for IDREF #IMPLIED> //label元素的for属性是页面中另一个元素的ID
        
    实体的定义:
        //一般实体定义
        <!ENTITY abc "ABCabcABC"> //内部实体
        <!ENTITY abc SYSTEM "abc.ent"> //外部私有实体
        <!ENTITY test PUBLIC "-//AjaxLife//ENTITIES TEST 1 for XML//EN" "test.ent"> //外部公共实体
        //实体引用
        <abc>&abc;</abc>
        
        //参数实体  只在dtd文件中用
        <!ENTITY % abc "root">
        <!ELEMENT %abc; (child)>//这句将声明元素root,具有一个子元素child
        
    xml中引入样式表:<?xml-stylesheet type="text/css" href="http://test.cm/test.css"?>
    
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/css" href="http://test.cm/test.css"?>
    <!DOCTYPE root [
        <!ELEMENT root ANY>
        <!ELEMENT node ANY>
        <!ATTLIST node
            name (a|b|c) 'a'
            age  CDATA '24'
            id ID #IMPLIED
            for IDREF 'f'
            fors IDREFS 'a'
        >
        <!ENTITY  sjk "songjiankang">
        
    ]>
    <root>
        <node id="f"></node>
        <node id="a"></node>
        <node for="a"></node>
        <node fors="a f">&sjk;</node>
    </root>
    
    
    xpath:
        body//p 后代元素
        body/p  子元素
    
        /root  {选取root
        root {选取root
        child {空,因为child不是document的子元素
        //child {选取两个child元素,//表示后代
        //@attr {选取attr属性节点
        /root/child//desc {返回child的后代元素desc
    
        /root/child[3] {选取root元素的第三个child子元素,注意,这和数组下标不一样,从1开始计数
        //child[@attr] {选取所有具有属性attr的child元素
        //child[@attr="val"]/desc {选取所有属性attr的值为val的child元素的子元素desc
        //child[desc] {选取所有的有desc子元素的child
        //child[position()>3]  {position()是XPath中的一个函数,表示节点的位置
        //child[@attr>12] {XPath表达式还可以进行数值比较,该表达式将选取attr属性值大于12的child元素
        //child[last()] {last()函数返回节点列表最后的位置,该表达式将选取最后一个child元素
    
        
        * ,和CSS中的选择符一样,这将匹配任何元素节点
        @* ,匹配任何属性节点
        node() ,匹配任何类型的节点
    
        /root/* {选取根元素下面的所有子元素
        /root/node() {选取根元素下面的所有节点,包括文本节点
        //* {选取文档中所有元素
        //child[@*] {选取所有具有属性的child元素
        //@*  {选取所有的属性节点
        
        
    xsl 扩展样式表语言(extensible stylesheet language)包括:
            
        
  • 相关阅读:
    Eclipse和PyDev搭建完美Python开发环境(Windows篇)
    Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
    Java并发编程:Timer和TimerTask(转载)
    Java并发编程:并发容器之CopyOnWriteArrayList(转载)
    Java并发编程:阻塞队列
    深入理解Java的接口和抽象类
    Java并发编程:线程池的使用
    Java并发编程:同步容器
    Java并发编程:深入剖析ThreadLocal
    Java并发编程:volatile关键字解析
  • 原文地址:https://www.cnblogs.com/siqi/p/3327533.html
Copyright © 2011-2022 走看看