DOCTYPEは、XML宣言の次に指定します。下記のように指定してください。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
"http://www.seasar.org/dtd/components21.dtd">
<components>
    <component name="hello"
class="Seasar.Examples.Reference.Injection.HelloConstructorInjection">
        <arg>"Hello World!"</arg>
    </component>
    
    <component name="ConstructorInjection"
class="Seasar.Examples.Reference.Injection.HelloConstructorInjectionClient" />
</components>

 ルートのタグになります。

namespace属性(任意)

 名前空間を指定することができます。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
"http://www.seasar.org/dtd/components21.dtd">
<components namespace="hoge">
    ...
</components>

 分割されたS2Containerの定義を取り込む場合に使います。

path属性(必須)

 定義ファイルのパスを指定することができます。定義ファイルのパスには、埋め込まれたリソースもしくはファイルシステムで指定することができます。

 埋め込まれたリソースを使用する場合は、定義ファイルの名前空間を含む完全限定名です。セパレータは、/です。 定義ファイルのビルドアクションプロパティは、埋め込まれたりソースに設定します。

 C#プロジェクトの場合は、フォルダを作成すると名前空間が作成されます。VB.NETプロジェクトの場合は、フォルダを作成しても名前空間は作成されません。 例えば、プロジェクトフォルダ/Sample/Logic/aaa.diconとすると、C#プロジェクトの場合は、既定の名前空間/Sample/Logic/aaa.diconになります。 VB.NETの場合は、既定の名前空間/aaa.diconになります。

 ファイルシステムを使用する場合は、一般的なファイルパスを指定します。絶対パス、相対パスを指定できます。

 埋め込まれたリソース、ファイルシステムの定義ファイルを混在させることもできます。 同じパスで埋め込まれたリソース、ファイルシステムの両方でヒットする場合は、ファイルシステムの定義ファイルが優先されます。 componentタグの前に記述する必要があります。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
"http://www.seasar.org/dtd/components21.dtd">

<components>
    <include path="aaa/bbb/ccc.dicon" />
</components>

 コンポーネントを定義します。

class属性(任意)

 クラスの完全限定名を指定します。 ボディで、JScript.NET式を使って コンポーネントを指定した場合は、class属性を省略することができます。 JScript.NET式を使った場合にclass属性を指定すると、型チェックを行います。

name属性(任意)

 名前を指定することもできます。.NETの識別子として使えるものにします。 詳しくは、コンポーネントの取得を参照してください。

instance属性(任意)

 S2Containerがどのようにコンポーネントのインスタンスを管理するのかを指定することができます。 singleton(デフォルト)、prototype、outer、request、sessionを指定することができます。 詳しくは、インスタンス管理を参照してください。

autoBinding属性(任意)

 S2Containerがコンポーネントの依存関係をどのように解決するのかを指定できます。 auto(デフォルト)、constructor、property、noneを指定することができます。 詳しくは、自動バインディングを参照してください。

 componentタグの子タグとして使った場合は、コンストラクタの引数になります。 記述した順番でコンストラクタに渡されます。 initMethodタグdestroyMethodタグの子タグとして使った場合は、メソッドの引数になります。 記述した順番でメソッドに渡されます。 引数として渡される実際の値は、ボディでJScript.NET式を使うか、 子タグでcomponentタグを使います。

 componentタグの子タグとして使います。 プロパティとして設定される実際の値は、ボディでJScript.NET式を使うか、 子タグでcomponentタグを使います。

name属性(必須)

 プロパティ名を指定します。

 componentsタグcomponentタグargタグpropertyタグの子タグとして使います。 メタデータの値は、ボディでJScript.NET式を使うか、 子タグでcomponentタグを使います。

name属性(任意)

 メタ名を指定します。

 componentタグの子タグとして使います。 引数は、子タグでargタグを使います。 name属性を書かずにJScript.NET式を使って、コンポーネントのメソッドを呼び出すこともできます。 initMethodタグが定義されているコンポーネント自身を表すself、Console.Outを表すout、 Console.Errorを表すerrがinitMethodタグ内だけで有効なオブジェクトとして使えます。

name属性(任意)

 メソッド名を指定します。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"

"http://www.seasar.org/dtd/components21.dtd">
<components>
    <component class="System.Collections.Hashtable">
        <initMethod name="Add">
            <arg>"aaa"</arg>
            <arg>111</arg>
        </initMethod>
        
        <initMethod>self.Add("aaa", 111)</initMethod>
        <initMethod>out.WriteLine("Hello")</initMethod>
    </component>
</components>

 アスペクトをコンポーネントに組み込みます。 詳しくは、S2AOPのaspectタグの説明を参照してください。

 componentsタグcomponentタグargタグpropertyタグの子タグとしてdescriptionタグを使うことができます。 自由に説明を記述できます。

 JScript.NETについては以下のドキュメントを参照して下さい。

 S2Container.NET JScript.NET式