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); 
原文地址:https://www.cnblogs.com/aland-1415/p/9065337.html