Style Schematron Rules
You can use the following rules to enforce validation of the language used in your content.
Do not add long titles
A Title element should not contain more than eight words.
Flag
Code
<!-- A Title element should not contain more than eight words -->
<pattern id="STYLE_01">
<rule context="*[contains(@class, ' topic/title ')]">
<let name="title-text" value="normalize-space(.)"/>
<report test="string-length($title-text) - string-length(translate($title-text, ' ', '')) >= 8">A Title element should not contain more than eight words.</report>
</rule>
</pattern>
Do not add long short descriptions
A Short Description should not contain more than 30 words.
Flag
Code
<!-- A Short Description should not contain more than 30 words -->
<pattern id="STYLE_02">
<rule context="shortdesc">
<let name="shortdesc-text" value="normalize-space(.)"/>
<report test="string-length($shortdesc-text) - string-length(translate($shortdesc-text, ' ', '')) >= 30">A Short Description element should not contain more than 30 words.</report>
</rule>
</pattern>
Spell-out numbers from 0 through 10
Spell-out numbers from 0 through 10. Do not spell-out numbers higher than 10.
Code
<!-- Spell-out numbers from 0 through 10. -->
<pattern id="STYLE_03">
<rule context="text()[count(ancestor::mathml) = 0][count(ancestor::table) = 0]">
<report test="starts-with(., '1 ') or contains(., ' 1 ') or substring(., string-length(.) - 1) = ' 1'">Spell-out numbers from 0 through 10.</report>
<report test="starts-with(., '2 ') or contains(., ' 2 ') or substring(., string-length(.) - 1) = ' 2'">Spell-out numbers from 0 through 10.</report>
<report test="starts-with(., '3 ') or contains(., ' 3 ') or substring(., string-length(.) - 1) = ' 3'">Spell-out numbers from 0 through 10.</report>
<report test="starts-with(., '4 ') or contains(., ' 4 ') or substring(., string-length(.) - 1) = ' 4'">Spell-out numbers from 0 through 10.</report>
<report test="starts-with(., '5 ') or contains(., ' 5 ') or substring(., string-length(.) - 1) = ' 5'">Spell-out numbers from 0 through 10.</report>
<report test="starts-with(., '6 ') or contains(., ' 6 ') or substring(., string-length(.) - 1) = ' 6'">Spell-out numbers from 0 through 10.</report>
<report test="starts-with(., '7 ') or contains(., ' 7 ') or substring(., string-length(.) - 1) = ' 7'">Spell-out numbers from 0 through 10.</report>
<report test="starts-with(., '8 ') or contains(., ' 8 ') or substring(., string-length(.) - 1) = ' 8'">Spell-out numbers from 0 through 10.</report>
<report test="starts-with(., '9 ') or contains(., ' 9 ') or substring(., string-length(.) - 1) = ' 9'">Spell-out numbers from 0 through 10.</report>
<report test="starts-with(., '10 ') or contains(., ' 10 ') or substring(., string-length(.) - 1) = ' 10'">Spell-out numbers from 0 through 10.</report>
</rule>
</pattern><!-- Do not spell-out numbers higher than 10. -->
<pattern id="STYLE_03a">
<rule context="text()[matches(.,'[Ee]leven\W')]">
<report test=".">Use numerals for numbers 10 or higher.</report>
</rule>
</pattern><pattern id="STYLE_03b">
<rule context="text()[matches(.,'[Tt]welve\W')]">
<report test=".">Use numerals for numbers 10 or higher.</report>
</rule>
</pattern><pattern id="STYLE_03c">
<rule context="text()[matches(.,'[Tt]hirteen\W')]">
<report test=".">Use numerals for numbers 10 or higher.</report>
</rule>
</pattern><pattern id="STYLE_03d">
<rule context="text()[matches(.,'[Ff]ourteen\W')]">
<report test=".">Use numerals for numbers 10 or higher.</report>
</rule>
</pattern><pattern id="STYLE_03e">
<rule context="text()[matches(.,'[Ff]ifteen\W')]">
<report test=".">Use numerals for numbers 10 or higher.</report>
</rule>
</pattern><pattern id="STYLE_03f">
<rule context="text()[matches(.,'[Ss]ixteen\W')]">
<report test=".">Use numerals for numbers 10 or higher.</report>
</rule>
</pattern><pattern id="STYLE_03g">
<rule context="text()[matches(.,'[Ss]eventeen\W')]">
<report test=".">Use numerals for numbers 10 or higher.</report>
</rule>
</pattern><pattern id="STYLE_03h">
<rule context="text()[matches(.,'[Ee]ighteen\W')]">
<report test=".">Use numerals for numbers 10 or higher.</report>
</rule>
</pattern><pattern id="STYLE_03i">
<rule context="text()[matches(.,'[Nn]ineteen\W')]">
<report test=".">Use numerals for numbers 10 or higher.</report>
</rule>
</pattern><pattern id="STYLE_03j">
<rule context="text()[matches(.,'[Tt]wenty\W')]">
<report test=".">Use numerals for numbers 10 or higher.</report>
</rule>
</pattern><pattern id="STYLE_03k">
<rule context="text()[matches(.,'[Tt]hirty\W')]">
<report test=".">Use numerals for numbers 10 or higher.</report>
</rule>
</pattern><pattern id="STYLE_03l">
<rule context="text()[matches(.,'[Ff]orty\W')]">
<report test=".">Use numerals for numbers 10 or higher.</report>
</rule>
</pattern><pattern id="STYLE_03m">
<rule context="text()[matches(.,'[Ff]ifty\W')]">
<report test=".">Use numerals for numbers 10 or higher.</report>
</rule>
</pattern><pattern id="STYLE_03n">
<rule context="text()[matches(.,'[Ss]ixty\W')]">
<report test=".">Use numerals for numbers 10 or higher.</report>
</rule>
</pattern><pattern id="STYLE_03o">
<rule context="text()[matches(.,'[Ss]eventy\W')]">
<report test=".">Use numerals for numbers 10 or higher.</report>
</rule>
</pattern><pattern id="STYLE_03p">
<rule context="text()[matches(.,'[Ee]ighty\W')]">
<report test=".">Use numerals for numbers 10 or higher.</report>
</rule>
</pattern><pattern id="STYLE_03r">
<rule context="text()[matches(.,'[Nn]inety\W')]">
<report test=".">Use numerals for numbers 10 or higher.</report>
</rule>
</pattern><pattern id="STYLE_03s">
<rule context="text()[matches(.,'[Hh]undred(s)?\W')]">
<report test=".">Use numerals for numbers 10 or higher.</report>
</rule>
</pattern><pattern id="STYLE_03t">
<rule context="text()[matches(.,'[Tt]housand(s)?\W')]">
<report test=".">Use numerals for numbers 10 or higher.</report>
</rule>
</pattern><pattern id="STYLE_03u">
<rule context="text()[matches(.,'[Mm]illion(s)?\W')]">
<report test=".">Use numerals for numbers 10 or higher.</report>
</rule>
</pattern><pattern id="STYLE_03w">
<rule context="text()[matches(.,'[Bb]illion(s)?\W')]">
<report test=".">Use numerals for numbers 10 or higher.</report>
</rule>
</pattern>
Do not use en dashes
Use hyphens instead of en dashes.
Code
<!-- Use hyphens instead of en dashes -->
<pattern id="STYLE_04">
<rule context="text()[matches(.,'–')]">
<report test=".">Use a hyphen instead of an en dash.</report>
</rule>
</pattern>
Do not use "photo"
Replace “photo” with “image”.
Code
<!-- Replace "photo" or "photograph" with "image"Replace "photo" with "image" -->
<pattern id="STYLE_05">
<rule context="text()[matches(.,'[pP]hoto(graph)?(s?)\W')]">
<report test=".">Replace "photo" or "photograph" with "image".</report>
</rule>
</pattern>
Do not use "picture"
Replace “picture” with “image”.
Code
<!-- Replace "picture" with "image". -->
<pattern id="STYLE_06">
<rule context="text()[matches(.,'[pP]icture(s?)\W')]">
<report test=".">Replace "picture" with "image".</report>
</rule>
</pattern>
Do not use "display"
Replace “display” with “show” or “appear”.
Code
<!-- Replace "display" with "show" or "appear". -->
<pattern id="STYLE_07">
<rule context="text()[matches(.,'[Dd]isplay(s|ing)?\W')]">
<report test=".">Replace "display" with "show" or "appear". </report>
</rule>
</pattern>
Do not use "make sure"
Replace “make sure” with “ensure”.
Code
<!-- Replace "make sure" with "ensure"-->
<pattern id="STYLE_08">
<rule context="text()[matches(.,'[Mm]ak(e|es|ing)?\s*[Ss]ure\W')]">
<report test=".">Replace "make sure" with "ensure".</report>
</rule>
</pattern>
Do not use "drop-down list"
Replace “drop-down list” or “drop-down list” with “drop-down menu”.
Code
<!-- Replace "drop-down list" or "drop-down list" with "drop-down menu" -->
<pattern id="STYLE_09">
<rule context="text()[matches(.,'[Dd]rop(-|\s)?[Dd]own\s*[lL]ist(s)?\W')]">
<report test=".">Replace "drop-down list" or "drop-down list" with "drop-down
menu".</report>
</rule>
</pattern>
Do not use "checkbox" or "check-box"
Replace “checkbox” or “check-box” with “check box”.
Code
<!-- Replace "checkbox"or "check-box" with "check box" -->
<pattern id="STYLE_10">
<rule context="text()[matches(.,'[Cc]heck-?[Bb]ox(es)?\W')]">
<report test=".">Replace "checkbox"or "check-box" with "check box".</report>
</rule>
</pattern>
Do not use "single-click", "single click", or "singleclick"
Replace “single-click”, “single click”, or “singleclick” with “click”.
Code
<!-- Replace "single-click", "single click", or "singleclick" with "click" -->
<pattern id="STYLE_11">
<rule context="text()[matches(.,'[Ss]ingle(-|\s)?[Cc]lick(s|ing)?\W')]">
<report test=".">Replace "single-click", "single click", or "singleclick" with
"click".</report>
</rule>
</pattern>
Do not use "right click" or "rightlick"
Replace “right click” or “rightclick” with “right-click”.
Code
<!-- Replace "right click" or "rightclick" with "right-click" -->
<pattern id="STYLE_12">
<rule context="text()[matches(.,'[Rr]ight\s*[Cc]lick(s|ing)?\W')]">
<report test=".">Replace "right click" or "rightclick" with "right-click".</report>
</rule>
</pattern>
Do not use "double click" or "doubleclick"
Replace “double click” or “doubleclick” with “double-click”.
Code
<!-- Replace "double click" or "doubleclick" with "double-click" -->
<pattern id="STYLE_13">
<rule context="text()[matches(.,'[Dd]ouble\s*[Cc]lick(s|ing)?\W')]">
<report test=".">Replace "double click" or "doubleclick" with "double-click".</report>
</rule>
</pattern>
Do not use "hover-over"
Replace “hover-over” with “hover over”.
Code
<!-- Replace "hover-over" with "hover over" -->
<pattern id="STYLE_14">
<rule context="text()[matches(.,'[Hh]over(s|ing)?-[Oo]ver\W')]">
<report test=".">Replace "hover-over" with "hover over".</report>
</rule>
</pattern>
Do not use "filepath" or "file-path"
Replace “filepath” or “file-path” with “file path”.
Code
<!-- Replace "filepath" or "file-path" with "file path" -->
<pattern id="STYLE_15">
<rule context="text()[matches(.,'[Ff]ile-?[Pp]ath(s)?\W')]">
<report test=".">Replace "filepath" or "file-path" with "file path".</report>
</rule>
</pattern>
Do not use "filename" or "file-name"
Replace “filename” or “file-name” with “file name”.
Code
<!-- Replace "filename" or "file-name" with "file name" -->
<pattern id="STYLE_16">
<rule context="text()[matches(.,'[Ff]ile-?[Nn]ame(s)?\W')]">
<report test=".">Replace "filename" or "file-name" with "file name".</report>
</rule>
</pattern>
Do not use "screen capture", "screen-capture", or "screencapture"
Replace “screen capture”, “screen-capture”, or “screencapture” with “screenshot”.
Code
<!-- Replace "screen capture", "screen-capture", or "screencapture" with "screenshot" -->
<pattern id="STYLE_17">
<rule context="text()[matches(.,'[Ss]creen(-|\s)?[Cc]apture(s)?\W')]">
<report test=".">Replace "screen capture", "screen-capture", or "screencapture" with
"screenshot".</report>
</rule>
</pattern>
Do not use "wish"
Replace “wish” with “want”.
Code
<!-- Replace "wish" with "want" -->
<pattern id="STYLE_18">
<rule context="text()[matches(.,'[Ww]ish(es)?\W')]">
<report test=".">Replace "wish" with "want".</report>
</rule>
</pattern>
Do not use "desire"
Replace “desire” with “want”.
Code
<!-- Replace "desire" with "want" -->
<pattern id="STYLE_19">
<rule context="text()[matches(.,'[Dd]esire(s)?\W')]">
<report test=".">Replace "desire" with "want".</report>
</rule>
</pattern>
Do not use "allow"
Replace “allow” with “enable”.
Code
<!-- Replace "allow" with "enable" -->
<pattern id="STYLE_20">
<rule context="text()[matches(.,'[aA]llow(s|ing)?\W')]">
<report test=".">Replace "allow" with "enable".</report>
</rule>
</pattern>
Do not use "abort" or "abortion"
Replace “abort” with “end”, “close”, “stop”, or “cancel”.
Code
<!-- Replace "abort" with "end", close", "stop", or "cancel" -->
<pattern id="STYLE_21">
<rule context="text()[matches(.,'[Aa]bort(ion|ions|s|ing)?\W')]">
<report test=".">Replace "abort" with "end", close", "stop", or "cancel".
</report>
</rule>
</pattern>
Do not use "alpha numerical" or "alpha numeric"
Replace “alpha numeric” or “alpha numerical” with “alphanumeric”.
Code
<!-- Replace "alpha numeric", or "alpha numerical" with "alphanumeric" -->
<pattern id="STYLE_22">
<rule context="text()[matches(.,'[Aa]lpha(-|\s)[Nn]umeric(al)?\W')]">
<report test=".">Replace "alpha numeric", or "alpha numerical" with "alphanumeric".
</report>
</rule>
</pattern>
Do not use "alphabetic"
Replace “alphabetic”, “alpha betic”, or “alpha-betic” with “alphabetical”.
Code
<!-- Replace "alphabetic", "alpha betic", or "alpha-betic" with "alphabetical". -->
<pattern id="STYLE_23">
<rule context="text()[matches(.,'[Aa]lpha(-|\s)?[Bb]etic\W')]">
<report test=".">Replace "alphabetic", "alpha betic", or "alpha-betic" with
"alphabetical". </report>
</rule>
</pattern>
Do not use "and/or"
Do not use “and/or”. Expand the sentence to be more specific.
Code
<!-- Do not use "and/or". Expand the sentence to be more specific -->
<pattern id="STYLE_24">
<rule context="text()[matches(.,'and/or\W')]">
<report test=".">Do not use "and/or". Expand the sentence to be more specific. </report>
</rule>
</pattern>
Do not use "Appendixes"
Replace “appendixes” with “appendices”.
Code
<!-- Replace "appendixes" with "appendices" -->
<pattern id="STYLE_25">
<rule context="text()[matches(.,'[Aa]ppendixes\W')]">
<report test="."> Replace "appendixes" with "appendices".</report>
</rule>
</pattern>
Do not use "back space", or "back-space"
Replace “back space” or “back-space” with “backspace”.
Code
<!-- Replace "back space" or "back-space" with "backspace" -->
<pattern id="STYLE_26">
<rule context="text()[matches(.,'[Bb]ack(-|\s)[Ss]pace\W')]">
<report test=".">Replace "back space" or "back-space" with "backspace".</report>
</rule>
</pattern>
Do not use "site map" or "site-map"
Replace “site map” or “site-map” with “sitemap”.
Code
<!-- Replace "site map" or "site-map" with "sitemap" -->
<pattern id="STYLE_27">
<rule context="text()[matches(.,'[Ss]ite(-|\s)[Mm]ap(s)?\W')]">
<report test=".">Replace "site map" or "site-map" with "sitemap".</report>
</rule>
</pattern>
Do not use "etc."
Do not use “etc.” Be specific whenever possible. If space is limited, use “such as” or “like” followed by an example or two.
Code
<!-- Do not use "etc." Be specific whenever possible. If space is limited, use "such as" or "like" followed by an example or two. -->
<pattern id="STYLE_28">
<rule context="text()[matches(.,'[eE]tc\.\W')]">
<report test=".">Do not use "etc." Be specific whenever possible. If space is limited,
use "such as" or "like" followed by an example or two. </report>
</rule>
</pattern>
Do not use "mouse over" or "mouse-over"
Replace “mouse over” or “mouse-over” with “hover over”.
Code
<!-- Replace "mouse over" or "mouse-over" with "hover over" -->
<pattern id="STYLE_29">
<rule context="text()[matches(.,'[Mm]ous(e|es|ing)?(-|\s)?[Oo]ver\W')]">
<report test=".">Replace "mouse over" or "mouse-over" with "hover over".</report>
</rule>
</pattern>
Do not use "screen shot" or "screen-shot"
Replace “screen shot” or “screen-shot” with “screenshot”.
Code
<!-- Replace "screen shot" or "screen-shot" with "screenshot" -->
<pattern id="STYLE_38">
<rule context="text()[matches(.,'[Ss]creen(-|\s)[Ss]hot(s)?\W')]">
<report test=".">Replace "screen shot" with "screenshot".</report>
</rule>
</pattern>