James Clark (programmer)

From Wikipedia, the free encyclopedia

James Clark
James Jackson Clark

(1964-02-23) 23 February 1964 (age 60)
EducationCharterhouse School
Alma materUniversity of Oxford (BA)
Known for
SpouseJoy Chanpen
FamilySainsbury family
AwardsXML Cup (2001)[1]
Scientific career
InstitutionsThai Open Source Software Center
Websitewww.jclark.com Edit this at Wikidata

James Clark (born ) is a software engineer and creator of various open-source software including groff, expat and several XML specifications.[1][3][4][5]

Education and early life[edit]

Clark was born in London and educated at Charterhouse School and Merton College, Oxford where he studied Mathematics and Philosophy.[1]


Clark has lived in Bangkok, Thailand since , and is permanent Thai resident. He owns a company called Thai Open Source Software Center, which provides him a legal framework for his open-source activities. Clark is the author and creator of groff, as well as an XML editing mode for GNU Emacs.

Work on XML[edit]

Clark served as technical lead of the working group that developed XML—notably contributing the self-closing, empty element tag syntax, and the name XML. His contributions to XML are cited in dozens of books on the subject.[citation needed] Clark is the author or co-author of a number of influential specifications and implementations, including:

  • DSSSL: An SGML transformation and styling language.
  • Expat: An open-source XML parser.
  • XSLT: XSL Transformations, a part of the XSL family. He was the editor of the XSLT 1.0 specification.
  • XPath: Path language for addressing XML documents; used by XSLT but also as a free-standing language. He was the editor of the XPath 1.0 specification.
  • TREX: Tree regular experessions for XML (TREX) is a schema language for XML.[6] TREX has been merged with RELAX to create RELAX NG.[6][7]
  • RELAX NG: an XML Schema language, with both an explicit XML syntax and a compact syntax. Clark was critical of the XML Schema (W3C) language (also known as XSD)[8] and developed RELAX NG in response
  • Jing: An implementation of RELAX NG.[9]
  • Clark Notation: A way to express an XML Name in a compact way[10]
  • Ballerina: Ballerina is an open source general-purpose programming language for application programmers.

Clark is listed as a member of the working group that developed the Java Stream processing API for XML (StAX) JSR 173 at the JCP.[11]

Software Industry Promotion Agency (SIPA)[edit]

From until late , Clark worked for Thailand's Software Industry Promotion Agency (SIPA), to promote open source technologies and open standards in the country. This work included pushing the Thai localization of OpenOffice.org office suite and the Mozilla Firefox web browser, along with other open source software packages.

Other projects at SIPA include:

  • Chantra: An open source Thai project with programs for Windows, like the OpenCD project.
  • Suriyan GNU/Linux: A user-friendly "instant server" system for small and medium-sized companies[12] not to be confused with SIPA's new, unrelated project with a similar name, Suriyan Linux Live CD.[13]


  1. ^ a b c Clark, James (2020). "James Clark Biography". jclark.com. Archived from the original on 24 July 2020.
  2. ^ Anon (2020). "WSO2 Team". wso2.com.
  3. ^ Clark, James (2020). "James Clark's Random Thoughts". blog.jclark.com.
  4. ^ Clark, James (1 July 2001). "A Triumph of Simplicity: James Clark on Markup Languages and XML". Dr. Dobb's Journal (Interview). Interviewed by Kim, Eugene Eric. Archived from the original on 24 February 2002.
  5. ^ James Clark on Twitter Edit this at Wikidata
  6. ^ a b Jones, Christopher A.; Drake, Fred L.; Drake, Fred L. Jr. (2002). Python and XML. "O'Reilly Media, Inc.". p. 21. ISBN 9780596001285.
  7. ^ Cover, Robin. "Tree Regular Expressions for XML (TREX)". xml.coverpages.org. Retrieved 6 March 2019.
  8. ^ "Schema Wars: XML Schema vs. RELAX NG". webreference.com. Archived from the original on 4 March 2019. Retrieved 11 May 2019.
  9. ^ "Jing". relaxng.org.
  10. ^ Clark, James. "XML Namespaces". jclark.com. Retrieved 17 September 2015.
  11. ^ "The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 173". jcp.org.
  12. ^ "Default OaO Sedo Frameset". suriyan.org.
  13. ^ "Suriyan Linux Live CD". 11 February 2008. Archived from the original on 11 February 2008.