<?xml version="1.0" encoding="UTF-8"?>
<!-- Reviewed: no -->
<!-- EN-Revision: 24249 -->
<sect3 id="zend.ldap.api.reference.zend-ldap-node-schema">
    <title>Zend_Ldap_Node_Schema(日本語)</title>

    <para>ベンダー固有のサブクラス全てで下記のメソッドが利用可能です。</para>

    <para>
        <code>Zend_Ldap_Node_Schema</code> は、
        名前により属性にアクセスするための <code>__get()</code> 及び <code>__isset()</code>
        マジック・プロパティー・アクセッサを含みます。
        それらはそれぞれ、 <code>Zend_Ldap_Node_Schema::getAttribute()</code> 及び
        <code>Zend_Ldap_Node_Schema::existsAttribute()</code> を代理します。
        <code>__set()</code> 及び <code>__unset()</code> も実装されます。
        しかし、 RootDSE ノードで認められない変更次第では
        <code>BadMethodCallException</code> をスローします。
        さらに、属性に配列のようにアクセスするために
        クラスは <code>ArrayAccess</code> を実装します。
        <code>offsetSet()</code> 及び <code>offsetUnset()</code> も
        明白な理由に起因する <code>BadMethodCallException</code> をスローします。
    </para>

    <table id="zend.ldap.api.reference.zend-ldap-node-schema.table">
        <title>Zend_Ldap_Node_Schema API</title>

        <tgroup cols="2">
            <thead>
                <row>
                    <entry>メソッド</entry>
                    <entry>説明</entry>
                </row>
            </thead>
            <tbody>
                <row>
                    <entry><code>Zend_Ldap_Dn getDn()</code></entry>
                    <entry><classname>Zend_Ldap_Dn</classname> として現行ノードの DN を取得します。</entry>
                </row>
                <row>
                    <entry><code>string getDnString(string $caseFold)</code></entry>
                    <entry>文字列として現行ノードの DN を取得します</entry>
                </row>
                <row>
                    <entry><code>array getDnArray(string $caseFold)</code></entry>
                    <entry>配列として現行ノードの DN を取得します</entry>
                </row>
                <row>
                    <entry><code>string getRdnString(string $caseFold)</code></entry>
                    <entry>文字列として現行ノードの <acronym>RDN</acronym> を取得します</entry>
                </row>
                <row>
                    <entry><code>array getRdnArray(string $caseFold)</code></entry>
                    <entry>配列として現行ノードの <acronym>RDN</acronym> を取得します</entry>
                </row>
                <row>
                    <entry><code>array getObjectClass()</code></entry>
                    <entry>ノードの objectClass を返します</entry>
                </row>
                <row>
                    <entry><code>string toString()</code></entry>
                    <entry>
                        現行ノードの DN を返します。
                        <code>Zend_Ldap_Dn::getDnString()</code> の代理です
                    </entry>
                </row>
                <row>
                    <entry><code>string __toString()</code></entry>
                    <entry>
                        文字列表現にキャストします。
                        <code>Zend_Ldap_Dn::toString()</code> の代理です
                    </entry>
                </row>
                <row>
                    <entry>
                        <code>array toArray(boolean
                        $includeSystemAttributes)</code>
                    </entry>
                    <entry>
                        現行ノードの配列表現を返します。
                        もし <code>$includeSystemAttributes</code> が <constant>FALSE</constant>
                        (既定値は <constant>TRUE</constant>) なら、システム固有の属性は配列から除去されます。
                        <code>Zend_Ldap_Node_Schema::getAttributes()</code> とは異なり、
                        結果の配列には キー <code>'dn'</code> をもつ DN を含みます。
                    </entry>
                </row>
                <row>
                    <entry>
                        <code>string toJson(boolean
                        $includeSystemAttributes)</code>
                    </entry>
                    <entry>
                        <code>Zend_Ldap_Node_Schema::toArray()</code> を用いて
                        現行ノードの <acronym>JSON</acronym> 表現を返します。
                    </entry>
                </row>
                <row>
                    <entry>
                        <code>array getData(boolean
                        $includeSystemAttributes)</code>
                    </entry>
                    <entry>
                        ノードの属性を返します。
                        配列は属性全てをその内部フォーマットに含みます。(変換無し)
                    </entry>
                </row>
                <row>
                    <entry>
                        <code>boolean existsAttribute(string $name, boolean
                        $emptyExists)</code>
                    </entry>
                    <entry>
                        与えられた属性が存在するかどうかチェックします。
                        もし <code>$emptyExists</code> が <constant>FALSE</constant> なら、
                        空の属性 (array() のみを含む) は、
                        <constant>FALSE</constant> を返す、存在しないものとして扱われます。
                        もし <code>$emptyExists</code> が true なら、
                        空の属性は <constant>TRUE</constant> を返す、存在するものとして扱われます。
                        この場合、属性の名前がキーの集合に欠落している場合のみ、
                        メソッドは <constant>FALSE</constant> を返します。
                    </entry>
                </row>
                <row>
                    <entry>
                        <code>boolean attributeHasValue(string $name, mixed|array
                        $value)</code>
                    </entry>
                    <entry>
                        与えられた値が属性に存在するかチェックします。
                        <code>$value</code> 内の値全てが属性に現れる場合のみ、
                        メソッドは <constant>TRUE</constant> を返します。
                        比較は厳格に行なわれます。（データ型を考慮します）
                    </entry>
                </row>
                <row>
                    <entry><code>integer count()</code></entry>
                    <entry>
                        ノードの属性数を返します。 Countable を実装します。
                    </entry>
                </row>
                <row>
                    <entry>
                        <code>mixed getAttribute(string $name, integer|null
                        $index)</code>
                    </entry>
                    <entry>
                        <acronym>LDAP</acronym> 属性を取得します。データ変換は
                        <code>Zend_Ldap_Attribute::getAttribute()</code> を使って適用されます。
                    </entry>
                </row>
                <row>
                    <entry>
                        <code>array getAttributes(boolean
                        $includeSystemAttributes)</code>
                    </entry>
                    <entry>
                        ノードの属性全てを取得します。もし
                        <code>$includeSystemAttributes</code> が <constant>FALSE</constant> なら、
                        (既定は <constant>TRUE</constant>) システム固有の属性は配列から除去されます。
                    </entry>
                </row>
                <row>
                    <entry>
                        <code>array|integer getDateTimeAttribute(string $name,
                        integer|null $index)</code>
                    </entry>
                    <entry>
                        <acronym>LDAP</acronym> の日付／時刻属性を取得します。データ変換は
                        <code>Zend_Ldap_Attribute::getDateTimeAttribute()</code> を使って適用されます。
                    </entry>
                </row>
                <row>
                    <entry>
                        <code>Zend_Ldap_Node_Schema reload(Zend_Ldap
                        $ldap)</code>
                    </entry>
                    <entry>
                        与えられた <acronym>LDAP</acronym> サーバから現行ノードの属性を再読み込みします。
                    </entry>
                </row>
                <row>
                    <entry>
                        <emphasis><code>Zend_Ldap_Node_Schema create(Zend_Ldap
                        $ldap)</code> </emphasis>
                    </entry>
                    <entry>Schema ノードを生成するファクトリー・メソッド</entry>
                </row>
                <row>
                    <entry><code>array getAttributeTypes()</code></entry>
                    <entry>属性のタイプを <code/>. の配列として取得します。</entry>
                </row>
                <row>
                    <entry><code>array getObjectClasses()</code></entry>
                    <entry>
                        オブジェクトクラスを
                        <code>Zend_Ldap_Node_Schema_ObjectClass_Interface</code> の配列として取得します。
                    </entry>
                </row>
            </tbody>
        </tgroup>
    </table>

    <table id="zend.ldap.api.reference.zend-ldap-node-schema.attributetype-interface.table">
        <title>Zend_Ldap_Node_Schema_AttributeType_Interface API</title>

        <tgroup cols="2">
            <thead>
                <row>
                    <entry>メソッド</entry>
                    <entry>説明</entry>
                </row>
            </thead>
            <tbody>
                <row>
                    <entry><code>string getName()</code></entry>
                    <entry>属性名を取得します</entry>
                </row>
                <row>
                    <entry><code>string getOid()</code></entry>
                    <entry>属性の <acronym>OID</acronym> を取得します</entry>
                </row>
                <row>
                    <entry><code>string getSyntax()</code></entry>
                    <entry>属性の構文を取得します</entry>
                </row>
                <row>
                    <entry><code>int|null getMaxLength()</code></entry>
                    <entry>属性の最大長を取得します</entry>
                </row>
                <row>
                    <entry><code>boolean isSingleValued()</code></entry>
                    <entry>属性が単一の値かどうか返します</entry>
                </row>
                <row>
                    <entry><code>string getDescription()</code></entry>
                    <entry>属性の説明を取得します</entry>
                </row>
            </tbody>
        </tgroup>
    </table>

    <table id="zend.ldap.api.reference.zend-ldap-node-schema.objectclass-interface.table">
        <title>Zend_Ldap_Node_Schema_ObjectClass_Interface API</title>

        <tgroup cols="2">
            <thead>
                <row>
                    <entry>メソッド</entry>
                    <entry>説明</entry>
                </row>
            </thead>
            <tbody>
                <row>
                    <entry><code>string getName()</code></entry>
                    <entry>objectClass の名前を返します</entry>
                </row>
                <row>
                    <entry><code>string getOid()</code></entry>
                    <entry>objectClass の <acronym>OID</acronym> を返します</entry>
                </row>
                <row>
                    <entry><code>array getMustContain()</code></entry>
                    <entry>
                        この objectClass が含まなければいけない属性を返します
                    </entry>
                </row>
                <row>
                    <entry><code>array getMayContain()</code></entry>
                    <entry>
                        この objectClass が含むかもしれない属性を返します
                    </entry>
                </row>
                <row>
                    <entry><code>string getDescription()</code></entry>
                    <entry>属性の説明を返します</entry>
                </row>
                <row>
                    <entry><code>integer getType()</code></entry>
                    <entry>
                        objectClass のタイプを返します。
                        このメソッドは下記の値のうちの一つを返します。
                        <variablelist>
                            <varlistentry>
                                <term>
                                <code>Zend_Ldap_Node_Schema::OBJECTCLASS_TYPE_UNKNOWN</code></term>
                                <listitem><para>未知のクラス用</para></listitem>
                            </varlistentry>

                            <varlistentry>
                                <term>
                                <code>Zend_Ldap_Node_Schema::OBJECTCLASS_TYPE_STRUCTURAL</code></term>
                                <listitem><para>構造クラス用</para></listitem>
                            </varlistentry>

                            <varlistentry>
                                <term>
                                <code>Zend_Ldap_Node_Schema::OBJECTCLASS_TYPE_ABSTRACT</code></term>
                                <listitem><para>抽象クラス用</para></listitem>
                            </varlistentry>

                            <varlistentry>
                                <term>
                                <code>Zend_Ldap_Node_Schema::OBJECTCLASS_TYPE_AUXILIARY</code></term>
                                <listitem><para>補助クラス用</para></listitem>
                            </varlistentry>
                        </variablelist>
                    </entry>
                </row>
                <row>
                    <entry><code>array getParentClasses()</code></entry>
                    <entry>
                        このクラスの親の（複数の） objectClass を返します。
                        これは構造、抽象、補助 objectClass を含みます。
                    </entry>
                </row>
            </tbody>

        </tgroup>

    </table>

    <para>
        クラスが表現する属性のタイプ及びオブジェクトクラスは、
        基礎となる <acronym>LDAP</acronym> ノード上の任意の属性にアクセスするための
        いくつかのコアメソッドを提供する <code>Zend_Ldap_Node_Schema_Item</code> を拡張します。
        <code>Zend_Ldap_Node_Schema_Item</code> は
        名前により属性にアクセスするためのマジック・プロパティー・アクセッサ
        <code>__get()</code> 及び <code>__isset()</code> を含みます。
        さらに、属性に配列のようにアクセスするために、
        クラスは <code>ArrayAccess</code> を実装します。
        <code>offsetSet()</code> 及び <code>offsetUnset()</code> は、
        スキーマ情報ノードで認められない変更次第では
        <code>BadMethodCallException</code> をスローします。
    </para>

    <table id="zend.ldap.api.reference.zend-ldap-node-schema.schema-item.table">
        <title>Zend_Ldap_Node_Schema_Item API</title>

        <tgroup cols="2">
            <thead>
                <row>
                    <entry>メソッド</entry>
                    <entry>説明</entry>
                </row>
            </thead>
            <tbody>
                <row>
                    <entry><code>array getData()</code></entry>
                    <entry>
                        スキーマ情報ノードから基礎となる全てのデータを取得します。
                    </entry>
                </row>
                <row>
                    <entry><code>integer count()</code></entry>
                    <entry>
                        スキーマ情報ノード内の属性数を返します。
                        Countable を実装します。
                    </entry>
                </row>
            </tbody>
        </tgroup>
    </table>

    <sect4 id="zend.ldap.api.reference.zend-ldap-node-schema.openldap">
        <title>OpenLDAP</title>

        <para>
            さらに、上記の共通メソッドが <code>Zend_Ldap_Node_Schema_OpenLDAP</code>
            のインスタンスに適用されます。
        </para>

        <table id="zend.ldap.api.reference.zend-ldap-node-schema.openldap.table">
            <title>Zend_Ldap_Node_Schema_OpenLDAP API</title>

            <tgroup cols="2">
                <thead>
                    <row>
                        <entry>メソッド</entry>
                        <entry>説明</entry>
                    </row>
                </thead>
                <tbody>
                    <row>
                        <entry><code>array getLdapSyntaxes()</code></entry>
                        <entry><acronym>LDAP</acronym> 構文を取得します</entry>
                    </row>
                    <row>
                        <entry><code>array getMatchingRules()</code></entry>
                        <entry>一致するルールを取得します</entry>
                    </row>
                    <row>
                        <entry><code>array getMatchingRuleUse()</code></entry>
                        <entry>一致するルールの使用法を取得します</entry>
                    </row>
                </tbody>

            </tgroup>

        </table>

        <table
            id="zend.ldap.api.reference.zend-ldap-node-schema.openldap.attributetype-interface.table">
            <title>Zend_Ldap_Node_Schema_AttributeType_OpenLDAP API</title>

            <tgroup cols="2">
                <thead>
                    <row>
                        <entry>メソッド</entry>
                        <entry>説明</entry>
                    </row>
                </thead>
                <tbody>
                    <row>
                        <entry>
                            <code>Zend_Ldap_Node_Schema_AttributeType_OpenLdap|null
                            getParent()</code>
                        </entry>
                        <entry>
                            もし存在すれば、継承ツリー内の親の属性タイプを返します
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </table>

        <table
            id="zend.ldap.api.reference.zend-ldap-node-schema.openldap.objectclass-interface.table">
            <title>Zend_Ldap_Node_Schema_ObjectClass_OpenLDAP API</title>

            <tgroup cols="2">
                <thead>
                    <row>
                        <entry>メソッド</entry>
                        <entry>説明</entry>
                    </row>
                </thead>
                <tbody>
                    <row>
                        <entry><code>array getParents()</code></entry>
                        <entry>
                            もし存在すれば、継承ツリー内の（複数の）親オブジェクトクラスを返します
                            返される配列は、
                            <code>Zend_Ldap_Node_Schema_ObjectClass_OpenLdap</code>の配列です。
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </table>
    </sect4>

    <sect4 id="zend.ldap.api.reference.zend-ldap-node-schema.activedirectory">
        <title>ActiveDirectory</title>

        <note>
            <title>ActiveDirectory サーバ上でのスキーマ・ブラウジング</title>
            <para>
                包括的探索ルーチンで返されるエントリーの数に関する
                Microsoft ActiveDirectory サーバでの、規制のため、
                および、 ActiveDirectory スキーマ・リポジトリの構造のため、
                スキーマ・ブラウジングは、現在 Microsoft ActiveDirectory サーバでは利用可能
                <emphasis>ではありません</emphasis>。
            </para>
        </note>

        <para>
            <code>Zend_Ldap_Node_Schema_ActiveDirectory</code>
            は、いかなる追加メソッドも提供しません。
        </para>

        <table
            id="zend.ldap.api.reference.zend-ldap-node-schema.activedirectory.attributetype-interface.table">
            <title>Zend_Ldap_Node_Schema_AttributeType_ActiveDirectory API</title>

            <tgroup cols="1">
                <tbody>
                    <row>
                        <entry>
                            <code>Zend_Ldap_Node_Schema_AttributeType_ActiveDirectory</code>
                            は、いかなる追加メソッドも提供しません
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </table>

        <table
            id="zend.ldap.api.reference.zend-ldap-node-schema.activedirectory.objectclass-interface.table">
            <title>Zend_Ldap_Node_Schema_ObjectClass_ActiveDirectory API</title>

            <tgroup cols="1">
                <tbody>
                    <row>
                        <entry>
                            <code>Zend_Ldap_Node_Schema_ObjectClass_ActiveDirectory</code>
                            は、いかなる追加メソッドも提供しません
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </table>
    </sect4>
</sect3>

