Când specificați o cale cu XPath, există momente în care veți fi deja „în” un nod. Dar alteori, veți dori să selectați nodurile pornind de la nodul rădăcină. XPath vă permite să faceți ambele. Dacă ați lucrat vreodată cu site-uri web în HTML, funcționează în același mod ca referirea la alte fișiere din hiperlinkuri HTML. În HTML, puteți specifica o cale absolută pentru hiperlink, descriind unde se află o altă pagină cu numele serverului, folderele și numele fișierului, toate în URL. Sau, dacă vă referiți la un alt fișier de pe același site, nu trebuie să introduceți numele serverului sau toate informațiile despre cale. Aceasta se numește o cale relativă. Conceptul poate fi aplicat în mod similar în XPath.
Puteți observa diferența dacă există un caracter „/” la începutul expresiei XPath. Dacă da, calea este specificată de la rădăcină, ceea ce o face o cale absolută. Dar dacă nu există „/” la începutul căii, specificați o cale relativă, care descrie unde sunt celelalte noduri în raport cu nodul context sau nodul pentru care se face următorul pas.
Mai jos este o foaie de stil XSL (Expunerea 9.3) pentru a fi utilizată cu fișierul nostru tree.xml de mai sus (Exhibit 9.2).
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<!-- Example of an absolute link. The element '/child::trunk'
is being specified from the root element. -->
<xsl:template match="/child::trunk">
<html>
<head>
<title>XPath Tree Tests</title>
</head>
<body>
<!-- Example of a relative link. The <for-each> xsl statement will
execute for every <bigBranch> node in the
‘current’ node, which is the <trunk>node. -->
<xsl:for-each select="child::bigBranch">
<xsl:call-template name="print_out" />
</xsl:for-each>
</body>
</html>
</xsl:template>
<xsl:template name="print_out">
<xsl:value-of select="attribute::name" /> <br />
</xsl:template>
</xsl:stylesheet>
Expunerea 9.3: xsl_tree.xsl – Exemplu atât de cale relativă, cât și de cale absolută
(Include texte din Wikibooks traduse și adaptate de Nicolae Sfetcu)
Lasă un răspuns