XPointer

{{Short description|System for addressing components of XML-based Internet media}}

{{Infobox technology standard

| title = XPointer

| long_name = XPointer Framework

| native_name = XPointer Framework

| native_name_lang = en

| status = W3C Recommendation

| year_started = {{Start date and age|1997}}

| first_published = {{Start date and age|1997|04|06}}{{Cite web|url=https://www.w3.org/standards/history/xptr-framework|title=XPointer Framework Publication History - W3C|website=W3C|date=n.d.|access-date=2021-04-08}}{{Cite web|url=https://www.w3.org/TR/WD-xml-link-970406|title=Extensible Markup Language (XML): Part 2. Linking Version 1.0|date=1997-04-06|access-date=2021-04-08|website=W3C|collaboration=W3C SGML Activity|editor-first1=Tim|editor-last1=Bray|editor-first2=Steve|editor-last2=DeRose}}

| version = XPointer Framework Recommendation{{cite web|title=XPointer Framework|url=http://www.w3.org/TR/2003/REC-xptr-framework-20030325/|publication-date=2003-03-25|access-date=2021-04-08|publisher=W3C|website=W3C|collaboration=W3C XML Linking Working Group|editor-first1=Paul|editor-last1=Grosso|editor-first2=Eve|editor-last2=Maler|editor-first3=Jonathan|editor-last3=Marsh|editor-first4=Norman|editor-last4=Walsh}}

| version_date = {{Start date and age|2003|03|25}}

| organization = W3C

| committee = W3C XML Linking Working Group{{Cite web|url=https://www.w3.org/XML/Linking|archive-url=https://web.archive.org/web/20210325053819/https://www.w3.org/XML/Linking|archive-date=2021-03-25|title=W3C XML Pointer, XML Base and XML Linking|website=W3C|date=2000|access-date=2021-04-08}}

| editors = {{Plainlist|

  • Paul Grosso
  • Eve Maler
  • Jonathan Marsh
  • Norman Walsh

}}

| authors =

| base_standards = XML, XPath

| related_standards =

| abbreviation =

| domain =

| license =

| website = {{URL|https://www.w3.org/TR/xptr-framework/}}

}}

XPointer is a system for addressing components of XML-based Internet media. It is divided among four specifications: a "framework" that forms the basis for identifying XML fragments, a positional element addressing scheme, a scheme for namespaces, and a scheme for XPath-based addressing. XPointer Framework is a W3C recommendation since March 2003.{{cite web|url=http://www.dblab.ntua.gr/~bikakis/XML%20and%20Semantic%20Web%20W3C%20Standards%20Timeline-History.pdf|url-status=dead|archive-url=https://web.archive.org/web/20191026052918/http://www.dblab.ntua.gr/~bikakis/XML%20and%20Semantic%20Web%20W3C%20Standards%20Timeline-History.pdf|archive-format=PDF|archive-date=2019-10-26|access-date=2021-04-08|title=The XML and Semantic Web Worlds: Technologies, Interoperability and Integration. A survey of the State of the Art|author1=Bikakis N.|author2=Tsinaraki C.|author3=Gioldasis N.|author4=Stavrakantonakis I.|author5=Christodoulakis S.}}

The XPointer language is designed to address structural aspects of XML, including text content and other information objects created as a result of parsing the document. Thus, it could be used to point to a section of a document highlighted by a user through a mouse drag action.

During development, and until 2016, XPointer was covered by a royalty-free technology patent held by Sun Microsystems.{{cite web|url=http://www.w3.org/2002/06/xptr_IPR_summary.html|title=XPointer Patent Statements|website=www.w3.org|date=2002-06-10|access-date=2021-04-08|author-first=Ron|author-last=Daniel}}

Positional element addressing

The element() scheme{{Cite web|url=https://www.w3.org/TR/xptr-element/|title=XPointer element() Scheme|publication-date=2003-03-23|access-date=2021-04-08|collaboration=W3C XML Linking Working Group|website=W3C|publisher=W3C|editor-first1=Paul|editor-last1=Grosso|editor-first2=Eve|editor-last2=Maler|editor-first3=Jonathan|editor-last3=Marsh|editor-first4=Norman|editor-last4=Walsh}} introduces positional addressing of child elements. This is similar to a simple XPath address, but subsequent steps can only be numbers representing the position of a descendant relative to its branch on the tree.

For instance, given the following fragment:

results as the following examples:

xpointer(id("foo")) => foobar

xpointer(/foobar/1) => bar

xpointer(//bom) => bom (a=1), bom (a=2)

element(/1/2/1) => bom (a=1) (/1 descend into first element (foobar),

/2 descend into second child element (baz),

/1 select first child element (bom))

See also

References

{{reflist}}