English 中文(简体)
XPath - Quick Guide
  • 时间:2024-11-05

XPath - Quick Guide


Previous Page Next Page  

XPath - Overview

在学习XPath之前,我们应当首先理解SL,即 ExtensibleStylesheet

Need for XSL

如果是超文本文件,则标注如表、四、四舍五入等。 浏览器知道如何给他们添加风格,并用安全局的风格展示。 但是,在XML文件的情况下,标记没有预先界定。 为了理解和模仿XML文件, 万维网集团(W3C)开发了XSL,可充当基于XML的风格表格。 一份XSL文件具体规定浏览器应如何提供XML文件。

以下是国际空间法学会的主要部分:

    XSLT - 用于将XML文件翻译成其他各类文件。

    XPath-用于检索XML文件。

    XSL-FO - 用于编制XML文件。

What is XPath?

XPath是万维网集团的一项正式建议。 它界定了在XML档案中查找信息的语文。 它被用于掩盖XML文件的内容和属性。 XPath提供了各种表达方式,可用于查询XML文件的相关信息。

    结构定义-XPath对XML文件的某些部分作了定义,如内容、属性、文字、名称、处理、评论和文件节点。

    - 康复会提供强有力的途径表达,在XML文件中选择节点或节点清单。

    • XPath为操纵扼制价值、数字价值、日期和时间比较、节点和QName操纵、序列操纵、波拉兰价值观等提供了丰富的标准功能图书馆。

    XSLT的主要部分——XPath是XSLT标准的主要内容之一,必须具备知识,以便与异常低价竞标文件合作。

    W3C建议——XPath是万维网集团的一项正式建议。

在与卫生局合作时,应当牢记以下几点:

    XPath is core component of XSLT standard.

    XSLT cannot work without XPath.

    XPath is basis of XQuery and XPointer.

XPath - Expression

呼吸系统疾病的表述一般界定了一种模式,以便选择一套节点。 这些模式被SLT用于进行改造或X Pointer用于处理目的。

XPath具体说明了7类节点,这些节点可以是执行XPath表述的结果。

    Root

    Element

    Text

    Attribute

    评论

    Processing Instruction

    Namespace

XPath使用一条途径,从XML文件中挑选节点或节点清单。

以下是从XML文件中选择任何节点/节点清单的有益途径和表述清单。

S.No. Expression & Description
1

用特定名称选择所有节点

2

/

遴选从深层节点开始

3

www.un.org/Depts/DGACM/index_spanish.htm

甄选从目前与甄选相吻合的节点开始。

4

<>。

选择目前的节点

5

<>。

选择目前的代号的母子

6

&commat;

选择属性

7

<student

例——用“student”名称选择所有节点

8

例——选择属于班级儿童的所有学生。

9

选择所有学生,不论他们是否在文件中

Example

例如,我们制作了XML文件样本、学生xml及其风格文件students.xsl。 使用了elect下的XPath表述,称各种XSL标签的属性,以获得每个学生节点的头号、最后名称、nick名和标志。

students.xml

<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?>
<class>
   <student rollno = "393">
      <firstname>Dinkar</firstname>
      <lastname>Kad</lastname>
      <nickname>Dinkar</nickname>
      <marks>85</marks>
   </student>
   <student rollno = "493">
      <firstname>Vaneet</firstname>
      <lastname>Gupta</lastname>
      <nickname>Vinni</nickname>
      <marks>95</marks>
   </student>
   <student rollno = "593">
      <firstname>Jasvir</firstname>
      <lastname>Singh</lastname>
      <nickname>Jazz</nickname>
      <marks>90</marks>
   </student>
</class>

students.xsl

<?xml version = "1.0" encoding = "UTF-8"?>
<xsl:stylesheet version = "1.0"
   xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">  

   <xsl:template match = "/">
      <html>
         <body>
            <h2>Students</h2>
            <table border = "1">
               <tr bgcolor = "#9acd32">
                  <th>Roll No</th>
                  <th>First Name</th>
                  <th>Last Name</th>
                  <th>Nick Name</th>
                  <th>Marks</th>
               </tr>
               <xsl:for-each select = "class/student">
                  <tr>
                     <td> <xsl:value-of select = "@rollno"/></td>
                     <td><xsl:value-of select = "firstname"/></td>
                     <td><xsl:value-of select = "lastname"/></td>
                     <td><xsl:value-of select = "nickname"/></td>
                     <td><xsl:value-of select = "marks"/></td>
                  </tr>
               </xsl:for-each>
            </table>
         </body>
      </html>
   </xsl:template>

</xsl:stylesheet>

Verify the output

XPath expression Output

XPath - Nodes

在本章中,我们注意到《健康宣言》在涉及常见的节点、XPath定义和处理细节方面的表述。

S.No. Node Type & Description
1 Root

XML文件的基本内容。

