These notes are only of relevance to the maintainers of NewsML-G2 at IPTC.
Steps to create and release an update to the standard:
- Copy the latest version of schema files into the
specification/FileVersion_<revision>
folder based on our new revision number - Update the files in
specification/FileVersion_<revision>
with new version numbers and dates - Make the required schema changes to the
specification/FileVersion<revision>
files - Create the "All" version from the individual versions in the
FileVersion_<revision>
folder - Copy the new files to specification/individual folder, removing revision info from the filenames
- Check that the schema file works by validating against example documents
- Create documentation using XML Spy
- Make release version to be uploaded to iptc.org
- Create a new GitHub branch for the changes:
git checkout -b newsmlN.NN
(ornewsmlN.NN_N
) - Update the
release-tools/newsmlg2-config-vars.sh
file with the version numbers of the old and new versions and revision - Don't forget to run it!
source release-tools/newsmlg2-config-vars.sh
- Run
release-tools/update-xsd-version-no.sh
to updateXML-Schema_FileVersion_N
files to refer to the new version - Run
release-tools/update-version-no-in-files.sh
to update version numbers and dates in the schema documents - By hand, make the XML schema changes that are needed in the
XML-Schema_FileVersion_#
folder, including any outstanding change requests from the dev.iptc.org site - Run
release-tools/move-to-individual.sh
This copies and renames the individual schema component files from theXML-Schema_FileVersion_#
folder to thespecification/individual
folder. The script also removes a _ reference inside the schema files. - Run the script that uses an XSLT stylesheet to create the master version
from the framework version in the specification/individual folder:
release-tools/create-power-xsd-from-framework-xsd.sh
- Run
release-tools/update-version-no-in-examples.sh
which updates version number references within each file in examples/*.xml (except for the older examples which need to refer to 2.24 because that's the last version supported by the Core version of the standard) - Run
release-tools/test-newsml-examples.sh
which runsxmllint
over the examples folder to make sure no errors have been introduced. - Run
tests/runtests.py
to run the unit tests and make sure that the new version doesn't break any old test cases. You should also write new unit tests for the changes being added, if you haven't already. - Use XML Spy to create XML Schema documentation from the master XSD schema
file and the "individual" schemas. Save them to
specification/XML-Schema-Doc-Power
. - Print-to-PDF change requests from dev.iptc.org for inclusion in release pack to be sent to delegates, if necessary.
- Update the documentation page in documentation/NewsML-G2-documentation.md to point to the appropriate versions of the specs, XML Schema docs and guidelines.
- Run the script to move all files to the release folder and create ZIP files
of the release:
release-tools/create-release.sh
- Commit and push all changes to GitHub:
git push origin -u my-new-branch
(Our.gitignore
file already suppresses sending ZIP files to GitHub.) - Create a pull request from the branch on GitHub.com.
- Update the APPROVED_DATE in
release-tools/newsmlg2-config-vars.sh
- Run the above steps 3, 5, 7, 8, 10, 12, 14, 15 again to update files with the approval date (this should be quick, just running scripts, except for the XML Spy documentation step)
- Commit changes and merge the pull request into the main branch on GitHub
- Upload the "releases/N.NN" folder and the ZIP files to the iptc.org server
- Update the redirects in iptc.org/std/.htaccess to point to the latest versions of XML Schema documentation.
- Update the http://dev.iptc.org/G2-Approved-Changes page documenting the changes made.
- Tag the release in GitHub:
git tag N.NN.N
,git push --tags
) - Move the CR page on dev.iptc.org to "G2 Approved Changes" area
- Update the http://dev.iptc.org/G2-Approved-Changes page to refer to the approved CR.
- Create a new schema referring to the latest schema version, in the
tests/schema_versions
folder on the working branch. - Update the
tests/run-tests.py
script to refer to the new version. - Make a new folder in
tests/unit_test_files
with the new version number and put new test files there.