用简单的术语解释xpath和xquery

use*_*814 7 xpath xquery

我是编程新手.我知道XML是什么.任何人都可以用简单的术语解释xpath和xquery在哪里使用它们?

Joh*_*son 14

XPath是一种在XML树中定位特定元素的方法.

例如,给定以下结构:

<myfarm>
  <animal type="dog">
    <name>Fido</name>
    <color>Black</color>
  </animal>
  <animal type="cat">
    <name>Mitsy</name>
    <color>Orange</color>
  </animal>
</myfarm>
Run Code Online (Sandbox Code Playgroud)

XPath允许您遍历结构,例如:

/myfarm/animal[@type="dog"]/name/text()
Run Code Online (Sandbox Code Playgroud)

哪个会给你"Fido"

XQuery是一种XML查询语言,它使用XPath来查询XML结构.但是,它还允许定义和调用函数,以及使用FLWOR表达式复杂查询数据结构.FLWOR允许在XML中定义的数据集之间的连接功能. 来自维基百科的FLWOR文章

示例XQuery(使用一些XPath)是:

declare function local:toggle-boolean($b as xs:string) 
as xs:string 
{
    if ($b = "Yes") then "true"
    else if ($b = "No") then "false"
    else if ($b = "true") then "Yes"
    else if ($b = "false") then "No"
    else "[ERROR] @ local:toggle-boolean"
};

<ResultXML>
    <ChangeTrue>{ local:toggle-boolean(doc("file.xml")/article[@id="1"]/text()) }</ChangeTrue>
    <ChangeNo>{ local:toggle-boolean(doc("file.xml")/article[@id="2"]/text()) }</ChangeNo>
</ResultXML>
Run Code Online (Sandbox Code Playgroud)

  • +1有用的解释和示例.然而,2个更正:1)"在XML DOM中"应该说"在XML树中".DOM是XPath不需要的特定接口.2)"XQuery是XPath的扩展" - 我想说,"XQuery是一种使用XPath的XML文档查询语言".就像C语言使用算术运算符一样,但C远远超过"算术运算符的扩展". (2认同)

Gai*_*aim 5

XPath是一种简单的查询语言,用于在XML DOM中搜索.我认为它可以与带有数据库的SQL Select语句进行比较.XPath可以评估许多使用XML并具有大量使用的程序.我建议你学习它.

XQuery功能更强大,更复杂,它还提供了许多选项来转换结果,它提供了周期等等.但它也是查询语言.它还用作XML数据库的查询语言.我认为这种语言只有特定的用法,而且可能没有必要去了解它,如果你知道它存在的话,那么它就足够了.

有一个简单的解释我希望它足够且易于理解