\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{mer. nov. 6 15:15:06 CET 2013}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={rfc3866},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Language Tags and Ranges},
CreationDate={D:20131106151506},
ModDate={D:20131106151506},
Keywords={LDAP;Lightweight Directory Access Protocol}
}}
\begin{document}
 
\begin{center}
{\Huge rfc3866 }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Language Tags and Ranges}
 
\vspace{10mm}
 
\hspace{1mm}  Il est souvent utile d'être capable d'indiquer le langage naturel associé avec les valeurs maintenus dans un annuaire et être capable de requêter l'annuaire sur des valeurs qui sont dans la langue que l'utilisateur demande.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Language Tags }
 
\
 
\hspace{1mm}  La section 2 de la BCP 47 (rfc 3066) décris le format de tag de langage qui est utilisé dans LDAP. brièvement, c'est une chaîne ASCII et '-'. ex: \textbf{fr}, \textbf{en-US}, \textbf{ja-JP}. ces tags sont insensible à la casse.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Language Ranges }
 
\
 
\hspace{1mm}  La section 2.5 de la BCP 47 (rfc 3066) décris les plages de langage. Un language range match un tag de langage s'il est égal à un préfix du tag. ex: la plage "\textbf{de}" match les tags "\textbf{de}" et "\textbf{de-CH}", mais pas "\textbf{den}". le range spécial "*" match tous les tags.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Attribute Descriptions }
 
\
 
\hspace{1mm}  Un attribut consiste d'un type, un jeu de 0 ou plusieurs options de tagging, et un jeu d'une ou plusieurs valeurs. Le type et les options sont combinés dans le AttributeDescription. AttributeDescription peut aussi contenir des options qui ne font pas partie de l'attribut, mais indiquent d'autres fonctions (tel que le range assertion ou le transfer encoding).
\vspace{5mm} \\
 
 
\hspace{1mm}  Un AttributeDescription avec une ou plusieurs options de tagging est un sous-type direct de chaque AttributeDescription de même type avec toutes sauf une des options de tagging. Si le type d'AttributeDescription est un sous-type direct d'autres type, alors l'AttributeDescription est aussi un sous-type direct de l'AttributeDescription qui consiste du super-type et toutes les les options de tagging. donc, "\textbf{CN;x-bar;x-foo}" est un sous-type direct de "\textbf{CN;x-bar}", "\textbf{CN;x-foo}", et "\textbf{name;x-bar;x-foo}". Noter que "\textbf{CN}" est un sous-type de "\textbf{name}".
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Utilisation des language tags dans LDAP }
 
\
 
\hspace{1mm}  Les serveurs qui supportent le stockage d'attributs avec des options de tag de langage dans le DIT devraient permettre à tout type d'attribut uns syntaxe chaîne d'avoir des options de tag de langage. Les serveurs peuvent permettre d'associer des options de langage avec d'autres type d'attributs.
\vspace{5mm} \\
\hspace{1mm}  Les clients ne devraient pas assumer que les serveurs ont cette capacité.
\vspace{5mm} \\
\hspace{1mm}  Les implémentations ne doivent pas interpréter la structure du tag en comparant 2 tags, et doivent les traiter simplement comme chaîne de caractère.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Options de tag de langage }
 
\
 
\hspace{1mm}  Un option de tag de langage associe un langage naturel avec des valeurs d'un attribut. Une description d'attribut peut contenir plusieurs attributs avec le même type d'attribut mais avec différentes combinaisons de tag de langage.
\vspace{5mm} \\
 
 
\hspace{1mm} Une option de tag de langage en notation ABNF:
 
{\ttfamily
language-tag-option = "lang-" Language-Tag\\ Language-Tag = Primary-subtag *( "-" Subtag )\\ Primary-subtag = 1*8ALPHA\\ Subtag = 1*8(ALPHA / DIGIT)\\ ALPHA = \%x41-5A / \%x61-7A ; A-Z / a-z\\ DIGIT = \%x30-39 ; 0-9\\
}
\vspace{8mm}
 
\hspace{1mm} Exemples d'AttributeDescription valide:
 
{\ttfamily
givenName;lang-en-US\\ CN;lang-ja\\ SN;lang-de;lang-gem-PFL\\ O;lang-i-klingon;x-foobar\\ description;x-foobar\\ CN\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Filtres de recherche }
 