2 Element

内容编号。

3 Text

内容案文。

4 Attribute

内容提要

5 评论

评论

XPath - Absolute Path

定位途径具体指明了XML文件中的节点。 这条道路可以是绝对的,也可以是相对的。 如果地点的道路从根底线开始,或从表面上开始,那是一条绝对的道路。 以下是利用绝对道路确定要素的例子。

- 在课堂内选修学生节点。

<xsl:for-each select = "/class/student">

- 选择一年级学生节点名。

<p><xsl:value-of select = "/class/student/firstname"/></p>

Example

例如,我们制作了XML文件样本students.xml及其风格文件students.xsl。 使用了XPath语。

以下是使用的XML样本。

students.xml

<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?>
<class>
   <student rollno = "393">
      <firstname>Dinkar</firstname>
      <lastname>Kad</lastname>
      <nickname>Dinkar</nickname>
      <marks>85</marks>
   </student>
   <student rollno = "493">
      <firstname>Vaneet</firstname>
      <lastname>Gupta</lastname>
      <nickname>Vinni</nickname>
      <marks>95</marks>
   </student>
   <student rollno = "593">
      <firstname>Jasvir</firstname>
      <lastname>Singh</lastname>
      <nickname>Jazz</nickname>
      <marks>90</marks>
   </student>
</class>

students.xsl

<?xml version = "1.0" encoding = "UTF-8"?>
<xsl:stylesheet version = "1.0"
   xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">  
	
   <xsl:template match = "/" >
      <html>
         <body>
            <h3>Details of each Students. </h3>
            <table border = "1">
               <tr bgcolor = "#9acd32">
                  <th>Roll No</th>
                  <th>First Name</th>
                  <th>Last Name</th>
                  <th>Nick Name</th>
                  <th>Marks</th>		 
               </tr>	
					
               <tr>
                  <td><xsl:value-of select = "/class/student[1]/@rollno"/></td>
                  <td><xsl:value-of select = "/class/student[1]/firstname"/></td>
                  <td><xsl:value-of select = "/class/student[1]/lastname"/></td>
                  <td><xsl:value-of select = "/class/student[1]/nickname"/></td>
                  <td><xsl:value-of select = "/class/student[1]/marks"/></td>		 
               </tr>
					
               <tr>
                  <td>
                     <xsl:value-of select = "/class/student/@rollno"/>
                  </td>
                  <td><xsl:value-of select = "/class/student[2]/firstname"/></td>
                  <td><xsl:value-of select = "/class/student[2]/lastname"/></td>
                  <td><xsl:value-of select = "/class/student[2]/nickname"/></td>
                  <td><xsl:value-of select = "/class/student[2]/marks"/></td>		 
               </tr>
					
               <tr>
                  <td>
                     <xsl:value-of select = "/class/student[3]/@rollno"/>
                  </td>
                  <td><xsl:value-of select = "/class/student[3]/firstname"/></td>
                  <td><xsl:value-of select = "/class/student[3]/lastname"/></td>
                  <td><xsl:value-of select = "/class/student[3]/nickname"/></td>
                  <td><xsl:value-of select = "/class/student[3]/marks"/></td>		 
               </tr>
      
            </table> 
   
         </body>
      </html>
   </xsl:template>
</xsl:stylesheet>

Verify the output

XPath Absolute Path Output

XPath - Relative Path

定位途径具体指明了XML文件中的节点。 这条道路可以是绝对的,也可以是相对的。 如果从我们所选择的节点开始地点,那就是一个相对的道路。

以下是利用相对途径确定要素的例子。

- 选择与学生节点有关的首个名字。

<p><xsl:value-of select = "firstname"/></p>

Example

例如,我们制作了XML文件样本students.xml及其风格文件students.xsl。 使用了XPath语。

以下是使用的XML样本。

students.xml

<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?>
<class>
   <student rollno = "393">
      <firstname>Dinkar</firstname>
      <lastname>Kad</lastname>
      <nickname>Dinkar</nickname>
      <marks>85</marks>
   </student>
   <student rollno = "493">
      <firstname>Vaneet</firstname>
      <lastname>Gupta</lastname>
      <nickname>Vinni</nickname>
      <marks>95</marks>
   </student>
   <student rollno = "593">
      <firstname>Jasvir</firstname>
      <lastname>Singh</lastname>
      <nickname>Jazz</nickname>
      <marks>90</marks>
   </student>
</class>

students.xsl

