Tue Mar 14 20:51:06 2006 Quick Reference Card for XML (and related) technologies Introduction NEWS for German Users: Source code for the AxKit tutorial at the 7th German Perl-Workshop will shortly be available here. This quick reference lists all important XML technologies along with the associated namespace URIs and either a short summary of the syntax, or a link to a more comprehensive reference. For most of the summaries, it is expected that you have read the relevant standards or documentation and still roughly recall how it works. If you don't, there is also a link to the relevant standard or a good tutorial to get you started. Be aware, though, that the Author of this page is a hardcore W3C standards reader, don't expect easy lecture :-) This page also contains non-XML, but related technologies (HTTP, REST, URI). Table of Contents Meta "Introduction" "Table of Contents" "Call for Participation" "Syntactical Conventions" "ChangeLog" Core Technologies XML : Overview (with reference) , Standard , Namespace , Reference XML Base : Overview (with reference) , Standard , Namespace XInclude : Overview (with reference) , Standard , Namespace DOM : Overview , Standard , Reference Common Applications of XML XHTML : Overview , Standard , Namespace , Reference XSLT : Overview , Standard , Namespace , Reference EXSLT : Overview (with reference) , Standard , Namespace SVG : Overview , Standard , Namespace , Reference MathML : Overview , Standard , Namespace , Reference XForms : Overview , Standard , Namespace , Reference RDF/RSS : Overview (with reference) , Standard , Namespace , Reference Links and Queries XLink : Overview (with reference) , Standard , Namespace , Reference XPointer : Overview (with reference) , Standard , Reference XUpdate : Overview (with reference) , Standard , Namespace XQuery : Overview , Standard , Namespace Schemas and Validation Relax NG : Overview , Standard , Namespace , Reference Schematron : Overview , Standard , Namespace , Reference XML Schema : Overview , Standard , Namespace , Reference Networking REST : Overview , Standard , Reference XML-RPC : Overview , Standard SOAP : Overview , Reference Related Technologies HTTP : Overview , Standard URI/URL/URN : Overview , Standard Apache : Overview , Reference JavaScript : Overview , Standard , Reference Call for Participation Please, help out by adding any tutorials or references you find (though it will be hard to find better references that zvon.org's). If a particular standard is small, consider writing a quick reference. You should look at "XUpdate" for a medium-sized example of what the original author considers "enough information". If you plan to add more standards, please think about the practical usability: This page is aimed at AxKit developers who do not neccessarily follow the latest hyped standard. In particular, many distrust XML Schema and like the KISS (Keep it simple, stupid) principle. Having REST and Schematron listed here is a tribute to that attitude, while SOAP and XML Schema are listed more for the sake of completeness. At the end is a "ChangeLog" . Please note any significant changes (not corrected typos or fixing broken links) there. Syntactical Conventions Each entry lists several URIs. These have the following meaning: Standard: The authoritative standards document Tutorial: A tutorial for the unintiated, usually not going too much in depth Namespace URI: The namespace URI, if applicable Reference: A link to an online reference, for the larger standards After this section, the actual reference follows. It usually lists the possible elements/functions/attributes/whatever in some pseudo-document-fragments. Optional stuff is set in italics , stuff you must fill in is written like {$this} . If there are multiple exclusive choices, they are written like {'this'|'that'} , while multiple cumulative choices are written like {'this'/'that'} . Attributes that have been mentioned before are not repeated but just listed, separated with commas. XML Standard: XML 1.0 W3C Recommendation (Second Edition), 2002-10-06 Tutorial: XML Tutorial at w3schools.com , DTD Tutorial at w3schools.com Namespace: http://www.w3.org/XML/1998/namespace Reference: Mulberry Technologies' XML Quick Reference (PDF) Attributes xml:space=" {'default'|'preserve'} " xml:lang=" {$iso-2-letter-language-code} " XML Base Standard: XML Base W3C Recommendation, 2001-06-27 Tutorial: none available Namespace: http://www.w3.org/XML/1998/namespace Reference: none available Attributes xml:base=" {$url} " XInclude Standard: XInclude 1.0 W3C Candidate Recommendation, 2002-10-17 Tutorial: none available Namespace: http://www.w3.org/2001/XInclude Reference: none available Elements <xi:include href=" {$url-with-optional-fragment-in-xpointer-syntax} " parse=" {'xml'|'text'} " encoding=" {$encoding-name} " > <xi:fallback> {$content-for-when-url-cant-be-retrieved} </xi:fallback> </xi:include> XHTML Standard: XHTML 1.0 W3C Recommendation (Second Edition), 2002-08-01 , HTML 4.01 W3C Recommendation 1999-12-24 , CSS 2.1 W3C Working Draft 2003-01-28 Tutorial: XHTML Tutorial at w3schools.com Namespace: http://www.w3.org/1999/xhtml Reference: XHTML Reference at zvon.org , CSS2 Reference at zvon.org XSLT Standard: XSLT 1.0 W3C Recommendation, 1999-11-16 , XPath 1.0 W3C Recommendation 1999-11-16 Tutorial: XSLT Tutorial at w3schools.com , the definite XSL FAQ/Code Collection/Intro Namespace: http://www.w3.org/1999/XSL/Transform Reference: XSLT Reference at zvon.org , Mulberry Technologies' XSLT and XPath Quick Reference (PDF) EXSLT Standard: EXSLT Website Tutorial: none available Namespace: various, see below Reference: EXSLT Website Note: Functions and elements in bold face are declared stable and available on all EXSLT processors supporting the associated group. Functions not supported by libxslt are noted as such, as are functions available through extension stylesheets. Common - http://exslt.org/common Functions: $nodeset = exsl:node-set( $anything ) $string = exsl:object-type( $anything ) Elements: <exsl:document href=" {$uri} " method=" {'xml'|'html'|'text'|$others} " version=" {$version} " encoding=" {$encoding} " omit-xml-declaration=" {'yes'|'no'} " standalone=" {'yes'|'no'} " doctype-public=" {$publicid} " doctype-system=" {$systemid} " cdata-section-elements=" {$list} " indent=" {'yes'|'no'} " media-type=" {$type} " > {$content-of-document} </exsl:document> Dates And Times - http://exslt.org/dates-and-times Notes: $datetime is an ISO 8601 Date/Time string, or one of the XML Schema xs:dateTime strings. These forms are possible: CCYY - MM - DD T hh : mm : ss , CCYY - MM - DD , CCYY - MM , CCYY , hh : mm : ss . $duration is an xs:duration string, which is basically P n Y n M n DT n H n M n S , for example: P1M , -P1D , PT30S , P1Y0M1DT0M0H0S . $template is like in Java 1.1: y =year, M =month, d =day of month, H =hour(0-23), m =minute, s =second, S =millisecond, z =timezone, E =weekday, a =am/pm, h =hour(1-12), G =AD/BC; more letters == longer format: MM =08, MMM =Aug, MMMM =August. Functions: $datetime = date:date-time() $date = date:date( $datetime ) $time = date:time( $datetime ) $year = date:year( $datetime ) $boolean = date:leap-year( $datetime ) $number = date:month-in-year( $datetime ) $name = date:month-name( $datetime ) $name = date:month-abbreviation( $datetime ) $number = date:week-in-year( $datetime ) $number = date:week-in-month( $datetime ) $number = date:day-in-year( $datetime ) $number = date:day-in-month( $datetime ) $number = date:day-of-week-in-month( $datetime ) $number = date:day-in-week( $datetime ) $name = date:day-name( $datetime ) $name = date:day-abbreviation( $datetime ) $number = date:hour-in-day( $datetime ) $number = date:minute-in-hour( $datetime ) $number = date:second-in-minute( $datetime ) $number = date:seconds( $datetime-or-duration ) $datetime = date:add( $datetime , $duration ) $duration = date:add-duration( $duration , $duration ) $duration = date:duration( $seconds ) $string = date:format-date( $datetime , $template ) not in libxslt, available as extension stylesheet $datetime = date:parse-date( $datetime , $template ) not in libxslt $duration = date:sum( $nodeset-of-durations ) not in libxslt Elements: <date:date-format name=" {$name} " calendar=" {'gregorian'|$calendarname} " lang=" {$iso-2letter-language} " first-day-of-week=" {'monday'|'tuesday'|...|'sunday'} " /> not in libxslt Dynamic - http://exslt.org/dynamic Functions: $anything = dyn:evaluate( $xpath-expression ) $number = dyn:min( $nodeset , $xpath-expression ) not in libxslt $number = dyn:max( $nodeset , $xpath-expression ) not in libxslt $number = dyn:map( $nodeset , $xpath-expression ) not in libxslt $nodeset = dyn:map( $nodeset , $xpath-expression ) not in libxslt $transitive-closure-nodeset = dyn:closure( $nodeset , $xpath-expression ) not in libxslt Functions - http://exslt.org/functions Elements: <func:function name=" {$qname} " {$param-declarations} {$content-with-result} </func:function>> <func:result select=" {$xpath-expression} " > {$content} </func:function> <func:script implements-prefix=" {$bound-prefix} " language=" {$lang-name} " src=" {$uri} " archive=" {$uri} " /> not in libxslt Math - http://exslt.org/math Functions: $number = math:min( $nodeset ) $number = math:max( $nodeset ) $nodeset = math:highest( $nodeset ) $nodeset = math:lowest( $nodeset ) $number = math:constant( {'PI'|'E'|'SQRRT2'|'LN2'|'LN10'|'LOG2E'|'SQRT1_2'} , $precision ) $number = math:random() $number = math:abs( $number ) $number = math:sqrt( $number ) $number = math:power( $number ) $number = math:log( $number ) $number = math:exp( $number ) $number = math:sin( $number ) $number = math:cos( $number ) $number = math:tan( $number ) $number = math:asin( $number ) $number = math:acos( $number ) $number = math:atan( $number ) $number = math:atan2( $number ) Regular Expressions - http://exslt.org/regular-expressions Functions: $boolean = regexp:test( $string , $pcre , {'g'/'i'} ) not in libxslt $nodeset = regexp:match( $string , $pcre , {'g'/'i'} ) not in libxslt $result = regexp:replace( $string , $pcre , {'g'/'i'} , $replacement ) not in libxslt Sets - http://exslt.org/sets Functions: $nodeset = set:difference( $base-nodeset , $subtraced-nodeset ) $nodeset = set:intersection( $nodeset , $nodeset ) $nodeset = set:distinct( $nodeset ) $boolean = set:has-same-node( $nodeset , $nodeset ) $prefix-nodeset = set:leading( $nodeset , $contained-node ) $postfix-nodeset = set:trailing( $nodeset , $contained-node ) Strings - http://exslt.org/strings Functions: $nodeset = str:tokenize( $string , $separator-chars ) $result = str:replace( $string , $list-of-matches , $list-of-replacements ) not in libxslt, available as extension stylesheet $string = str:padding( $char-length , $string-to-repeat )