zoukankan      html  css  js  c++  java
  • Xpath,XQuery,DTD

    一、Xpath

    XPath 是一门在 XML 文档中查找信息的语言;XPath 是 XSLT 中的主要元素。XPath是W3C标准。
    1、七种类型节点:元素、属性、文本、命名空间、处理指令、注释、文档节点;
    2、节点关系(轴)

        parent               当前节点的父节点;
        child                当前节点的所有子节点;
        ancestor             当前节点的所有上级节点(父、祖父...);
        ancestor-or-self     当前节点的所有上级节点及节点本身;
        descendant           当前节点的所有下级节点(子、孙...);
        descendant-or-self   当前节点的所有下级节点及本身;
        preceding-sibling    当前节点之前的所有同级节点;
        following-sibling    当前节点之后的所有同级节点;
        following            当前节点之后的所有节点;
        preceding            当前节点之前的所有节点;
        namespace            当前节点的所有命名空间节点;
        attribute            当前节点的所有属性;
        self                 当前节点;   

    3、选取节点方法:

        nodeName         选择此节点的所有子节点;
        /                从根节点选取;
        //               从匹配选择当前节点选择文档中的节点,而不考虑它们的位置;
        .                选取当前节点;
        ..               选取节点的父节点;
        @                选取属性;
        *                匹配任何元素节点;
        @*               匹配任何属性节点;
        node()           匹配任何类型的节点;
        name1|name2      选取所有name2和name1元素;

    4、谓语

    用来查找某个特定节点或者包含某个指定的值的节点,谓语被包含在方括号中;例:

        nodeName[1]            选取nodeName的第一个元素;
        nodeName[last()]      选取最后一个元素;
        nodeName[position()<3] 选取前两个元素;
        nodeName[@lang]        选择属性有lang的nodename元素;
        nodeName[@lang='eng']  选择属性lang的值为eng的元素;
        nodeName[price>30]     选取所有其中price元素大于30的nodeName元素;

    5运算符:

    +,-,*,div(除),mod(取余),=,!=,<,<=,>,>=,or,and

    二、XQuery

    1、XQuery 之于 XML 作用就类似于 SQL 之于数据库的作用,是用来查询XML数据,可以用来查询任何XML形态呈现的数据(包括数据库)
    2、XQuery使用谓语来限定从文档所提取的数据;
    3、XQuery对大小写敏感,其中的字符串可使用单引号或双引号;
    4、变量由$并跟随一个名称来进行定义;
    5、 :注释:
    6、通用比较:=,!=,<,<=,>,>=;    
        值的比较:eq,ne,lt,le,gt,ge
    7、doc("name.xml")        使用此函数来提取XML文档中的数据;    
        查询示例:doc("books.xml")/bookstore/book[price>30]/title      选取bookstore元素下所有的title元素,且price元素值大于30;
        使用FLWOR进行排序(for  let  where  order by  return):
        for $x in doc("books.xml")/bookstore/book
        where $x/price>30
        order by $x/title
        return $x/title    
    8、使用data()函数来将获取到的数据展示出来
        向html元素插入查询到的元素示例:

        <ul>
            {
            for $x in doc("books.xml")/bookstore/book
            order by $x/title
            return <li>{data($x/title)}. Category: {data($x/@category)}</li>
            }
        </ul>

    9、自建函数格式
        declare function 前缀:name($para as datatype)
        AS 返回数据类型
        {    }

    三、DTD

    1、DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块,可被声明于XML文档中,也可作为一个外部引用;
    2、所有XML文档构成的模块:元素、属性、实体、PCDATA、CDATA
    3、实体引用:&lt,&gt,&amp,&quot,&apos
    4、元素声明:

        <!ELEMENT element-name category>    或    <!ELEMENT element-name (element-content)>
        <!ELEMENT element-name EMPTY>       空元素
        <!ELEMENT element-name(#PCDATA)>    只有PCDATA的元素
        <!ELEMENT element-name ANY)>        带有任何内容的元素
        <!ELEMENT element-name (childname1,...)>        带有子元素的元素
        <!ELEMENT element-name (childname+)>            子元素最少出现一次
        <!ELEMENT element-name (childname*)>            子元素出现一次或多次
        <!ELEMENT element-name (childname?)>            子元素出现0次或一次
        <!ELEMENT element-name (childname1|childname2)> 或

    5、属性声明
        <!ATTLIST element-name attribute-name attribute-type attribute-value>
        属性类型(attribute-type):

        CDATA            字符数据
        (va1|va2|...)    枚举
        ID               唯一的ID
        IDREF            值为另一个元素的ID
        IDREFS           值为ID的列表
        NMTOKEN          合法的XML名称
        NMTOKENS         合法的XML名称列表
        ENTITY           实体
        ENTITYS          实体列表
        NOTATION         符号的名称
        xml:             值是一个预定义的XML值

        属性值(attribute-value):

        一个值            给定的默认值
        #REQUIRED        必填
        #IMPLIED        非必填
        #FIXED value    属性值是固定的

    6、实体(用于定义引用普通文本或特殊字符的的快捷方式的变量,实体引用是对实体的引用)
        实体可在内部和外部声明

        <!ENTITY entity-name "entity-value">    内部声明
        <!ENTITY entity-name SYSTEM "URL">        外部声明
        示例:
        DTD
        <!ENTITY writer "This is a writer">
        <!ENTITY copyright "I do not care what it is">
        XML实例:
        <author>&writer;&copyright;</author>

    7、验证(javascript)
        示例:

        var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async="false";
        xmlDoc.validateOnParse="true";    //值设为false就可以关闭验证
        xmlDoc.load("note_dtd_error.xml");
    
        document.write("<br />Error Code: ");
        document.write(xmlDoc.parseError.errorCode);
        document.write("<br />Error Reason: ");
        document.write(xmlDoc.parseError.reason);
        document.write("<br />Error Line: ");
        document.write(xmlDoc.parseError.line); 
  • 相关阅读:
    pandas函数
    实战应用--基于物品的协同过滤算法itemCF
    Hadoop--mapreduce知识点总结
    HDFS知识点总结
    学习随笔 --python连接oracle数据库
    学习随笔 --python实现熵权法
    学习随笔 --SparkStreaming WordCount Python实现
    学习随笔 --SparkStreaming WordCount Java实现
    学习随笔--JavaSparkJDBC操作Oracle
    Anaconda和canda简介及区别
  • 原文地址:https://www.cnblogs.com/aland-1415/p/9065337.html
Copyright © 2011-2022 走看看