| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.gdata.books">
- <title>Die Buchsuche Daten API verwenden</title>
- <para>
- Die Buchsuche Daten <acronym>API</acronym> von Google erlaubt Client Anwendungen Inhalte
- von Buchsuchen zu sehen und in der Form von Google Daten <acronym>API</acronym> Feeds
- zu aktualisieren.
- </para>
- <para>
- Die Client Anwendung kann die Buchsuche Daten <acronym>API</acronym> verwenden um
- Volltextsuchen nach Büchern durchzuführen und um Standardinformationen von Büchern zu
- erhalten, diese zu bewerten und zu kommentieren. Man kann auch individuelle
- <ulink url="http://books.google.com/googlebooks/mylibrary/">Sammlungen von
- Benutzerbibliotheken und öffentlichen Kommentaren</ulink>. Letztendlich kann eine
- Anwendung authentifizierte Anfragen abschicken um es Benutzern zu ermöglichen
- Bibliothekssammlungen zu erstellen, zu modifizieren, zu bewerten, zu benennen,
- zu kommentieren und andere Accountspezifische Dinge zu erlauben.
- </para>
- <para>
- Für weitere Informationen über die Buchsuche Daten <acronym>API</acronym> referieren Sie
- bitte zum offiziellen <ulink
- url="http://code.google.com/apis/books/gdata/developers_guide_php.html">PHP Developer's
- Guide</ulink> auf code.google.com.
- </para>
- <sect2 id="zend.gdata.books.authentication">
- <title>Beim Buchsuche Service authentifizieren</title>
- <para>
- Man kann sowohl auf öffentliche als auch private Feeds zugreifen indem man
- die Buchsuche Daten <acronym>API</acronym> verwendet. Öffentliche Feeds benötigen keine
- Authentifizierung, aber man kann Sie nur lesen. Wenn man Benutzerbibliotheken
- verändern oder bewerden will, oder Label hinzufügen will muß der eigene
- Client authentifiziert werden bevor man private Feeds anfragt. Er kann sich
- authentifizieren indem einer von zwei Möglichkeiten verwendet wird:
- AuthSub Proxy Authentifizierung oder ClientLogin Benutzername/Passwort
- Authentifizierung. Bitte referieren Sie zum <ulink
- url="http://code.google.com/apis/books/gdata/developers_guide_php.html#Authentication">Authentifizierungs
- Kapitel im <acronym>PHP</acronym> Developer Guide</ulink> für weitere Details.
- </para>
- </sect2>
- <sect2 id="zend.gdata.books.searching_for_books">
- <title>Nach Büchern suchen</title>
- <para>
- Die Buchsuche Daten <acronym>API</acronym> bietet eine Anzahl an Feeds die Sammlungen
- von Büchern auflisten.
- </para>
- <para>
- Die am meisten übliche Aktion ist das empfangen von Bücherlisten die einer
- Suchanfrage entsprechen. Um das zu tun muß ein <classname>VolumeQuery</classname>
- Objekt erstellt und an die <methodname>Books::getVolumeFeed()</methodname> Methode
- übergeben werden.
- </para>
- <para>
- Um zum Beispiel eine Schlüsselwortabfrage, mit einem Filter auf der Sichtbarkeit
- um die Ergebnisse auf partielle oder komplette sichtbare Bücher zu gegrenzen,
- durchzuführen müssen die <methodname>setMinViewability()</methodname> und
- <methodname>()</methodname> Methoden des <classname>VolumeQuery</classname> Objekts
- verwendet werden. Der folgende Codeschnipsel zeigt Titel und Sichtbarkeit aller Volumes
- deren Metadaten oder Texte dem Suchbegriff "domino" entsprechen:
- </para>
- <programlisting language="php"><![CDATA[
- $books = new Zend_Gdata_Books();
- $query = $books->newVolumeQuery();
- $query->setQuery('domino');
- $query->setMinViewability('partial_view');
- $feed = $books->getVolumeFeed($query);
- foreach ($feed as $entry) {
- echo $entry->getVolumeId();
- echo $entry->getTitle();
- echo $entry->getViewability();
- }
- ]]></programlisting>
- <para>
- Die <classname>Query</classname> Klasse, und Subklassen wie
- <classname>VolumeQuery</classname>, sind dafür zuständig das Feed <acronym>URL</acronym>
- erzeugt werden. Der VolumeQuery der vorher gezeigt wurde erzeugt eine
- <acronym>URL</acronym> die der folgenden entspricht:
- </para>
- <programlisting language="php"><![CDATA[
- http://www.google.com/books/feeds/volumes?q=keyword&min-viewability=partial
- ]]></programlisting>
- <para>
- Beachte: Da die Ergebnisse von Buchsuchen öffentlich sind, können Buchsuche
- Abfragen ohne Authentifizierung durchgeführt werden.
- </para>
- <para>
- Hier sind einige der üblichsten <classname>VolumeQuery</classname> Methoden für das
- Setzen von Suchparametern:
- </para>
- <para>
- <methodname>setQuery()</methodname>: Spezifiziert einen Suchabfragebegriff. Buchsuchen
- durchsuchen alle Metadaten der Bücher und des kompletten Textes nach Büchern die
- dem Begriff entsprechen. Buchmetadaten enthalten Titel, Schlüsselwörter,
- Beschreibungen, Namen von Autoren, und Untertitel. Es ist zu beachten das alle
- Leerzeichen, Hochkomma oder andere Punktierungen im Parameterwert
- <acronym>URL</acronym>-escaped werden müssen. (Verwende ein Plus
- (<emphasis>+</emphasis>) für ein Leerzeichen.) Um nach einer exakten Phrase zu suchen
- muß die Phrase in Hochkomma eingeschlossen werden. Um zum Beispiel nach einem Buch zu
- suchen das der Phrase "spy plane" entspricht, muß der <property>q</property> Parameter
- auf <command>%22spy+plane%22</command> gesetzt werden. Man kann jede der <ulink
- url="http://books.google.com/advanced_book_search">zusätzlichen
- Suchoperatoren</ulink> verwenden die von der Buchsuche unterstützt werden. Zum
- Beispiel gibt <command>jane+austen+-inauthor:austen</command> Entsprechungen zurück die
- Jane Austen erwähnen (aber nicht von Ihr geschrieben wurden).
- </para>
- <para>
- <methodname>setStartIndex()</methodname>: Spezifiziert den Index des ersten passenden
- Ergebnisses das im Ergebnisset enthalten sein sollte. Dieser Parameter verwendet
- einen eins-basierenden Index, was bedeutet dass das erste Ergebnis 1 ist, das
- zweite Ergebnis 2 und so weiter. Dieser Parameter arbeitet in Verbindung mit
- dem max-results Parameter um festzustellen welche Ergebnisse zurückzugeben
- sind. Um zum Beispiel das dritte Set von 10er Ergebnissen zu erhalten,
- 21-30-set, muß der <property>start-index</property> Parameter auf
- <emphasis>21</emphasis> und der max-results Parameter auf <emphasis>10</emphasis>
- gesetzt werden. Es ist zu beachten dass dies kein genereller Cursor Mechanismus ist.
- Wenn man zuerst eine Abfrage mit <command>?start-index=1&max-results=10</command>
- und anschließend eine andere Anfrage mit
- <command>?start-index=11&max-results=10</command>, kann der Service nicht
- garantieren das die Ergebnisse äquivalent sind, weil zwischen den zwei Anfragen
- Einfügungen oder Löschungen durchgeführt worden sein können.
- </para>
- <para>
- <methodname>setMaxResults()</methodname>: Spezifiziert die maximale Anzahl an
- Ergebnissen die im Ergebnisset enthalten sein sollen. Dieser Parameter arbeitet in
- Verbindung mit dem start-index Parameter um festzustellen welche Ergebnisse
- zurückgegeben werden sollen. Der Standardwert dieses Parameters ist
- <emphasis>10</emphasis> und der Maximalwert ist <emphasis>20</emphasis>.
- </para>
- <para>
- <methodname>setMinViewability()</methodname>: Erlaubt es Ergebnisse entsprechend dem
- <ulink
- url="http://code.google.com/apis/books/docs/dynamic-links.html#terminology">Status
- der Sichtbarkeit</ulink> der Bücher zu filtern. Dieser Parameter akzeptiert einen
- von drei Werten: <emphasis>'none'</emphasis> (der Standardwert, der alle passenden
- Bücher zurückgibt Unabhängigkeit von der Sichtbarkeit),
- <emphasis>'partial_view'</emphasis> (was nur Bücher zurückgibt die der Benutzer komplett
- oder teilweise sehen kann), oder <emphasis>'full_view'</emphasis> (was nur Bücher
- zurückgibt die der Benutzer in Ihrer Komplettheit sehen kann).
- </para>
- <sect3 id="zend.gdata.books.partner_restrict">
- <title>Partner Co-Branded Suche</title>
- <para>
- Die Google Buchsuche bietet eine <ulink
- url="http://books.google.com/support/partner/bin/answer.py?hl=en&answer=65113">Co-Branded
- Suche</ulink> an, die Inhaltspartner erlaubt Volltextsuchen Ihrer Bücher von
- deren Webseite anzubieten.
- </para>
- <para>
- Wenn man ein Partner ist der eine Co-Branded Suche durchführen will indem die
- Buchsuche Daten <acronym>API</acronym> verwendet wird, kann man das tun indem die
- Feed <acronym>URL</acronym> von vorher so angepasst wird das Sie auf die eigene
- Co-Branded Suchimplementation zeigt. Wenn zum Beispiel, eine Co-Branded Suche unter
- der folgenden <acronym>URL</acronym> vorhanden ist:
- </para>
- <programlisting language="php"><![CDATA[
- http://www.google.com/books/p/PARTNER_COBRAND_ID?q=ball
- ]]></programlisting>
- <para>
- kann man die gleichen Ergebnisse erhalten indem die Buchsuche Daten
- <acronym>API</acronym> mit der folgenden <acronym>URL</acronym> verwendet wird:
- </para>
- <programlisting language="php"><![CDATA[
- http://www.google.com/books/feeds/p/PARTNER_COBRAND_ID/volumes?q=ball+-soccer
- ]]></programlisting>
- <para>
- Um eine alternative <acronym>URL</acronym> zu spezifizieren wenn ein Volume Feed
- abgefragt wird, kann ein extra Parameter an
- <methodname>newVolumeQuery()</methodname> übergeben werden
- </para>
- <programlisting language="php"><![CDATA[
- $query =
- $books->newVolumeQuery('http://www.google.com/books/p/PARTNER_COBRAND_ID');
- ]]></programlisting>
- <para>
- Für zusätzliche Informationen oder Support, sehen Sie in unser
- <ulink url="http://books.google.com/support/partner/">Partner Help Center</ulink>.
- </para>
- </sect3>
- </sect2>
- <sect2 id="zend.gdata.books.community_features">
- <title>Übliche Features verwenden</title>
- <sect3 id="zend.gdata.books.adding_ratings">
- <title>Eine Bewertung hinzufügen</title>
- <para>
- Ein Benutzer kann einem Buch eine Bewertung hinzufügen. Die Buchsuche verwendet
- eie 1-5 Bewertungssystem in dem 1 die geringste Bewertung ist. Benutzer können
- Ihre Bewertungen nicht aktualisieren oder löschen.
- </para>
- <para>
- Um eine Bewertung hinzuzufügen, muß ein <classname>Rating</classname> an
- <classname>VolumeEntry</classname> hinzugefügt werden und an den Anmerkungsfeed
- gesendet werden. Im unten gezeigten Beispiel starten wir von einem leeren
- <classname>VolumeEntry</classname> Objekt.
- </para>
- <programlisting language="php"><![CDATA[
- $entry = new Zend_Gdata_Books_VolumeEntry();
- $entry->setId(new Zend_Gdata_App_Extension_Id(VOLUME_ID));
- $entry->setRating(new Zend_Gdata_Extension_Rating(3, 1, 5, 1));
- $books->insertVolume($entry, Zend_Gdata_Books::MY_ANNOTATION_FEED_URI);
- ]]></programlisting>
- </sect3>
- <sect3 id="zend.gdata.books.reviews">
- <title>Reviews</title>
- <para>
- Zusätzlich zu Bewertungen, können authentifizierte Benutzer Reviews übermitteln
- oder Ihre eigenen Reviews bearbeiten. Für Informationen darüber wie vorher
- übermittelte Reviews angefragt werden können, siehe <ulink
- url="#zend.gdata.books.retrieving_annotations">Empfangen von
- Anmerkungen</ulink>.
- </para>
- <sect4 id="zend.gdata.books.adding_review">
- <title>Eine Review hinzufügen</title>
- <para>
- Um eine Review hinzuzufügen, muß man ein <classname>Review</classname> Objekt an
- <classname>VolumeEntry</classname> übergeben und es an den Anmerkungsfeed
- übertragen. Im unteren Beispiel starten wir von einem bestehenden
- <classname>VolumeEntry</classname> Objekt.
- </para>
- <programlisting language="php"><![CDATA[
- $annotationUrl = $entry->getAnnotationLink()->href;
- $review = new Zend_Gdata_Books_Extension_Review();
- $review->setText("Dieses Buch ist aufregend!");
- $entry->setReview($review);
- $books->insertVolume($entry, $annotationUrl);
- ]]></programlisting>
- </sect4>
- <sect4 id="zend.gdata.books.editing_review">
- <title>Eine Review bearbeiten</title>
- <para>
- Um eine bestehende Review zu aktualisieren muß man zuerst die Review die
- bearbeitet werden soll empfangen, diese modifizieren, und dann an den
- Anmerkungsfeed übertragen.
- </para>
- <programlisting language="php"><![CDATA[
- $entryUrl = $entry->getId()->getText();
- $review = new Zend_Gdata_Books_Extension_Review();
- $review->setText("Dieses Buch ist leider nicht sehr gut!");
- $entry->setReview($review);
- $books->updateVolume($entry, $entryUrl);
- ]]></programlisting>
- </sect4>
- </sect3>
- <sect3 id="zend.gdata.books.labels">
- <title>Labels</title>
- <para>
- Die Buchsuche Daten <acronym>API</acronym> kann verwendet werden um Volumes mit
- Label über Schlüsselwörtern zu versehen. Ein Benutzer kann diese übertragen,
- empfangen und verändern. Siehe <ulink
- url="#zend.gdata.books.retrieving_annotations">Anmerkungen empfangen</ulink>
- dafür wie vorher übertragene Label gelesen werden können.
- </para>
- <sect4 id="zend.gdata.books.submitting_labels">
- <title>Ein Set von Label übermitteln</title>
- <para>
- Um Label zu übermitteln muß ein <classname>Category</classname> Objekt mit dem
- Schema <constant>LABELS_SCHEME</constant> an <classname>VolumeEntry</classname>
- hinzugefügt und an den Anmerkungsfeed übergeben werden.
- </para>
- <programlisting language="php"><![CDATA[
- $annotationUrl = $entry->getAnnotationLink()->href;
- $category = new Zend_Gdata_App_Extension_Category(
- 'rated',
- 'http://schemas.google.com/books/2008/labels');
- $entry->setCategory(array($category));
- $books->insertVolume($entry, Zend_Gdata_Books::MY_ANNOTATION_FEED_URI);
- ]]></programlisting>
- </sect4>
- </sect3>
- <sect3 id="zend.gdata.books.retrieving_annotations">
- <title>Empfangen von Anmerkungen: Reviews, Bewertungen und Label</title>
- <para>
- Die Buchsuche Daten <acronym>API</acronym> kann verwendet werden um Anmerkungen zu
- empfangen die von einen angegebenen Benutzer übermittelt wurden. Anmerkungen
- enthalten Reviews, Bewertungen und Label. Um irgendwelche Anmerkungen von Benutzern
- zu empfangen muß eine nicht authentifizierte Anfrage gesendet werden die die
- BenutzerID des Benutzers enthält. Um die Anmerkungen des authentifizierten Benutzers
- zu empfangen muß der Wert <emphasis>me</emphasis> als BenutzerID verwendet werden.
- </para>
- <programlisting language="php"><![CDATA[
- $feed = $books->getVolumeFeed(
- 'http://www.google.com/books/feeds/users/USER_ID/volumes');
- <i>(oder)</i>
- $feed = $books->getUserAnnotationFeed();
- // Gibt Titel und Bewertungswerte aus
- foreach ($feed as $entry) {
- foreach ($feed->getTitles() as $title) {
- echo $title;
- }
- if ($entry->getRating()) {
- echo 'Bewertung: ' . $entry->getRating()->getAverage();
- }
- }
- ]]></programlisting>
- <para>
- Für eine Liste an unterstützten Abfrageparametern, kann man in das Kapitel
- <ulink url="#zend.gdata.books.query_parameters">Abfrageparameter</ulink> sehen.
- </para>
- </sect3>
- <sect3 id="zend.gdata.books.deleting_annotations">
- <title>Anmerkungen löschen</title>
- <para>
- Wenn man einen Anmerkungseintrag empfängt der Bewertungen, Reviews und/oder Label
- enthält können alle Anmerkungen entfernt werden indem
- <methodname>deleteVolume()</methodname> an diesem Eintrag aufgerufen wird.
- </para>
- <programlisting language="php"><![CDATA[
- $books->deleteVolume($entry);
- ]]></programlisting>
- </sect3>
- </sect2>
- <sect2 id="zend.gdata.books.sharing_with_my_library">
- <title>Büchersammlungen und My Library</title>
- <para>
- Die Google Buchsuche bietet eine Anzahl von Benutzerspezifischen Buchsammlungen,
- jede mit Ihrem eigenen Feed.
- </para>
- <para>
- The wichtigste Sammlung ist die My Library des Benutzers, welche die Bücher
- repräsentiert die sich der Benutzer merken, organisieren und mit anderen Teilen will.
- Das ist die Sammlung die der Benutzer sieht wenn er auf seine oder ihre
- <ulink url="http://books.google.com/books?op=library">My Library Seite</ulink>
- zugreift.
- </para>
- <sect3 id="zend.gdata.books.retrieving_books_in_library">
- <title>Bücher auf der Benutzerbibliothek erhalten</title>
- <para>
- Die folgenden Kapitel beschreiben wie eine Liste von Büchern von der Bibliothek
- eines Benutzers, mit oder ohne Abfrageparameter, empfangen werden können.
- </para>
- <para>
- Man kann den öffentlichen Feed einer Buchsuche ohne Authentifizierung abfragen.
- </para>
- <sect4 id="zend.gdata.books.retrieving_all_books_in_library">
- <title>Alle Bücher in einer Benutzerbibliothek empfangen</title>
- <para>
- Um alle Bücher eines Benutzers zu empfangen muß eine Anfrage an den My Library
- Feed gesendet werden. Um die Bibliothek des authentifizierten Benutzers zu
- erhalten muß <emphasis>me</emphasis> statt der <constant>USER_ID</constant>
- verwendet werden.
- </para>
- <programlisting language="php"><![CDATA[
- $feed = $books->getUserLibraryFeed();
- ]]></programlisting>
- <para>
- Es ist zu beachten das es sein kann das der Feed nicht alle Bücher des Benutzers
- enthält, weil es ein Standardlimit der Anzahl der zurückgegebenen Ergebnisse
- gibt. Für weitere Information siehe den <property>max-results</property>
- Abfrageparameter in <ulink url="#zend.gdata.books.searching_for_books">Suchen
- nach Büchern</ulink>.
- </para>
- </sect4>
- <sect4 id="zend.gdata.books.retrieving_books_in_library_with_query">
- <title>Nach Büchern in einer Benutzerbibliothek suchen</title>
- <para>
- Genauso wie man
- <ulink url="#zend.gdata.books.searching_for_books">über alle Bücher suchen
- kann</ulink>, kann man auch eine Volltextsuche über die Bücher in einer
- Benutzerbibliothek durchführen. Um das zu tun müssen einfach die betreffenden
- Parameter am <classname>VolumeQuery</classname> Objekt gesetzt werden.
- </para>
- <para>
- Zum Beispiel gibt die folgende Abfrage alle Bücher in der eigenen Bibliothek
- zurück die das Word "Bär" enthalten:
- </para>
- <programlisting language="php"><![CDATA[
- $query = $books->newVolumeQuery(
- 'http://www.google.com/books/feeds/users/' .
- 'USER_ID/collections/library/volumes');
- $query->setQuery('Bär');
- $feed = $books->getVolumeFeed($query);
- ]]></programlisting>
- <para>
- Für eine Liste von unterstützten Abfrageparametern können Sie in das Kapitel
- <ulink url="#zend.gdata.books.query_pParameters">Abfrageparameter</ulink> sehen.
- Zusätzlich kann nach Büchern gesucht werden die <ulink
- url="#zend.gdata.books.labels">von einem Benutzer gelabelt wurden</ulink>:
- </para>
- <programlisting language="php"><![CDATA[
- $query = $books->newVolumeQuery(
- 'http://www.google.com/books/feeds/users/' .
- 'USER_ID/collections/library/volumes');
- $query->setCategory(
- $query->setCategory('favorites');
- $feed = $books->getVolumeFeed($query);
- ]]></programlisting>
- </sect4>
- </sect3>
- <sect3 id="zend.gdata.books.updating_library">
- <title>Bücher in einer Benutzerbibliothek aktualisieren</title>
- <para>
- Die Buchsuche Daten <acronym>API</acronym> kann dazu verwendet werden um ein Buch
- einer Benutzerbibliothek hinzuzufügen oder es aus Ihr zu entfernen. Bewertungen,
- Reviews und Label sind über alle Sammlungen eines Benutzers gültig, und
- können deswegen bearbeitet werden indem der Anmerkungsfeed verwendet wird (siehe
- <ulink url="#zend.gdata.books.community_features">Verwendung üblicher
- Features</ulink>).
- </para>
- <sect4 id="zend.gdata.books.library_book_add">
- <title>Ein Buch zu einer Bibliothek hinzufügen</title>
- <para>
- Nach der Authentifizierung können Bucher zur aktuellen Benutzerbibliothek
- hinzugefügt werden.
- </para>
- <para>
- Man kann entweder einen Eintrag von Null auf erstellen wenn man die Volume ID
- weiß, oder einen Eintrag einfügen wenn von irgendeinem Feed gelesen wird.
- </para>
- <para>
- Das folgende Beispiel erstellt einen neuen Eintrag und fügt Ihn der Bibliothek
- hinzu:
- </para>
- <programlisting language="php"><![CDATA[
- $entry = new Zend_Gdata_Books_VolumeEntry();
- $entry->setId(new Zend_Gdata_App_Extension_Id(VOLUME_ID));
- $books->insertVolume(
- $entry,
- Zend_Gdata_Books::MY_LIBRARY_FEED_URI
- );
- ]]></programlisting>
- <para>
- Das folgende Beispiel fügt ein bestehendes <classname>VolumeEntry</classname>
- Objekt in der Bibliothek hinzu:
- </para>
- <programlisting language="php"><![CDATA[
- $books->insertVolume(
- $entry,
- Zend_Gdata_Books::MY_LIBRARY_FEED_URI
- );
- ]]></programlisting>
- </sect4>
- <sect4 id="zend.gdata.books.library_book_remove">
- <title>Ein Buch von einer Bibliothek entfernen</title>
- <para>
- Um ein Buch von einer Benutzerbibliothek zu entfernen, muß
- <methodname>deleteVolume()</methodname> auf dem
- <classname>VolumeEntry</classname> Objekt aufgerufen werden.
- </para>
- <programlisting language="php"><![CDATA[
- $books->deleteVolume($entry);
- ]]></programlisting>
- </sect4>
- </sect3>
- </sect2>
- </sect1>
|