BaseElements and FileMaker Pro 11
We're excited by the new release of FileMaker Pro 11 and looking forward to developing solutions in it and updating our products for it.
Up until this point, we've had a new release of BaseElements available the same week as the updates to FileMaker. We've always up to this point been able to integrate support for the new features in each version as the core base of the FileMaker XML/XSLT engine hasn't changed much.
However we're very excited to find that in FileMaker 11 the XML/XSLT engine has been updated to a newer version. However the change has also meant some of the features we were relying on working in certain ways no longer work the same. So not only does BaseElements need to be updated to support the new features, it also needs to be modified to continue working with the changes to the XSLT engine.
FileMaker 11 Compatibility
With BaseElements version 2.6.5 we've added a warning that you're using FileMaker 11. BaseElements, running under FileMaker 11 will import the xslt without error. However, not all of the references to objects will work. Objects such as calculations, script steps, objects and menu items don't pick up accurate internal ids and so the reference counts will be inaccurate and won't reference these items correctly.
Also note that if you have used any new FileMaker 11 features in your solution, then these won't be included in the data imported into BaseElements regardless of which version of FileMaker that BaseElements is running under.
So to answer some questions more directly :
Can I start using v11 if I use BaseElements ?
Yes, but with caveats, see below.
Can I generate the DDR using v11 ?
Yes, there is nothing structurally different about the DDR in 11 vs 10. (The exception being new v11 features, more below).
What if I'm using new v11 features such as graphs ?
These won't be imported into BaseElements. The BE XSLT engine needs to be updated to include the new features, and this will come in a new version. If you import a file that contains, for example, a graph, then that object won't be included, nor any of the references it uses. You could potentially therefore have an item marked as unreferenced when it's in fact used by the v11 feature item.
Does BaseElements run in v11 ?
Yes, it works fine in v11 for browsing and viewing existing imported records only.
Can I import a DDR using BaseElements running in v11 ?
No, it will import but will give you inaccurate results. All items will be included, but not all items will reference properly and the counts and data will be inaccurate. You cannot use an Analysis imported under v11 to accurately report on any solution, regardless of which features you're using.
Technical Details
We thought some people might be interested in the details of what the issues are in FileMaker 11. FileMaker uses the Xalan / Xerces libraries for XSLT and XML respectively ( you can get these details from the Acknlowledgements PDF that comes with every copy of FMP). In FileMaker 11, the Xalan library has been updated to a new (possibly the latest) version.
One of the things that is an issue when importing XML from the DDR is how to reference items that don't already have unique identifiers. For example each layout or script has an internal FileMaker id that is included in the DDR and can be used to cross reference the imported records. However layout objects or calculations or script steps don't have unique ids.
In XSLT there is a function called generate-id() that will do exactly what it says and generate a unique id for any node. The spec for XSLT doesn't require that these generated ids are unique across any two runs of an XSLT process, but they must be unique within any single process for the same node. The older ( pre v11 ) versions of Xalan used to produce the same id for each node across multiple runs of the XSLT. This made it perfect for use as an alternative record id for those elements that don't already have one.
The Xalan engine in FileMaker 11 no longer produces ( as it is not required to by the XSLT spec ) the same id in subsequent runs of the XSLT import, so it's no longer useful for this purpose. And every different object type in the DDR is imported in separate import actions, which means separate ids...
There are a few alternatives work arounds for this, including coming up with an alternative unique id system, or altering the way the relationships in BaseElements work so that they're no longer required, or altering the XSLT process to re-use the generated ids and keep them for other imports.
The Future
Updating BaseElements for these changes is going to be more work than expected. We're not sure how much at this point, so there isn't a deadline or due date for the next release of BaseElements for FileMaker 11. But it's just as important to us as it is to our customers that BaseElements works with the latest and greatest from FileMaker. We've already started using 11 for some projects and working out how to make it work for others.
We use BaseElements every day and rely on it for our development projects and we need a new version to keep up to date with the latest projects. We will keep everyone updated with posts to the website and to our update lists. Please subscribe on the main BaseElements page on the website.