<?xml version = "1.0" encoding = "UTF-8"?>
<xsl:stylesheet version = "1.0"
   xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
	
   <xsl:template match = "/" >
      <html>
         <body>
            <h3>Details of each Students. </h3>
            <table border = "1">
               <tr bgcolor = "#9acd32">
                  <th>Roll No</th>
                  <th>First Name</th>
                  <th>Last Name</th>
                  <th>Nick Name</th>
                  <th>Marks</th>		 
               </tr>		 
					
               <xsl:for-each select = "/class/student">
                  <tr>
                     <td><xsl:value-of select = "@rollno"/></td>
                     <td><xsl:value-of select = "firstname"/></td>
                     <td><xsl:value-of select = "lastname"/></td>
                     <td><xsl:value-of select = "nickname"/></td>
                     <td><xsl:value-of select = "marks"/></td>		 
                  </tr>
               </xsl:for-each>
            </table> 
         </body>
      </html>
   </xsl:template>
</xsl:stylesheet>

Verify the output

XPath Relative Path Output

XPath - Axes

由于定位途径界定了使用绝对或相对途径的噪音的位置,因此轴心用于通过诸如 父母、子女、兄弟、等关系确定元素。 轴心指某一要素的轴心。

以下是各种轴心数值清单。

S.No. Axis & Description
1

系包括父母在内的现今世 no的祖先。

2

代表目前的节点和祖先。

3

代表现值的属性。

4

代表现今世后代的子女。

5

代表现今世后代。 死亡者包括婴儿(无更多儿童) up。

6

代表现今世后代。

7

<following

>

Represents all nodes come after the present node.

8

following-sibpng

>

>Represents the following sibpngs of the context node. png胎的浓度水平与目前的胎盘相同,并且与母体相同。

9

代表现今节点的名称。

10

代表现值的母。

11

代表目前节点之前的所有节点(即向会议开放标)。

12

代表现值。

以下是一些使用轴心的例子。

- 选择与学生节点有关的首个名字。

<p><xsl:value-of select = "firstname"/></p>
<xsl:value-of select = "/class/student/preceding-sibpng::comment()"/>

Example

例如,我们制作了XML文件样本students.xml及其风格文件students.xsl。 使用了XPath语。

以下是使用的XML样本。

students.xml

<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?>
<class>
   <!-- 评论: This is a pst of student -->
   <student rollno = "393">
      <firstname>Dinkar</firstname>
      <lastname>Kad</lastname>
      <nickname>Dinkar</nickname>
      <marks>85</marks>
   </student>
   <student rollno = "493">
      <firstname>Vaneet</firstname>
      <lastname>Gupta</lastname>
      <nickname>Vinni</nickname>
      <marks>95</marks>
   </student>
   <student rollno = "593">
      <firstname>Jasvir</firstname>
      <lastname>Singh</lastname>
      <nickname>Jazz</nickname>
      <marks>90</marks>
   </student>
</class>

students.xsl

<?xml version = "1.0" encoding = "UTF-8"?>
<xsl:stylesheet version = "1.0"
   xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"> 
	
   <xsl:template match = "/" >
      <html>
         <body>  
            <xsl:value-of select = "/class/student/preceding-sibpng::comment()"/>
            <br/>
            <xsl:text>First Student: </xsl:text>
            <xsl:value-of select = "/class/student/child::firstname" />    
         </body>
      </html>
   </xsl:template>
</xsl:stylesheet>

Verify the output

XPath axes

XPath - Operators

在本章中,我们看到XPath的操作者和职能,其详细内容涵盖常用的XPath defineshandles。 XPath对Nodes、Sting、编号和Bolean类的操作员和职能进行了定义。

以下是我们将讨论的名单。

S.No. Operators/Functions & Description
1 Comparision Operators

比较运营商对数值。

2 Boolean Operators

g. 农民经营人进行检查、检查或安装;而不是功能。

3 Number Functions/Operators

操作员/职能编号。

4 String Functions

各种职能。

5 Node Functions/Operators

各种职能和运营商按点行事。

XPath - Wildcard

XPath对拟用XPath表示的 no子下定义如下:

S.No. WildCard & Description
1

2

<>。

used to match the current node in context.

3

4

