Heretto Schematron Rules
Heretto offers the following generic Schematron rules.
Heretto Structure Schematron Rules
You can use the following rules to enforce extra validation of your information architecture.
Do not insert elements into title elements
A title element cannot contain any children elements except for conkeyrefs.
Flag
Code
<!-- A Title element cannot contain any children elements except for conkeyrefs. -->
<pattern id="STRUCTURE_01">
<rule context="title">
<report test="*[not(@conkeyref)]">A title element cannot contain any children elements except for conkeyrefs.</report>
</rule>
</pattern>
Assign @xml:lang attributes to root topic elements
Each root topic element should have an @xml:lang attribute assigned.
Flag
Code
<!-- Each topic root element should have an @xml:lang attribute assigned -->
<pattern id="STRUCTURE_02">
<rule context="concept|task|reference|topic|troubleshooting">
<assert test="@xml:lang">Each root topic element should have an @xml:lang attribute
assigned.</assert>
</rule>
</pattern>
Add Short Description elements
Each topic should contain a Short Description element.
Flag
Code
<!-- Each topic should contain a Short Description element -->
<pattern id="STRUCTURE_03">
<rule context="concept|task|reference|topic|troubleshooting">
<assert test="shortdesc|abstract/shortdesc">Topics should contain a Short
Description element.</assert>
</rule>
</pattern>
Do not create one-step procedures
Each task should contain at least two Step elements.
Flag
Code
<!-- Each task should contain at least two Step elements -->
<pattern id="STRUCTURE_04">
<rule context="steps">
<assert test="count(step) > 1">Tasks should contain at least two Step elements.
If you need to create a one-step task, replace the Steps element with a
Steps-Unordered element.</assert>
</rule>
</pattern>
Do not duplicate children elements in step elements
A Step or Substep element should not contain more than one Choices, Substeps, Step Example, or Info element.
Flag
Code
<!-- A Step or Substep element should not contain more than one Choices, Substeps, Step Example, or Info element -->
<pattern id="STRUCTURE_05">
<rule context="step|substep">
<assert test="count(info) < 2">A Step or Substep element should not contain more than one Info
element.</assert>
<assert test="count(stepxmp) < 2">A Step or Substep should not contain more than one Step
Example element.</assert>
<assert test="count(choices) < 2">A Step or Substep should not contain more than one Choices
element.</assert>
<assert test="count(substeps) < 2">A Step should not contain more than one Substeps
element.</assert>
</rule>
</pattern>
Do not create one-substep substeps
A Substeps element should contain at least two Substep elements.
Flag
Code
<!-- A Substeps element should contain at least two Substep elements -->
<pattern id="STRUCTURE_06">
<rule context="substeps">
<assert test="count(substep) > 1">A Substeps element should contain at least two
Substep elements.</assert>
</rule>
</pattern>
Do not create one-choice choices
A Choices element should contain at least two Choice elements.
Flag
Code
<!-- A Choices should contain at least two Choice elements -->
<pattern id="STRUCTURE_07">
<rule context="choices">
<assert test="count(choice) > 1">A Choices element should contain at least two Choice
elements.</assert>
</rule>
</pattern>
Remove or fill in empty elements
Empty task elements should be removed or filled in.
Flag
Code
<!-- Empty task elements should be removed or filled in -->
<pattern id="STRUCTURE_08">
<rule context="prereq|postreq|steps|steps-unordered|stepsection|cause|condition|result|example|context|info">
<assert test="string-length(.) != 0">Empty task elements should be removed or filled
in.</assert>
</rule>
</pattern>
Add titles for sections
A Section element should contain a Title element.
Flag
Code
<!-- A Section element should contain a Title element -->
<pattern id="STRUCTURE_09">
<rule context="section">
<assert test="title">A Section element should contain a Title element.</assert>
</rule>
</pattern>
Do not add introductory text
Prerequisites, Postrequisites, Step Example, Step Result, Example, Result, and Context elements should not contain introductory text. The text is generated automatically (specific to: heretto_pdf, color_pdf, and gray_pdf publishing scenarios).
Flag
Code
<!-- Prerequisites, Postrequisites, Step Example, Step Result, Example, Result, and Context elements should not contain introductory text. The text is generated automatically (Specific to: heretto_pdf, color_pdf, gray_pdf publishing scenarios) -->
<pattern id="STRUCTURE_10">
<rule context="prereq/p[1]">
<report test="matches(., '^[Bb]efore\s*you\s*[Bb]egin')">Remove the introductory text. The
text is generated automatically.</report>
<report test="matches(., '^[Bb]efore\s*you\s*[Ss]tart')">Remove the introductory text. The
text is generated automatically.</report>
<report test="matches(., '^[Pp]rerequisites')">Remove the introductory text. The text is
generated automatically.</report>
</rule>
<rule context="postreq/p[1]">
<report test="matches(., '^[Nn]ext\s*[Ss]teps')">Remove the introductory text. The text is
generated automatically.</report>
<report test="matches(., '^[Pp]ostequisites')">Remove the introductory text. The text is
generated automatically.</report>
</rule>
<rule context="stepxmp/p[1]|example/p[1]">
<report test="matches(., '^[Ee]xample')">Remove the introductory text. The text is
generated automatically.</report>
<report test="matches(., '^[Ff]or\s*[Ee]xample')">Remove the introductory text. The text is
generated automatically.</report>
</rule>
<rule context="stepresult/p[1]|stepresult/p[1]">
<report test="matches(., '^[Rr]esult')">Remove the introductory text. The text is
generated automatically.</report>
</rule>
<rule context="result/p[1]|result/p[1]">
<report test="matches(., '^[Rr]esult')">Remove the introductory text. The text is
generated automatically.</report>
</rule>
<rule context="context/p[1]">
<report test="matches(., '^[Cc]ontext')">Remove the introductory text. The text is
generated automatically.</report>
</rule>
</pattern>
Do not create one-item unordered or ordered lists
Unordered List and Ordered List elements should contain at least two List Item elements.
Flag
Code
<!-- Unordered List and Ordered List elements should contain at least two List Item elements -->
<pattern id="STRUCTURE_11">
<rule context="ul|ol">
<assert test="count(li) > 1" sqf:fix="addListItem">Unordered List and Ordered List
elements should contain at least two List Item elements.</assert>
<sqf:fix id="addListItem">
<sqf:description>
<sqf:title>Add a List Item element</sqf:title>
<sqf:p>To fix this issue, you can add another List Item element. If you cannot
come up with another List Item element, convert the list element to a Paragraph
element.</sqf:p>
</sqf:description>
<sqf:add node-type="element" target="li" position="last-child"/>
</sqf:fix>
</rule>
</pattern>
Do not create one-item definition lists
A Definition List element should contain at least two Definition Entry elements.
Flag
Code
<!-- A Definition List element should contain at least two Definition Entry elements -->
<pattern id="STRUCTURE_12">
<rule context="dl">
<assert test="count(dlentry) > 1">A Definition List element should contain at least
two Definition Entry elements.</assert>
</rule>
</pattern>
Do not wrap images in paragraphs
A non-inline Image element should be wrapped in a Figure element instead of a Paragraph element.
Flag
Code
<!-- An Image element should be wrapped in a Figure element instead of a Paragraph element -->
<pattern id="STRUCTURE_15">
<rule context="p">
<report test="image">An image element should be wrapped in a Figure element instead of a
Paragraph element.</report>
</rule>
</pattern>
Add an alt element for each image
To ensure that your content is accessible, all Image elements should contain an Alt element.
Flag
Code
<!-- An Image element should contain an Alt element -->
<pattern id="STRUCTURE_16">
<rule context="image">
<assert test="alt">An Image element should contain an Alt element.</assert>
</rule>
</pattern>
Specify the images width
An image element should have the @width attribute assigned.
Flag
Code
<!-- An image element should have the @width attribute assigned (Specific to: DITA Open Toolkit-Specific publishing scenarios) -->
<pattern id="STRUCTURE_18">
<rule context="image">
<assert test="@width">An image element should have the @width attribute
assigned.</assert>
</rule>
</pattern>
Specify the type attribute for each note
Each Note element should have the @type attribute assigned.
Flag
Code
<!-- Each Note element should have the @type attribute assigned -->
<pattern id="STRUCTURE_19">
<rule context="note[not(@conref)]">
<assert test="@type">Each Note element should have the @type attribute
assigned.</assert>
</rule>
</pattern>
Do not add tables without headers
A Table element should contain a Table Header (thead) element.
Flag
Code
<!-- A Table element should contain a Table Header (thead) element -->
<pattern id="STRUCTURE_20">
<rule context="table">
<assert test="//thead">A Table element should contain a Table Header (thead)
element.</assert>
</rule>
</pattern>
Do not create single-item menu cascades
A Menu Cascade element should contain at least two UI Control elements.
Flag
Code
<!-- A Menu Cascade element should contain at least two UI Control elements -->
<pattern id="STRUCTURE_21">
<rule context="menucascade">
<assert test="count(uicontrol) > 1">A Menu Cascade element should contain at least two
UI control elements.</assert>
</rule>
</pattern>
Add an attribute to fit wide tables
A topic that contains a Table element with five or more columns should have the @outputclass="landscape" attribute assigned to the root topic element.
Flag
Code
<!--A topic that contains a Table element with five or more columns should have the @outputclass="landscape" attribute assigned to the root topic element -->
<pattern id="STRUCTURE_22">
<rule
context="concept[not(@outputclass='landscape')]//table/tgroup|task[not(@outputclass='landscape')]//table/tgroup|reference[not(@outputclass='landscape')]//table/tgroup|topic//table/tgroup|troubleshooting//table/tgroup">
<report test="count(colspec) > 4">A topic that contains a Table element with five or
more columns should have the @outputclass="landscape" attribute assigned to the root
topic element.</report>
</rule>
</pattern>
Do not use non-semantic elements
Do not use non-semantic elements (bold, underline, italics) to format content.
Flag
Code
<!-- Do not use non-semantic elements (bold, underline, italics) to format content -->
<pattern id="STRUCTURE_23">
<rule context=".">
<report test="b|u|i">Do not use non-semantic elements (bold, underline, italics) to format content. Consider using a Window Title or a UI Control element.</report>
</rule>
</pattern>
Heretto 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 "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>