XML Prague 2005 EXSLT

21
EXSLT Facilitating the Standards Process

description

about EXSLT what we did right / wrong

Transcript of XML Prague 2005 EXSLT

Page 1: XML Prague 2005 EXSLT

EXSLT

Facilitating the Standards Process

Page 2: XML Prague 2005 EXSLT

Overview

• Jim Fuller ([email protected])• Problem: Year 2000, portability, functionality in

XSLT• Solution: EXSLT• Where we got it right/wrong• Benefit• Open Source Specification• Future for EXSLT

Page 3: XML Prague 2005 EXSLT

Problem in XSLT, around the Year 2000

• XSLT 1.0 processors were implementing extension functionality

• XSLT becoming dependent on underlying processor

• Reduced compatibility

• Other problems: XSLT was limited, basic usage was being hampered by RTF

Page 4: XML Prague 2005 EXSLT

Solution: Extensions for XSLT

• March 2001, Dr. Tennison and small subset of community went about defining EXSLT

• EXSLT defines functions grouped into modules• Where possible we created implementations either

in pure XSLT 1.0 or using javascript• Created documentation to assist users and

implementators• It was hoped that XSLT processor implementators

would create native implementations

Page 5: XML Prague 2005 EXSLT

EXSLT Modules

• Common: Dramatically simplified stylesheets through providing a node-set(), object-type(), and document() (as per XSLT 1.1) function definitions

• Date and Time: A full range of date and time handling functions.• Dynamic: Enables dynamic evaluation of XPATH• Sets: Encapsulated functions which make it easy to perform set type

operations on XML.• Functions: Enabled the creation of functions• Math: Enables basic math operations within XSLT• Random: Added facilities to generate random numbers• Regular Expressions: Enabled regular expression handling• Strings: Contains string handling functions such as tokenize() and

find() / replace().

Page 6: XML Prague 2005 EXSLT

EXSLT Implementations

• Saxon

• 4suite

• Libxslt

• Xalan

• EXSLT.NET (now in Mvp.Xml)

• sablotron

Page 7: XML Prague 2005 EXSLT

Where we got it wrong

• No one uses Function module

• Didn’t follow Software development practices

• Module and function level imports fundamentally broken

Page 8: XML Prague 2005 EXSLT

Function Module

• Underestimated the power of templates

• Lots of energy went into the discussion

• Originally intended to provide an EXSLT Function implementation of every extension

Page 9: XML Prague 2005 EXSLT

Lack of Rigor

• Placing EXSLT with sourceforge would have been smart from the beginning

• Heavyweight XML markup allowed us to ‘get away’ with standard software development practice

• Having no continuous integration or source control in place, very bad and paying the price today

Page 10: XML Prague 2005 EXSLT

Import XSLT

• Importing was ‘broken’…was no easy way for users to use module level imports

• Due to the fact of importing all implementations e.g. if msxsl:script element was encountered by XSLT processor that didn’t understand the element….

Page 11: XML Prague 2005 EXSLT

Other Nagging Issues

• Interdependencies

• Function Submission process

• Missed opportunities

• Licensing

• Namespaces

Page 12: XML Prague 2005 EXSLT

Getting things right

• Catering to users, implementators and eventually specification

• Having individuals like Jeni Tennison and Michael Kay involved

• Extensive documentation

• Inclusion of use cases

Page 13: XML Prague 2005 EXSLT

Lessons Learned managing a large XML distribution

• Large XML distributions benefit from the re-use of existing markup/vocabularies like RDF and Dublin Core

• Just because its markup doesn’t mean ‘give up software development practices’!

• RDF made revision easy everywhere• Didn’t need typing / XML Schema…though next

time around…

Page 14: XML Prague 2005 EXSLT

Some Ruminations

• EXSLT was created by the entire XML community

• As with success on software projects, having individuals who are highly experienced and skilled has a major impact (Jeni Tennison, Uche O., Michael Kay)

• Synchronicity with XSLT UK 2001

Page 15: XML Prague 2005 EXSLT

EXSLT informed XSLT 2.0

• Working with RTF

• XSLT is not a programming language

• Abstracted complex XSLT (grouping)

• Multiple Documents

• String Handling

• Evaluating XPATH?

Page 16: XML Prague 2005 EXSLT

EXSLT informed XSLT 2.0

• Working with Result Tree Fragments

• XSLT is not a programming language

• Abstracted complex XSLT

• Outputting Multiple Documents

• String Handling

• Evaluating XPATH ???

Page 17: XML Prague 2005 EXSLT

Benefits to XSLT 2.0

• Allowed XSLT 2.0 to take a bit longer

• Provided W3C Working Group with real world evidence (e.g. XSLT 2.0 functions are not 1st class)

• XSLT 2.0 and the suite of linked specifications puts EXSLT as we know it ‘out of business’

Page 18: XML Prague 2005 EXSLT

EXSLT Future

• EXSLT as a specification has done its job and should die a ‘natural death’

• XSLT 1.0 usage will peak, which is why I have submitted a complete build based on Ant which generates site document, platform specific module imports, and reports on XSLT processor compatibility; up to the rest of the EXSLT gang to review

• Possible XSLT 2.0 function library?• Does EXSLT have application beyond XSLT ?

Page 19: XML Prague 2005 EXSLT

Facilitation

• EXSLT came from the whole XSLT community• EXSLT was a ‘bridge’ between groups like the

W3C and the community• EXSLT goals were constrained and focused on

what was important rather then ‘completeness’• Why are there not more of these style efforts

bridging the ‘problem gap’ e.g. etc..

Page 20: XML Prague 2005 EXSLT

Open Source Specification

• Micah Dubinko recent open letter to WHATWG illustrates the point

• Are there tools that can help us (developers)?

• working on schema enabled wiki with annotation

Page 21: XML Prague 2005 EXSLT

Conclusion

• Suggestions…use cases, informal spec review, early implementation

• Linking in XML, XML Schema, Xform, WS*, Binary XML, What to do with XML Namespaces….

• Thank you