Show Page Sections

Style Schematron Rules

You can use the following rules to enforce validation of the language used in your content.

Remember: If you aim at extensively validating the language layer of your content, consider integrating your Heretto CCMS instance with an external language-validation tool (for example, HyperSTE). For more information, contact your Customer Success Manager.

Do not add long titles

A Title element should not contain more than eight words.

Flag

Title element schematron rule example

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, ' ', '')) &gt;= 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

Short description word limit schematron rule example

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, ' ', '')) &gt;= 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 "apha 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>