\
 
\hspace{1mm} Par exemple, Un filtre d'égalité de type "\textbf{name;lang-en-US}" et une valeur d'assertion "\textbf{Billy Ray}", avec l'entrée suivante:
 
{\ttfamily
dn: SN=Ray,DC=example,DC=com\\ objectClass: person DOES NOT MATCH (wrong type)\\ objectClass: extensibleObject DOES NOT MATCH (wrong type)\\ name;lang-en-US: Billy Ray MATCHES\\ name;lang-en-US: Billy Bob DOES NOT MATCH (wrong value)\\ CN;lang-en-US: Billy Ray MATCHES\\ CN;lang-en-US;x-foobar: Billy Ray MATCHES\\ CN;lang-en;x-foobar: Billy Ray DOES NOT MATCH (differing lang-)\\ CN;x-foobar: Billy Ray DOES NOT MATCH (no lang-)\\ name: Billy Ray DOES NOT MATCH (no lang-)\\ SN;lang-en-GB;lang-en-US: Billy Ray MATCHES\\ SN: Ray DOES NOT MATCH (no lang-, wrong value)\\
}
\vspace{8mm}
 
\hspace{1mm}  Noter que "CN" et "SN" sont des sous-type de "name"
\vspace{5mm} \\
 
 
\hspace{1mm} Exemple, un filtre d'égalité de type "\textbf{name}" et une valeur d'assertion "\textbf{Billy Ray}", avec l'entrée suivante:
 
{\ttfamily
dn: SN=Ray,DC=example,DC=com\\ objectClass: person DOES NOT MATCH (wrong type)\\ objectClass: extensibleObject DOES NOT MATCH (wrong type)\\ name;lang-en-US: Billy Ray MATCHES\\ name;lang-en-US: Billy Bob DOES NOT MATCH (wrong value)\\ CN;lang-en-US;x-foobar: Billy Ray MATCHES\\ CN;lang-en;x-foobar: Billy Ray MATCHES\\ CN;x-foobar: Billy Ray MATCHES\\ name: Billy Ray MATCHES\\ SN;lang-en-GB;lang-en-US: Billy Ray MATCHES\\ SN: Ray DOES NOT MATCH (wrong value)\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Attributs demandés dans la recherche }
 
\
 
\hspace{1mm}  Les clients peuvent fournir des options de tag de langage dans chaque AttributeDescrition dans la liste des attributs demandés. Si les options de tag de langage sont fournis, seul les attributs ayant la description sont retournés
\vspace{5mm} \\
 
 
\hspace{1mm} exemple, si le client demande un attribut description, et une entrée qui match contient les attributs suivants:
 
{\ttfamily
objectClass: top\\ objectClass: organization\\ O: Software GmbH\\ description: software products\\ description;lang-en: software products\\ description;lang-de: Softwareprodukte\\
}
\vspace{8mm}
 
\hspace{1mm} Le serveur devrait retourner:
 
{\ttfamily
description: software products\\ description;lang-en: software products\\ description;lang-de: Softwareprodukte\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Compare }
 
\
 
\hspace{1mm}  Les tag peuvent être utilisés dans une requête compare. Le serveur les traites de la même manière que pour les recherches.
\vspace{5mm} \\
 
 
\hspace{1mm} exemple, un requête compare de type "\textbf{name}" et une valeur d'assertion "\textbf{Johann}" avec une entrée:
 
{\ttfamily
objectClass: top\\ objectClass: person\\ givenName;lang-de-DE: Johann\\ CN: Johann Sibelius\\ SN: Sibelius\\
}
\vspace{8mm}
 
\hspace{1mm}  Le serveur devrait retourner compareTrue. Cependant, si le client demande un compare de type "name;lang-de", la requête échouera avec noSuchAttributeType.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Add }
 
\
 
\hspace{1mm} Les clients peuvent fournir ces tags dans AttributeDescription d'une nouvelle entrée à créer.exemple:
 
{\ttfamily
dn: CN=John Smith,DC=example,DC=com\\ objectClass: residentialPerson\\ CN: John Smith\\ CN;lang-en: John Smith\\ SN: Smith\\ SN;lang-en: Smith\\ streetAddress: 1 University Street\\ streetAddress;lang-en-US: 1 University Street\\ streetAddress;lang-fr: 1 rue Universite\\ houseIdentifier;lang-fr: 9e etage\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Modify }
 
