LanguageTool-Tutorial – Teil II: Komplexere XML-Regeln
Angst und Schrecken verbreiten
Nun soll eine Regel her, die fälschliche Kleinschreibung in der Wendung »angst und schrecken verbreiten« erkennt. Hierbei handelt es nämlich um einen Fehler, der nicht von einer einfachen Rechtschreibprüfung erkannt werden kann, da »angst« als Adjektiv und »schrecken« als Verb kleingeschrieben werden. Der pattern
-Teil der Regel könnte so aussehen:
<div class="listing"><pattern case_sensitive="yes"> <marker> <token>angst</token> <token>und</token> <token regexp="yes">[sS]chrecken</token> </marker> <token>verbreiten</token> </pattern>
Hiermit würden die Fehler in »angst und Schrecken verbreiten« und »angst und schrecken verbreiten« erkannt werden. Schön wäre es jetzt, wenn auch in »angst und schrecken verbreitet« etc. ein Fehler gefunden werden würde, also auch dann wenn, eine
flektierte (engl. »inflected«) Form von »verbreiten« verwendet wird. Für diesen Zweck gibt es das inflected
-Attribut:
<token inflected="yes">verbreiten</token>
Insgesamt könnte die Regel so aussehen:
<rule id="IN_ANGST_UND_SCHRECKEN_VERSETZEN" name="Groß-/Kleinschreibung: 'in angst (Angst) und schrecken (Schrecken) versetzen'"> <pattern case_sensitive="yes"> <marker> <token>angst</token> <token>und</token> <token regexp="yes">[sS]chrecken</token> </marker> <token inflected="yes">verbreiten</token> </pattern> <message>&inwend;<suggestion>Angst und Schrecken</suggestion> werden 'Angst' und 'Schrecken' großgeschrieben.</message> <short>&prgk;.</short> <example type="correct">Sie haben <marker>Angst und Schrecken</marker> verbreitet.</example> <example type="incorrect" correction="Angst und Schrecken">Sie haben <marker>angst und Schrecken</marker> verbreitet.</example> <example type="incorrect" correction="Angst und Schrecken">Sie haben <marker>angst und schrecken</marker> verbreitet.</example> </rule>
Jetzt wäre es natürlich noch sinnvoll, zusätzliche Regeln für die Fälle »Angst und schrecken verbreiten« und die Varianten mit vorausgehendem Verb zu schreiben und alle Regeln in einer rulegroup zusammenzufassen.