SwingUnit Scenario XML DTD

SwingUnitのシナリオ定義XMLファイルのためのDTDを書いてみた。

そもそもDTDをよく知らないので高度な書き方はしていない。単純にELEMENTとATTLISTだけを記述した。今のところ自分が使っているタグや属性だけしか書いてない。必要になったら随時追記する予定。

SwingUnitScenarioXML.dtd

<!ELEMENT document (scenario*)>
<!ELEMENT scenario ((Click|VerifyText|OptionPane|ComboBox|Tab|Paste|SetClipboard|ComboBox|WindowClosing)*)>
<!ELEMENT Click EMPTY>
<!ELEMENT VerifyText EMPTY>
<!ELEMENT OptionPane EMPTY>
<!ELEMENT ComboBox EMPTY>
<!ELEMENT Tab EMPTY>
<!ELEMENT Paste EMPTY>
<!ELEMENT SetClipboard EMPTY>
<!ELEMENT WindowClosing EMPTY>

<!ATTLIST document windowName CDATA #IMPLIED>
<!ATTLIST document windowClass CDATA #IMPLIED>

<!ATTLIST scenario name CDATA #REQUIRED>
<!ATTLIST scenario windowName CDATA #IMPLIED>
<!ATTLIST scenario windowClass CDATA #IMPLIED>

<!ATTLIST Click name CDATA #IMPLIED>
<!ATTLIST Click componentClass CDATA #IMPLIED>
<!ATTLIST Click clickCount CDATA #IMPLIED>
<!ATTLIST Click windowName CDATA #IMPLIED>
<!ATTLIST Click windowClass CDATA #IMPLIED>

<!ATTLIST VerifyText label CDATA #IMPLIED>
<!ATTLIST VerifyText text CDATA #IMPLIED>
<!ATTLIST VerifyText isRegularExpression CDATA #IMPLIED>
<!ATTLIST VerifyText componentFinder CDATA #IMPLIED>
<!ATTLIST VerifyText componentClass CDATA #IMPLIED>
<!ATTLIST VerifyText windowClass CDATA #IMPLIED>
<!ATTLIST VerifyText windowFinder CDATA #IMPLIED>

<!ATTLIST OptionPane title CDATA #IMPLIED>
<!ATTLIST OptionPane label CDATA #IMPLIED>
<!ATTLIST OptionPane optionType CDATA #IMPLIED>

<!ATTLIST Tab tabIndex CDATA #IMPLIED>
<!ATTLIST Tab name CDATA #IMPLIED>

<!ATTLIST SetClipboard text CDATA #REQUIRED>

<!ATTLIST ComboBox targetItemValue CDATA #IMPLIED>
<!ATTLIST ComboBox name CDATA #IMPLIED>
<!ATTLIST ComboBox windowName CDATA #IMPLIED>
<!ATTLIST ComboBox windowClass CDATA #IMPLIED>
<!ATTLIST ComboBox targetIndex CDATA #IMPLIED>

<!ATTLIST WindowClosing windowName CDATA #IMPLIED>
<!ATTLIST WindowClosing windowClass CDATA #IMPLIED>

このファイルを適当に保存し、XMLの方には

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE document SYSTEM "file:///c:/path/to/SwingUnitScenarioXML.dtd">
<document>
  <scenario name="HOGE">
    〜〜〜
  </scenario>
  〜〜〜
</document>

のように書く。
これでEclipseXMLエディタとかでつまらないスペルミスをある程度防ぐことができるようになり、補完も効くようになる。