Mad Quality Plugin (FREE - $9.99)

Use the Mad Quality Plugin to validate your topics to ensure that they comply to your company style guide and information model. Say farewell to your style guide binder and information model spreadsheet. The Mad Quality Plugin makes it easy for you to create consistent content your customers will love.

The plugin comes with a set of pre-defined rules that you can change, and to set up your own rules, you create Schematron rule files in the \\Plugins\Mad Quality Plugin folder.

What can you do with the plugin?

  • Validate a topic against a Schematron rule file to validate style guide or information model compliance.
  • Validate writing quality, e.g. finding passive voice or lexical illusions.
  • Validate style guide compliance

Included rule files

Rule file What can I use it for?
  • Check readability.
  • Find duplicate words.
  • Find weasel words.
  • Find sentences that start with "So", or "There are/is".
  • Find paragraphs where an uncomparable is compared.
  • Find paragraphs with words that have simpler alternatives.
  • Find paragraphs with passive voice.
  • Find paragraphs with clichés.
  • Find headings with subordinate clauses.
  • Find headings with more than 7 words.
  • Find lists with inconsistent punctuation.
US English.xml Find American English spelling.
UK English.xml Find UK English spelling.
  • Finds topics with a missing <h1> element.
  • Find empty lists.
  • Find empty paragraphs.
  • Find topics with the <title> set.
  • Find divs without a class attribute.
  • Find elements with local styling.
  • Find hard-coded formatting (<b>,<i>,<u>)
  • Find lists with too many paragraphs.
  • Find lists with only one list item.
  • Find headings with index keywords.
  • Find consecutive lists that can be merged.
Information model.xml
  • Make sure the topics has a heading 1
  • Make sure a task topic has at least one numbered list

The idea is that you copy this file and set up your own information model - creating assertions for each topic type (task, concept, reference).

Company style guide.xml
  • Verify that the topic has at least one index term. The idea is that you copy this file and set up your own style guide.

Free download

Enter your e-mail and click download to sign up for the mailing list and get a link to the installer.

If you have already signed up, and need to re-download the plugin - please e-mail me at

Premium license

To be able to validate TOCs, folders, or the entire project instead of single topics, you need to buy a license here:

Release Notes

Date What's new?
2019/05/31 Updates to the help call.


The Mad Quality Plugin is based on the Schematron standard, which is a rule-based validation language for making assertions about the presence or absence of patterns in XML trees. It is a structural schema language expressed in XML using a small number of elements and XPath.

You can use the Mad Quality plugin e.g. for business validation, quality control/assurance, house-style-rules checking.

Schematron is simple language with only five important elements:

A Schema, which is the root element of a validation file
A number of Pattern elements - in turn grouping together a set of rules
A number of Rule elements - setting the context for the validation (e.g. all Paragraphs, or Headings, etc.)
A set of Assert - each with an XPath test - reporting whenever the test is negative. Assertions are used for making sure a topic conforms to a set of rules - a tells you when the rules are broken
A set of Report elements - each with an XPath test - reporting whenever the test is positive. Reports are used for telling you when a rule is broken. A Report is an up-side-down Assertion

Sample rules

Report empty paragraphs

This sample rule tells you when there is an empty paragraph in a topic:

<schema xmlns="">
		<pattern id="empty-paragraph">
		<rule context="//p">
			<report test="string-join(text(),'')='&#160;'">
				Empty paragraph.
			<report test="string-join(text(),'')=''">
				Empty paragraph.

Find consecutive lists

This rule finds sibling ul- and ol- elements that should potentially be merged.

<pattern id="consecutive-ul-ol">
	<rule context="//ul/following-sibling::*[1][self::ul]|//ol/following-sibling::*[1][self::ol]">
		<report>Two consecutive lists were found. Merge them.</report>

Keyword in heading

This rule tells you when a heading has a Keyword

<pattern id="keyword in heading">
	<rule context="/html/body/*[self::h1 or self::h2 or self::h3]">
		<report test="count(//MadCap:keyword) &gt; 0">Index keyword in heading.</report>

Local styling

This pattern finds occurences of local styling.

<pattern id="local-styling">
	<rule context="//*[not(name()='table') and @style]">
			This element appears to have local styling. 

How can I use the plugin?

Setting up a new rule

To set up a new rule:

  1. Create a new text-file in e.g. Notepad or Notepad++.
  2. Create the Schematron-based XML structure, e.g.
<pattern id="local-styling">
	<rule context="//*[not(name()='table') and @style]">
			This element appears to have local styling. 
  1. Save it in the C:...\\Plugins\Mad Quality Plugin folder with the ".xml" extension.

Where can I learn more about XPath and Schematron?