There are some things that have to be patched up in the specification, and I
was wondering how we should start versioning stuff. Till now, the spec only
has a date-stamp (“version 2010-03-21”), but I don’t think that’s enough. Do
you all agree with the following proposal?:
1.* changes: used for backwards-incompatible changes in the CSL schema.
These are changes that require a style upgrade (using XSLT), like moving
cs:et-al from being a child element of cs:names to being a child element of
cs:name. With each upgrade, the required value of the version attribute on
cs:style is incremented (e.g. from “1.0” to “1.1”).
1.0.* changes: used for backwards-compatible changes in the CSL schema. An
example is the addition of the new delimiter-precedes-et-al option, which
offers more flexibility but isn’t required in CSL 1.0.0 styles. With
backwards-compatible changes, the value of the version attribute on cs:style
doesn’t change (it stays “1.0”).
1.0.0.* changes: used for changes in the specification that don’t require
changes to the CSL schema. An example are the recently discussed
instructions on the delimiter the CSL processor should use between names and
This way we can easily keep the version of the specification aligned with
that of the schema. It also allows us to make versioned changes to the spec
without having to change the version of the schema.