ADsPath SYNTAX ----------- ADsPath ::= "ADs" ":" ["//"] | Namespace ":" | Namespace "://" ProviderPath ; Namespace ::= NonEscapedName ; ProviderPath ::= Component | Component '/' ProviderPath ; Component ::= EscapedName ; NonEscapedName ::= ( StringChar)* EscapedName ::= ( StringChar | Pair )* | '"' ( StringChar | SpecialChars | Pair ) * '"' StringChar ::= AllChars - (SpecialChars | '\' | '"') Pair ::= "\" ( SpecialChars | '\' | '"' ) SpecialChars = '/' | ',' | '<' | '>' NOTE: 1. Note that the above is a necessary but may not be a sufficient syntactic specification for the ProviderPath. Providers may impose further quoting or escaping rules without violating the above syntax. 2. When an entire ADsPath is written in a different context as part of another string (for eg., in URLs or search specifications) there is a need to delimit the entire ADsPath. It is recommended that '<' and '>' be used for that purpose. NOTES FOR THE LDAP Provider: 1. the LDAP provider in ADSI defines the syntax of the ProviderPath as follows. LdapProviderPath ::= [LdapServerName '/'] LdapDN ; LdapDN ::= ADsDN | X500DN ADsDN ::= LastComponent | Component '/' ProviderPath ; X500DN ::= LastComponent | Component ',' ProviderPath | Component ';' ProviderPath ; LastComponent ::= FullComponent ',' ClassSpecifier | Component ; FullComponent ::= ClassSpecifier '=' Component Component ::= EscapedName ; ClassSpecifier ::= ; EscapedName ::= ( StringChar | Pair )* | '"' ( StringChar | SpecialChars | Pair ) * '"' StringChar ::= AllChars - (SpecialChars | '\' | '"') Pair ::= "\" ( SpecialChars | '\' | '"' ) SpecialChars = '/' | ',' | '<' | '>' | ';' | '='