• Login/Register
  • Section: Internet /Monday 13th October 2014

    Alphabetic Index : A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

    Search β):

    * XPath *

    اکس‌پت


    Iranian_Flag_Hand_Love_Heart.jpg
    (Wikipedia) - XPath
    This article has an unclear citation style. The references used may be made clearer with a different or consistent style of citation, footnoting, or external linking. Violates Wikipedia:External links: "Wikipedia articles may include links to web pages outside Wikipedia (external links), but they should not normally be used in the body of an article.". (March 2014)
    This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed. (August 2010)
    XPath Paradigm(s) Developer Appeared in Stable release Major implementations Influenced by Influenced
    Query language
    W3C
    1999
    2.0 / 2007-01-23
    C#, Java, JavaScript
    XSLT, XPointer
    XML Schema, XForms

    XPath, the XML Path Language, is a query language for selecting nodes from an XML document. In addition, XPath may be used to compute values (e.g., strings, numbers, or Boolean values) from the content of an XML document. XPath was defined by the World Wide Web Consortium (W3C).

    Contents

    Overview

    The XPath language is based on a tree representation of the XML document, and provides the ability to navigate around the tree, selecting nodes by a variety of criteria. In popular use (though not in the official specification), an XPath expression is often referred to simply as "an XPath".

    Originally motivated by a desire to provide a common syntax and behavior model between XPointer and XSLT, subsets of the XPath query language are used in other W3C specifications such as XML Schema, XForms and the Internationalization Tag Set (ITS).

    XPath has been adopted by a number of XML processing libraries and tools, many of which also offer CSS Selectors, another W3C standard, as a simpler alternative to XPath.

    Versions

    There are currently three versions of XPath in use. The latest version of the language (as of 10 April 2014) is 3.0, but XPath 1.0 is the version that is most widely available.

    XPath expression applied to an XML fileSyntax and semantics (XPath 1.0)

    The most important kind of expression in XPath is a location path. A location path consists of a sequence of location steps. Each location step has three components:

    An XPath expression is evaluated with respect to a context node. An Axis Specifier such as ''child'' or ''descendant'' specifies the direction to navigate from the context node. The node test and the predicate are used to filter the nodes specified by the axis specifier: For example the node test ''A'' requires that all nodes navigated to must have label ''A''. A predicate can be used to specify that the selected nodes have certain properties, which are specified by XPath expressions themselves.

    The XPath syntax comes in two flavours: the abbreviated syntax, is more compact and allows XPaths to be written and read easily using intuitive and, in many cases, familiar characters and constructs. The full syntax is more verbose, but allows for more options to be specified, and is more descriptive if read carefully.

    Abbreviated syntax

    The compact notation allows many defaults and abbreviations for common cases. Given source XML containing at least

    <A> <B> <C/> </B> </A>

    the simplest XPath takes a form such as

    which selects C elements that are children of B elements that are children of the A element that forms the outermost element of the XML document. The XPath syntax is designed to mimic URI (Uniform Resource Identifier) and Unix-style file path syntax.

    More complex expressions can be constructed by specifying an axis other than the default ''child'' axis, a node test other than a simple name, or predicates, which can be written in square brackets after any step. For example, the expression

    selects the first child (''*''), whatever its name, of every B element that itself is a child or other, deeper descendant (''//'') of an A element that is a child of the current context node (the expression does not begin with a ''/''). Note that the predicate binds more tightly than the / operator. To select the first node selected by the expression A//B/*, write (A//B/*).

    Expanded syntax

    In the full, unabbreviated syntax, the two examples above would be written

    Here, in each step of the XPath, the axis (e.g. child or descendant-or-self) is explicitly specified, followed by :: and then the node test, such as A or node() in the examples above.

    Axis specifiers

    Axis specifiers indicate navigation direction within the tree representation of the XML document. The axes available are:

    Full Syntax Abbreviated Syntax Notes
    ancestor
    ancestor-or-self
    attribute @ @abc is short for attribute::abc
    child xyz is short for child::xyz
    descendant
    descendant-or-self // // is short for /descendant-or-self::node()/
    following
    following-sibling
    namespace
    parent .. .. is short for parent::node()
    preceding
    preceding-sibling
    self . . is short for self::node()

    As an example of using the attribute axis in abbreviated syntax, //a/@href selects the attribute called href in a elements anywhere in the document tree. The expression . (an abbreviation for self::node()) is most commonly used within a predicate to refer to the currently selected node. For example, h3 selects an element called h3 in the current context, whose text content is See also.

    Node tests

    Node tests may consist of specific node names or more general expressions. In the case of an XML document in which the namespace prefix gs has been defined, //gs:enquiry will find all the enquiry elements in that namespace, and //gs:* will find all elements, regardless of local name, in that namespace.

    Other node test formats are:

    comment()  finds an XML comment node, e.g. <!-- Comment --> text()  finds a node of type text, e.g. the hello world in <k>hello<m> world</m></k> processing-instruction()  finds XML processing instructions such as <?php echo $a; ?>. In this case, processing-instruction(''php'') would match. node()  finds any node at all.Predicates

    Predicates, written as expressions in square brackets, can be used to restrict a node-set to select only those nodes for which some condition is true. For example a will select those a elements (among the children of the context node) having an href attribute whose value is help.php.

    There is no limit to the number of predicates in a step, and they need not be confined to the last step in an XPath. They can also be nested to any depth. Paths specified in predicates begin at the context of the current step (i.e. that of the immediately preceding node test) and do not alter that context. All predicates must be satisfied for a match to occur.

    When the value of the predicate is numeric, it is interpreted as a test on the position of the node. So p selects the first p element child, while p selects the last.

    In other cases, the value of the predicate is automatically converted to a boolean. When the predicate evaluates to a node-set, the result is true when the node-set is non-empty. Thus p selects those p elements that have an attribute named x.

    A more complex example: the expression a/@target selects the value of the target attribute of the first a element among the children of the context node that has its href attribute set to help.php, provided the document''s html top-level element also has a lang attribute set to en. The reference to an attribute of the top-level element in the first predicate affects neither the context of other predicates nor that of the location step itself.

    Predicate order is significant if predicates test the position of a node. Each predicate ''filters'' a location step''s selected node-set in turn. So a will find a match only if the first a child of the context node satisfies the condition @href=''help.php'', while a will find the first a child that satisfies this condition.

    Functions and operators

    XPath 1.0 defines four data types: node-sets (sets of nodes with no intrinsic order), strings, numbers and booleans.

    The available operators are:

    The function library includes:

    Some of the more commonly useful functions are detailed below. For a complete description, see the W3C Recommendation document

    Node set functionsposition()  returns a number representing the position of this node in the sequence of nodes currently being processed (for example, the nodes selected by an xsl:for-each instruction in XSLT). count(node-set)  returns the number of nodes in the node-set supplied as its argument.String functionsstring(object?)  converts any of the four XPath data types into a string according to built-in rules. If the value of the argument is a node-set, the function returns the string-value of the first node in document order, ignoring any further nodes. concat(string, string, string*)  concatenates two or more strings starts-with(s1, s2)  returns true if s1 starts with s2 contains(s1, s2)  returns true if s1 contains s2 substring(string, start, length?)  example: substring("ABCDEF",2,3) returns "BCD". substring-before(s1, s2)  example: substring-before("1999/04/01","/") returns 1999 substring-after(s1, s2)  example: substring-after("1999/04/01","/") returns 04/01 string-length(string?)  returns number of characters in string normalize-space(string?)  all leading and trailing whitespace is removed and any sequences of whitespace characters are replaced by a single space. This is very useful when the original XML may have been prettyprint formatted, which could make further string processing unreliable.Boolean functionsnot(boolean)  negates any boolean expression.true()  evaluates to true.false()  evaluates to false.Number functionssum(node-set)  converts the string values of all the nodes found by the XPath argument into numbers, according to the built-in casting rules, then returns the sum of these numbers.Usage examples

    Expressions can be created inside predicates using the operators: =, !=, <=, <, >= and >. Boolean expressions may be combined with brackets () and the boolean operators and and or as well as the not() function described above. Numeric calculations can use *, +, -, div and mod. Strings can consist of any Unicode characters.

    //item selects items whose price attribute is greater than twice the numeric value of their discount attribute.

    Entire node-sets can be combined (''unioned'') using the vertical bar character |. Node sets that meet one or more of several conditions can be found by combining the conditions inside a predicate with ''or''.

    v | w will return a single node-set consisting of all the v elements that have x or y child-elements, as well as all the w elements that have z child-elements, that were found in the current context.

    Syntax and semantics (XPath 2.0) Main article: XPath 2.0 Examples

    Given a sample XML document

    <?xml version="1.0" encoding="utf-8"?> <wikimedia> <projects> <project name="Wikipedia" launch="2001-01-05"> <editions> <edition language="English">en.wikipedia.org</edition> <edition language="German">de.wikipedia.org</edition> <edition language="French">fr.wikipedia.org</edition> <edition language="Polish">pl.wikipedia.org</edition> <edition language="Spanish">es.wikipedia.org</edition> </editions> </project> <project name="Wiktionary" launch="2002-12-12"> <editions> <edition language="English">en.wiktionary.org</edition> <edition language="French">fr.wiktionary.org</edition> <edition language="Vietnamese">vi.wiktionary.org</edition> <edition language="Turkish">tr.wiktionary.org</edition> <edition language="Spanish">es.wiktionary.org</edition> </editions> </project> </projects> </wikimedia>

    The XPath expression

    /wikimedia/projects/project/@name

    selects name attributes for all projects, and

    /wikimedia//editions

    selects all editions of all projects, and

    /wikimedia/projects/project/editions/edition/text()

    selects addresses of all English Wikimedia projects (text of all edition elements where language attribute is equal to English). And the following

    /wikimedia/projects/project/editions/edition/text()

    selects addresses of all Wikipedias (text of all edition elements that exist under project element with a name attribute of Wikipedia)

    ImplementationsCommand-line toolsActionScriptC/C++DelphiImplementations for database enginesJava

    The Java package javax.xml.xpath has been part of Java standard edition since Java 5. Technically this is an XPath API rather than an XPath implementation, and it allows the programmer the ability to select a specific implementation that conforms to the interface.

    JavaScript.NET FrameworkPerlPHPPythonRubySchemeSQLTcl Use in schema languages

    XPath is increasingly used to express constraints in schema languages for XML.

    Tags:Data, French, German, ISO, Java, MySQL, PHP, Polish, Turkish, Wikipedia, World Wide Web, World Wide Web Consortium, XML, XPath, XQuery, XSLT


    Failed to connect to MySQL 1: Access denied for user 'foumanu'@'localhost' (using password: YES)