node(>>

>>p> 用于与任何类型之代之比

Example

举例来说,每名学生都可以通过洗手,制作一张有细节内容的表格。

students.xml

<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?>
<class>
   <student rollno = "393">
      <firstname>Dinkar</firstname>
      <lastname>Kad</lastname>
      <nickname>Dinkar</nickname>
      <marks>85</marks>
   </student>
   <student rollno = "493">
      <firstname>Vaneet</firstname>
      <lastname>Gupta</lastname>
      <nickname>Vinni</nickname>
      <marks>95</marks>
   </student>
   <student rollno = "593">
      <firstname>Jasvir</firstname>
      <lastname>Singh</lastname>
      <nickname>Jazz</nickname>
      <marks>90</marks>
   </student>
</class>

students.xsl

<?xml version = "1.0" encoding = "UTF-8"?>
<xsl:stylesheet version = "1.0"
   xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
	
   <xsl:template match = "/">
      <html>
         <body>
            <h2>Students</h2>
            <xsl:apply-templates select = "class/*" />
         </body>
      </html>
   </xsl:template>

   <xsl:template match = "class/*">
      <xsl:apply-templates select = "@rollno" />
      <xsl:apply-templates select = "firstname" />
      <xsl:apply-templates select = "lastname" />
      <xsl:apply-templates select = "nickname" />
      <xsl:apply-templates select = "marks" />
      <br />
   </xsl:template>

   <xsl:template match = "@rollno">
      <span style = "font-size = 22px;">
         <xsl:value-of select = "." />
      </span>
      <br />
   </xsl:template>

   <xsl:template match = "firstname">
      First Name:<span style = "color:blue;">
         <xsl:value-of select = "." />
      </span>
      <br />
   </xsl:template>

   <xsl:template match = "lastname">
      Last Name:<span style = "color:green;">
         <xsl:value-of select = "." />
      </span>
      <br />
   </xsl:template>

   <xsl:template match = "nickname">
      Nick Name:<span style = "color:red;">
         <xsl:value-of select = "." />
      </span>
      <br />
   </xsl:template>

   <xsl:template match = "marks">
      Marks:<span style = "color:gray;">
         <xsl:value-of select = "." />
      </span>
      <br />
   </xsl:template>

</xsl:stylesheet>

Verify the output

Formatted Wild Card Output

XPath - Predicate

序号是指在方括号中书写的XPath表述。 它提到在某些条件下限制选定的节点。 例如,

S.No. Predicate & Description
1

选择属于班级要素的儿童的第一学生。

2

选择最后一个学生要素,即班级要素中的儿童。

3

4

a. 选择有标记的学生人数;85

Example

举例来说,每名学生都可以通过洗手,制作一张有细节内容的表格。 It calculates the position of the student node and then prints the student(s) details along with serial no.

students.xml

<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?>
<class>
   <student rollno = "393">
      <firstname>Dinkar</firstname>
      <lastname>Kad</lastname>
      <nickname>Dinkar</nickname>
      <marks>85</marks>
   </student>
   <student rollno = "493">
      <firstname>Vaneet</firstname>
      <lastname>Gupta</lastname>
      <nickname>Vinni</nickname>
      <marks>95</marks>
   </student>
   <student rollno = "593">
      <firstname>Jasvir</firstname>
      <lastname>Singh</lastname>
      <nickname>Jazz</nickname>
      <marks>90</marks>
   </student>
</class>

students.xsl

<?xml version = "1.0" encoding = "UTF-8"?>
<xsl:stylesheet version = "1.0"
   xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">  

   <xsl:template match = "/">
      <html>
         <body>
            <h2>Students</h2>
            <table border = "1">
               <tr bgcolor = "#9acd32">	 
                  <th>Roll No</th>
                  <th>First Name</th>
                  <th>Last Name</th>
                  <th>Nick Name</th>
                  <th>Marks</th>	  
               </tr&gt
					
               <xsl:for-each select = "/class/student[1]">
                  <tr>	 
                     <td><xsl:value-of select = "@rollno"/></td>
                     <td><xsl:value-of select = "firstname"/></td>
                     <td><xsl:value-of select = "lastname"/></td>
                     <td><xsl:value-of select = "nickname"/></td>
                     <td><xsl:value-of select = "marks"/></td>	 
                  </tr>	
               </xsl:for-each>
					
               <xsl:for-each select = "/class/student[last()]">
                  <tr>	 
                     <td><xsl:value-of select = "@rollno"/></td>
                     <td><xsl:value-of select = "firstname"/></td>
                     <td><xsl:value-of select = "lastname"/></td>
                     <td><xsl:value-of select = "nickname"/></td>
                     <td><xsl:value-of select = "marks"/></td>	 
                  </tr>	
               </xsl:for-each>
	
               <xsl:for-each select = "/class/student[@rollno = 493]">
                  <tr>	 
                     <td><xsl:value-of select = "@rollno"/></td>
                     <td><xsl:value-of select = "firstname"/></td>
                     <td><xsl:value-of select = "lastname"/></td>
                     <td><xsl:value-of select = "nickname"/></td>
                     <td><xsl:value-of select = "marks"/></td>	 
                  </tr>	
               </xsl:for-each>

               <xsl:for-each select = "/class/student[marks > 85]">
                  <tr>	 
                     <td><xsl:value-of select = "@rollno"/></td>
                     <td><xsl:value-of select = "firstname"/></td>
                     <td><xsl:value-of select = "lastname"/></td>
                     <td><xsl:value-of select = "nickname"/></td>
                     <td><xsl:value-of select = "marks"/></td>	 
                  </tr>	
               </xsl:for-each>
	
	
            </table>
  
         </body>
      </html>
   </xsl:template>
</xsl:stylesheet>

Verify the output

Formatted predicate Output Advertisements