\
 
\hspace{1mm}  Un client peut fournir ces tags dans un AttributeDescription comme partie d'un élement de modification. Les types d'attibuts et les options doivent matcher exactement les valeurs stockées dans l'annuaire.Par exemple, si la modification est 'delete', et que les valeurs à supprimer ont un tag de langage, ces options doivent être fournis dans l'opération modify.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Utilisation des plages de langage dans LDAP }
 
\
 
\hspace{1mm}  Une plage de langage, en notation ABNF:
\vspace{5mm} \\
\hspace{1mm}  \textbf{language-range-option = "lang-" [ Language-Tag "-" ]}
\vspace{5mm} \\
\hspace{1mm}  où \textbf{language-Tag} et définis dans la BCP 47.
\vspace{5mm} \\
 
 
\hspace{1mm} Exemple d'AttributeDescription contenant des options de plage de langage:
 
{\ttfamily
givenName;lang-en-\\ CN;lang-\\ SN;lang-de-;lang-gem-\\ O;lang-x-;x-foobar\\
}
\vspace{8mm}
 
\hspace{1mm}  Une option de plage de langage n'est pas une option de tagging. les attributs ne peuvent pas être stockés avec des options de plage de langage.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Filtres de recherche }
 
\
 
\hspace{1mm}  Si une option de plage de langage est présente dans un AttributeDescription dans une assertion, alors pour chaque entrée dans le scope, les valeurs de chaque attribut dont AttributeDescription consistent du même type d'attribut ou ses sous-type et contiennent un option de tag de langage correspondant sont retournés
\vspace{5mm} \\
 
 
\hspace{1mm} exemple, un filtre d'égalité de type "\textbf{name;lang-en-}" et une valeur d'assertion "\textbf{Billy Ray}", avec l'entrée suivante:
 
{\ttfamily
dn: SN=Ray,DC=example,DC=com\\ objectClass: person DOES NOT MATCH (wrong type)\\ objectClass: extensibleObject DOES NOT MATCH (wrong type)\\ name;lang-en-US: Billy Ray MATCHES\\ name;lang-en-US: Billy Bob DOES NOT MATCH (wrong value)\\ CN;lang-en-US: Billy Ray MATCHES\\ CN;lang-en-US;x-foobar: Billy Ray MATCHES\\ CN;lang-en;x-foobar: Billy Ray MATCHES\\ CN;x-foobar: Billy Ray DOES NOT MATCH (no lang-)\\ name: Billy Ray DOES NOT MATCH (no lang-)\\ SN;lang-en-GB;lang-en-US: Billy Ray MATCHES\\ SN: Ray DOES NOT MATCH (no lang-, wrong value)\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Attributs demandés dans les opérations de recherche }
 
\
 
\hspace{1mm}  Les clients peuvent fournir des options de plage de langage dans chaque AttributeDescription dans la liste des attributs demandés dans une opération de recherche. Si le client demande l'attribut "\textbf{name;lang-en-}", le serveur pourrait retourner "\textbf{name;lang-en-US}" et "\textbf{CN;lang-en;lang-ja}", mais pas "\textbf{SN}" ni "\textbf{name;lang-fr}".
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Comparaison }
 
\
 
\hspace{1mm} exemple, une requête compare de type "\textbf{name;lang-}" et une valeur d'assertion "\textbf{Johann}", avec l'entrée suivante:
 
{\ttfamily
objectClass: top\\ objectClass: person\\ givenName;lang-de-DE: Johann\\ CN: Johann Sibelius\\ SN: Sibelius\\
}
\vspace{8mm}
 
\hspace{1mm}  Le serveur devrait retourner compareTrue. Si le client avait fournis le type "name;lang-de", et la valeur d'assertion "Sibelius" avec l'entrée ci-dessus, la requête aurait échouée.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Découverte des options de langage }
 
\
 
\hspace{1mm}  Un serveur devrait indiquer qu'il supporte les options de tag de langage en publiant \textbf{1.3.6.1.4.1.4203.1.5.4} ( Language Tag Options ) et \textbf{1.3.6.1.4.1.4203.1.5.5} ( Language Range Options ) dans le rootDSE.
\vspace{5mm} \\
 
\end{flushleft}
\end{document}
