Includes all the constraints previously listed as XPaths:
<?xml version="1.0"?>
<schema xmlns="http://www.ascc.net/xml/schematron">
<title>A Schematron Schema for the Thunderbird PLists</title>
<pattern>
<rule context="plist">
<assert test="//key[. = 'CFBundleExecutable']">
There is a CFBundleExecutable.
</assert>
<assert test="count(//key[. = 'CFBundleIconFile']) = 1">
There is exactly one CFBundleIconFile
</assert>
<assert test="contains(//key[. = 'CFBundleGetInfoString']/following-sibling::string, '© 2005 The Mozilla Organization')">
The software is copyrighted by Mozilla.
</assert>
<assert test="string-length(//key[. = 'CFBundleSignature']/following-sibling::string) = 4">
The CFBundleSignature is four letters
</assert>
<assert test="string-length(//key[. = 'CFBundleSignature']/following-sibling::string) = 4">
The CFBundleSignature is four letters
</assert>
</rule>
</pattern>
<!-- some tests are simpler here -->
<pattern>
<rule context="key">
<assert test="name(following-sibling::*[1]) != 'key'">
No two key elements are adjacent.
</assert>
</rule>
</pattern>
</schema>