Exportați tabelul în xml. Importarea mai multor fișiere de date XML ca date externe

18.09.2020 Sfat

XML este un limbaj de marcare extensibil. Este conceput pentru a crea documente care sunt utilizate pe web. Diferă de HTML-ul mai obișnuit și mai cunoscut doar prin faptul că oferă posibilitatea de a vă seta propriile etichete și de a le aplica în viitor. Pentru a lucra cu astfel de documente, a le edita și a face modificări, este suficient să aveți cunoștințe de bază de programare; este ușor și ușor de utilizat. Dar înainte de a utiliza un astfel de document, cu atât mai puțin de a-l edita, trebuie să știți decât pentru a deschide XML.

Acest tip de fișier este larg răspândit și, prin urmare, popularitatea problemei devine destul de justificată. Întrucât documentul conţine informații text, atunci este rezonabil să presupunem că tipurile de programe care acceptă formatul text pot fi aplicabile pentru a-l deschide.

Caiet

Una dintre primele opțiuni care îmi vine în minte utilizator experimentat. Acest lucru se datorează faptului că majoritatea codului HTML este editat în acest program, ceea ce înseamnă că XML va accepta și această opțiune.

Asta este adevărat. Când deschideți un fișier ca de obicei, utilizatorului i se oferă posibilitatea de a alege cum se deschide XML , deoarece mai multe programe pot îndeplini sarcina. Oferind această oportunitate blocnotesului, utilizatorul va primi o pânză continuă de simboluri care alcătuiesc codul. Dacă te uiți atent la conținut, o persoană care are o idee despre structura acestui cod va înțelege că totul este corect, cu singura notă - blocnotesul nu acceptă formatarea și întregul cod este prezentat în text solid.

Microsoft Word

Altă opțiune cum se deschide XML , spre deosebire de metoda anterioară, versiunile moderne ale procesorului de text deschid fișiere într-un format care poate fi citit de om. Adică, codul este aranjat sub forma unui tabel ușor de citit. Mulțumită o recenzie mai buna conținut, procesul de editare a documentului este de asemenea simplificat.

WordPad este, de asemenea, excelent pentru vizualizarea conținutului unui fișier XML. Pentru a selecta un program, trebuie să faceți clic dreapta pe document și să selectați comanda „deschide cu”, selectați editorul de text dorit din lista care apare și obțineți rezultatul dorit.

Notepad++

Mulți oameni consideră acest program unul dintre cele mai convenabile pentru vizualizarea și editarea fișierelor XML. În primul rând, acest lucru se datorează de mare viteză funcționează, spre deosebire de Word, editorul deschide chiar și cel mai mare document în câteva secunde și, de asemenea, rearanjează rapid conținutul într-un tabel.

În plus, programul are un număr mare de caracteristici care nu sunt implementate în alte editoare de text. Dacă funcțiile sau descoperirile existente sunt insuficiente, codul editorului poate fi întotdeauna completat cu noi plugin-uri sau module.

Microsoft Excel

Editorul de foi de calcul poate deschide și afișa conținutul documentului dorit. Comoditatea acestui program este că furnizează automat conținutul sub forma unui tabel ușor de citit.

Dezavantajele utilizării acestuia includ faptul că, din cauza limitării numărului de linii, este posibil să nu se deschidă un fișier XML foarte mare. Inainte decum se deschide un fișier XMLîn , trebuie să selectați un tabel XML ca metodă.

Editori de specialitate

Dacă apare o întrebare cum se deschide XML pentru a-l edita și a face modificări, este mai bine să acordați preferință software-ului special. Există mai multe opțiuni pentru astfel de evoluții:

  • Editor XML de la Oxygen;
  • Xsemmel;
  • XMLSpear.

Acestea nu sunt toate opțiunile; există și alte programe create direct pentru a lucra cu fișiere de acest format. Este important să înțelegeți că fiecare dintre ele are propriile capacități care diferă de alți analogi. Prin urmare, trebuie să alegeți software-ul în fiecare caz specific, în conformitate cu nevoile dumneavoastră.

Cum se deschide XML online

Există situații la deschiderea și vizualizarea conținutului fișier XML necesar, dar nu există un singur program adecvat pe computer. În ciuda gamei largi de opțiuni posibile, uneori se întâmplă acest lucru.

În acest caz, utilizatorul poate accesa serviciile online. Cum se deschide XML prin Internet?

Browser

Toată lumea susține această oportunitate. Dar este important să țineți cont de faptul că documentul nu conține informații despre modul exact în care ar trebui să fie afișat conținutul; în consecință, browserul îl va deschide „ca atare”.

A deschide fișierul necesar, trebuie să faceți clic dreapta pe el și să selectați browserul corespunzător ca program; dacă browserul nu este afișat imediat în listă, îl puteți găsi prin „browse”. Fișierul va fi deschis într-o filă nouă; dacă documentul este deteriorat, browserul nu îl va putea deschide și va trebui să căutați o opțiune offline.

Xmlgrid.net

Cel mai popular serviciu online pentru lucrul cu documente XML. Vă permite să deschideți, să vizualizați și să faceți modificări documentelor.

Pentru a lucra cu editorul, trebuie doar să accesați pagina sa de pe Internet. Folosind comanda Open File, încărcăm documentul solicitatși să efectueze toate acțiunile planificate.
Interfața este implementată în limba engleză, dar în general totul este intuitiv.

CodeBeautify

Un alt instrument online potrivit pentru lucrul cu fișiere a acestui format. Înainte de a începe o activitate, trebuie să accesați site-ul web al serviciului și să selectați tipul de document cu care intenționați să lucrați.

Pe lângă deschiderea și editarea unui document, serviciul vă permite să convertiți conținut în diferite formate.

Transformare XSL

Serviciul online este destinat în primul rând pentru conversia și validarea codului existent. În plus, are multe instrumente utile care vor fi utile unui maestru care se confruntă în mod regulat cu nevoia de a interacționa cu documentele XML.

Astfel, dacă trebuie să lucrați cu un limbaj extensibil, puteți găsi întotdeauna un program sau un serviciu online potrivit, indiferent de capacitățile computerului dumneavoastră. Cu toate acestea, majoritatea instrumentelor vă permit doar să vizualizați conținutul și să-l convertiți într-un tabel ușor de citit. Pentru lucrul profesional cu XML, ar trebui să acordați prioritate programelor specializate.

XML este format universal lucrul cu date. Este susținut de multe programe, inclusiv cele din domeniul DBMS. Prin urmare, conversia informațiilor în XML este importantă tocmai din punctul de vedere al interacțiunii și al schimbului de date între aplicatii diverse. Excel este doar unul dintre programele care lucrează cu tabele și poate chiar să efectueze manipulări cu baze de date. Să ne dăm seama cum să convertim fișierele Excel în XML.

Convertirea datelor în format XML nu este un proces atât de simplu, deoarece în timpul acestui proces trebuie creată o schemă specială (schema.xml). Cu toate acestea, pentru a converti informații în dosar simpluÎn acest format, este suficient să ai la îndemână instrumentele obișnuite de salvare în Excel, dar pentru a crea un element bine structurat va trebui să te chinui foarte mult cu întocmirea unei diagrame și conectarea acesteia la document.

Metoda 1: Salvare simplă

În Excel, puteți salva datele în format XML pur și simplu utilizând meniul "Salvează ca…". Adevărat, nu există nicio garanție că toate programele vor funcționa corect cu un fișier care a fost creat în acest fel. Și această metodă nu funcționează în toate cazurile.


Astfel, conversia fișierului din Excel în format XML va fi finalizată.

Metoda 2: Instrumente pentru dezvoltatori

Puteți converti formatul Excel în XML utilizând instrumentele pentru dezvoltatori din fila programului. Mai mult decât atât, dacă utilizatorul face totul corect, atunci la ieșire va primi, spre deosebire de metoda anterioară, un fișier XML cu drepturi depline, care va fi perceput corect aplicații terță parte. Dar trebuie spus imediat că nu orice începător poate avea suficiente cunoștințe și abilități pentru a învăța imediat cum să convertească datele în acest mod.

  1. În mod implicit, fila Instrumente pentru dezvoltatori este dezactivată. Prin urmare, în primul rând, trebuie să-l activați. Accesați fila "Fişier"și faceți clic pe element "Opțiuni".
  2. În fereastra de parametri care se deschide, treceți la subsecțiune „Personalizați panglica”. În partea dreaptă a ferestrei, bifați caseta de lângă valoare "Dezvoltator". După aceea, faceți clic pe butonul "BINE" situat în partea de jos a ferestrei. Fila Instrumente pentru dezvoltatori este acum activată.
  3. Apoi, deschideți tabelul Excel din program în orice mod convenabil.
  4. Pe baza ei, trebuie să creăm o diagramă care poate fi generată în orice editor de text. În aceste scopuri, puteți utiliza Windows Notepad obișnuit, dar este mai bine să utilizați o aplicație specializată pentru programare și lucru cu limbaje de marcare. Să lansăm acest program. Creăm o diagramă în ea. În exemplul nostru, va arăta așa cum se arată mai jos în captura de ecran a ferestrei Notepad++.

    După cum puteți vedea, eticheta de deschidere și de închidere pentru documentul în ansamblu este "set de date". Eticheta joacă același rol pentru fiecare linie "record". Pentru schema va fi suficient dacă luăm doar două rânduri din tabel și nu traducem manual totul în XML. Numele etichetei de deschidere și de închidere a unei coloane poate fi arbitrar, dar în acest caz, pentru comoditate, am preferat să traducem pur și simplu numele coloanelor în limba rusă în Limba engleză. După ce datele sunt introduse, pur și simplu le salvăm prin funcționalitate editor de text oriunde pe hard disk în format XML numit "schemă".

  5. Din nou mergem la Excel cu tabelul deja deschis. Trecerea la fila "Dezvoltator". Pe panglica din cutia de instrumente „XML” faceți clic pe butonul "Sursă". În câmpul care se deschide în partea stângă a ferestrei, faceți clic pe butonul „Hărți XML...”.
  6. În fereastra care se deschide, faceți clic pe butonul "Adăuga…".
  7. Se deschide fereastra de selectare a sursei. Accesați directorul pentru locația diagramei compilate mai devreme, selectați-o și faceți clic pe butonul "Deschis".
  8. După ce elementele diagramei au apărut în fereastră, trageți-le folosind cursorul în celulele corespunzătoare ale numelor coloanelor din tabel.
  9. Faceți clic dreapta pe tabelul rezultat. ÎN meniul contextual mergi pas cu pas pas cu pas „XML”Și "Export…". După aceea, salvați fișierul în orice director.

După cum puteți vedea, există două metode principale de conversie fișiere XLSși formatul XLSX program XML Microsoft Excel. Prima dintre ele este extrem de simplă și constă într-o procedură elementară de salvare cu o anumită extensie prin funcție "Salvează ca…". Simplitatea și claritatea acestei opțiuni sunt, fără îndoială, avantaje. Dar are un dezavantaj foarte serios. Conversia se realizează fără a ține cont de anumite standarde și, prin urmare, un fișier convertit în acest mod poate pur și simplu să nu fie recunoscut de aplicațiile terțe. A doua opțiune implică întocmirea unei hărți XML. Spre deosebire de prima metodă, un tabel convertit folosind această schemă va îndeplini toate standardele de calitate XML. Dar, din păcate, nu fiecare utilizator va putea înțelege rapid nuanțele acestei proceduri.

La dezvoltarea unui sistem electronic de gestionare a documentelor, a fost necesar să se implementeze funcții de export de date în formate populare. În special, în format Microsoft Excela. Cerințele pentru export au fost destul de simple - exportați datele cu un minim de formatare, adică. fără celule îmbinate, joc cu fonturi etc. Exportați formatele XLSX și Excel XML.

În acest caz, vă voi spune despre Excel XML.

Deci, în orice sistem care funcționează pe date tabulare, mai devreme sau mai târziu apare nevoia de a exporta date. Scopurile de export sunt diferite:

Implementarea într-o clasă a unui set de funcții pentru înregistrarea valorilor celulelor și a unei serii este principala cerință, ceea ce implică crearea de funcții pentru înregistrarea valorilor celulelor de tipuri specificate și capacitatea de a scrie seria finită în un fișier.

Abilitatea de a lucra cu o cantitate nelimitată de date - desigur, clasa de export în sine nu poate fi responsabilă pentru volumul care este scris, dar ar trebui să ofere funcții pentru scrierea datelor pe disc și eliberarea acestora memorie cu acces aleator pentru următoarea bucată de date.

Pe lângă cerințele descrise, a fost necesar să se adauge funcții de serviciu:

  • Activarea filtrului automat
  • Comprimați fișierul în zip.

Implementarea

În primul rând, când creez o clasă, verific numele final al fișierului și cer numărul de coloane și rânduri. Fișierul trebuie să aibă un nume valid, iar folderul în care va fi salvat trebuie să existe. Totul este ca de obicei.
Formatul Excel XML vă permite să salvați în fișier informații despre utilizatorul care l-a creat, prin urmare, la crearea unui antet, notez numele organizației, informații despre utilizator și data la care a fost creat fișierul.

Funcția publică writeDocumentProperties($organization = null, $user = null) ( fwrite($this->file, " "); dacă (! is_null($user)) ( fwrite($this->fișier, " „.$user->descriere”."); fwrite($this->fișier, " „.$user->descriere”."); ) $dt = new Datetime(); $dt_string = $dt->format("Y-m-d\TH:i:s\Z"); fwrite($this->fișier, " ".$dt_string.""); fwrite($this->fișier, " ".$dt_string.""); dacă (!is_null($organizație)) fwrite($acest->fișier, " „.$organizație->nume”."); fwrite($this->fișier, " 12.00"); fwrite($this->fișier, ""); }
Adevărat, în această funcție sunt utilizate entitățile sistemului de management al documentelor - organizație (organizație) și utilizator (utilizator). Înlocuirea acestor entități cu, să zicem, valori de șir nu este o problemă.

Cea mai interesantă parte a antetului este informațiile de stil. Sunt implementate foarte convenabil în format Excel XML, așa că pur și simplu creez un tabel cu stiluri pentru șiruri, dată/oră și hyperlinkuri.

Funcția publică writeStyles() ( fwrite($this->fișier, ""); //default style fwrite($this->file, ""); //Stilul Datetime fwrite($this->fișier, ""); fwrite($this->fișier, ""); fwrite($this->fișier, ""); //Stil hiperlink fwrite($this->fișier, ""); //Bold fwrite($acest->fișier, ""); fwrite($this->fișier, ""); }

După finalizarea lucrărilor pregătitoare, puteți trece la înregistrarea datelor. Deschiderea unei foi de lucru este doar câteva etichete, doar în acest moment sunt folosite informații despre numărul de coloane și rânduri.

Funcția publică openWorksheet() ( fwrite($this->file, " "); fwrite($this->fișier, strtr("

", matrice ("(col_count)"=>$this->colCount, "(row_count)"=>$this->rowCount))); )
Dar înregistrarea rândurilor este un proces mai interesant. Clasa trebuie să funcționeze rapid și să proceseze o cantitate nelimitată de date, pentru că pot exista o sută de mii sau chiar un milion de înregistrări! Dacă vrei viteză, lucrează cu memorie; dacă vrei date nelimitate, lucrează cu disc. Pentru a reconcilia cerințele, am implementat funcțiile resetRow și flushRow.
Primul șterge rândul curent, după care poate fi umplut din nou cu date, iar al doilea scrie rândul curent într-un fișier deschis de pe disc. Folosirea lor împreună vă permite să mențineți un echilibru între viteza și cantitatea de memorie utilizată.

Funcția publică resetRow() ( $this->currentRow = array(); ) public function flushRow() ( fwrite($this->file, implode("", $this->currentRow)); unset($this-> currentRow); )
Fiecare celulă este scrisă cu o funcție corespunzătoare tipului de date, și anume appendCellxxx, unde xxx este tipul de date. Tipuri de date valide: Num, String, Real, DateTime, Date, Time, Link. Exemplu de funcție pentru scrierea unei valori numerice:

Funcția publică appendCellNum($value) ( ​​​​$this->currentRow = " „.$valoare”."; }
După înregistrarea tuturor datelor, tot ce rămâne este să închideți foaia de lucru și registrul de lucru.

Aplicație

Utilizarea clasei descrise se bazează pe exportul de date folosind furnizorul CArrayDataProvider. Totuși, presupunând că volumul de date exportate poate fi foarte mare, se folosește un iterator special CDataProviderIterator, care iterează prin datele returnate cu 100 de înregistrări (puteți specifica un număr diferit de înregistrări).

Funcția publică exportExcelXML($organizație, $utilizator, &$nume fișier) ( $this->_provider = new CArrayDataProvider(/*query*/); Yii::import("ext.AlxdExportExcelXML.AlxdExportExcelXML"); $export = nou AlxdExportExcelXML ($filename, count($this->_attributes), $this->_provider->getTotalItemCount() + 1); $export->openWriter(); $export->openWorkbook(); $export->writeDocumentProperties($ organizație, $user); $export->writeStyles(); $export->openWorksheet(); //rând de titlu $export->resetRow(); $export->openRow(true); foreach ($this->_attributes ca $code => $format) $export->appendCellString($this->_objectref->getAttributeLabel($code)); $export->closeRow(); $export->flushRow(); //rânduri de date $rows = nou CDataProviderIterator($this->_provider, 100); foreach ($rows ca $row) ( $export->resetRow(); $export->openRow(); foreach ($this->_attributes ca $code => $format) ( comutați ($format->tip) (case „Num”: $export->appendCellNum($row[$code]); /*alte tipuri*/ implicit: $export->appendCellString(""); ) ) $export->closeRow(); $export->flushRow(); ) //închide tot $export->closeWorksheet(); $export->closeWorkbook(); $export->closeWriter(); //fișier zip $export->zip(); $filename = $export->getZipFullFileName(); )
În cazul meu, fiecare rând este scris pe disc, ceea ce este destul de acceptabil pentru moment, dar poate necesita modificări în viitor. De exemplu, ar fi înțelept să salvați nu fiecare rând, ci la fiecare zece sau chiar o sută de rânduri odată. Apoi viteza de export va crește.

Viteză

Apropo, am învățat din propria experiență cât de important este să-mi asum posibilitatea existenței unor volume mari de date în timpul unei operațiuni batch precum exportul.
Inițial, am încercat să export datele folosind

Când lucrați cu date bloc, este adesea nevoie să le convertiți în alte formate, ca să spunem așa, pentru o interacțiune mai bună. Acest articol va oferi posibile convertoare XML în XLS. Cu alte cuvinte, vom vorbi despre modalități de a converti un format în altul.

Metoda 1: Folosind Excel

Deoarece Excel funcționează impecabil cu fișiere în format bloc, poate deschide extensia XML fără probleme. Așa că putem spune fără nicio strângere de conștiință că Excel este un convertor XML în XLS. Să ne uităm la cum să transformăm formatul folosindu-l:

  1. Deschideți Excel.
  2. În panou, faceți clic pe Fișier.
  3. Faceți clic pe opțiunea „Deschidere”.
  4. În fereastra Explorer care apare, mergeți la directorul cu fișierul XML și deschideți-l.
  1. Deschideți din nou fila Fișier.
  2. Selectați opțiunea „Salvare ca”.
  3. Accesați directorul în care doriți să plasați documentul modificat.
  4. În lista derulantă „Tip de fișier”, selectați „Carte de lucru Excel”.
  5. Salvați fișierul făcând clic pe butonul corespunzător.

După toate manipulările descrise mai sus, fișierul, care avea inițial o extensie XML, se va transforma în Caietul de lucru Excel, adică va avea o extensie XLS.

Metoda 2: Opțiunea de import de date în Excel

Excel este un convertor XML în XLS cu două moduri de a îndeplini această sarcină. Prin urmare, să trecem direct la a doua opțiune, care implică utilizarea opțiunii „Import de date”. Dar înainte de a începe, trebuie să activați meniul „Dezvoltator”, deoarece aici este instrumentul potrivit. În continuare, trebuie să faceți următoarele:

  1. Deschideți programul.
  2. Accesați meniul „Fișier”.
  3. Urmați secțiunea „Opțiuni”.
  4. Deschideți meniul Personalizare panglică.
  5. Puneți o bifă lângă linia „Dezvoltator”, care se află în zona dreaptă a ferestrei.
  6. Faceți clic pe OK.

Bara de instrumente necesară este inclusă în interfața programului, ceea ce înseamnă că putem începe conversia:

  1. Accesați fila Dezvoltator.
  2. Din bara de instrumente, selectați Import.
  3. Se va deschide o fereastră în care trebuie să selectați un fișier XML.
  4. Va apărea o fereastră care vă va cere să creați o schemă bazată pe date. Faceți clic pe OK.
  5. După aceasta, va apărea oa doua fereastră în care trebuie să decideți cu privire la locația tabelului importat. Faceți clic pe celula A1 și faceți clic pe OK.

Fișierul este importat în Excel. Acum îl puteți salva ca XLS. Pentru a face acest lucru, prin analogie cu instrucțiunile anterioare, deschideți fila „Fișier”, faceți clic pe „Salvare ca”, specificați directorul, selectați formatul și salvați.

Metoda 3: Utilizarea unui serviciu de Internet

Se poate întâmpla să aveți nevoie de un convertor XLS în XML pentru TVA, de exemplu. În acest caz, Excel nu vă va ajuta și va trebui să apelați la un alt program. În acest caz, să vorbim despre serviciul online Convertio:

  1. În orice browser, accesați pagina principala a acestui serviciu.
  2. Selectați o metodă de încărcare a fișierului. Dacă se află pe disc, faceți clic pe butonul „De pe computer” și selectați-l manager de fișiere. Dacă vă aflați în „nor”, ​​selectați stocarea în sine, apoi fișierul.
  3. Documentul a fost adăugat și este gata pentru conversie. Pentru a face acest lucru, trebuie să selectați formatul XML din lista derulantă din dreapta.
  4. Faceți clic pe butonul „Convertire”.

După aceasta, fișierul va fi pregătit și tot ce trebuie să faceți este să îl descărcați. Convertio nu este doar un convertor de fișiere XLS în XML. El este capabil să lucreze cu o cantitate mare formate. Pur și simplu încărcați fișierul și apoi alegeți formatul în care doriți să-l convertiți.

Așa că ne-am uitat la convertoarele XML în XLS și invers. După cum puteți observa, este excelent pentru conversia XML programul Excel. Cu toate acestea, nu poate converti XLS, așa că necesită ajutorul altor programe. În acest caz, este serviciul online Convertio.

Cei care dețin minunatul program TextKit, sau cel puțin au auzit despre el (cei care nu l-au făcut, urgent) ar fi trebuit să observe printre capabilitățile sale analizarea documentelor XML în orice șablon. Adică, dacă avem un document XML, putem crea cu ușurință un site web folosind TextKit.

Rămâne o mică problemă, cum să obțineți acest XML. De fapt, în scopul creării unui site web, puteți lua documente gata făcute din diverse programe de afiliere, precum MixMarket sau Ozone. Dar despre ei altădată. Vă voi spune cum să obțineți XML dintr-un tabel XLS obișnuit. De fapt, este un format MS Excel.

Deținerea acestor cunoștințe ne va permite să creăm site-uri web folosind TextKit din orice bază de date în Excel. Vom lucra în biroul din 2007.

1) Descărcați suplimentul pentru lucrul cu XML de aici.

2) Accesați meniul principal Excel, parametri.

3) În meniul care se deschide, selectați „Supliment”. Căutăm elementul „Gestionați”, selectați „Suplimente Excel” și faceți clic pe „Go”:

4) În fereastra care se deschide, folosiți „Browse” pentru a selecta fișierul de care avem nevoie XmlTools.xla, adaugă-l în panou și activează-l bifând caseta de lângă el.

În mod implicit, acest fișier este stocat în următorul folder de pe hard disk:
\Office Samples\OfficeExcel2003XMLToolsAddin.

5) Dacă ați făcut totul corect, atunci în „Opțiuni” din secțiunea „Suplimente” veți vedea extensia instalată:

Acum luăm datele noastre pentru a crea document XMLși lucrează cu ei.

1) Faceți clic pe butonul de pe panou. Selectați primul articol:

2) În fereastra care apare, selectați da/nu dacă datele noastre conțin/nu conțin un antet, în cazul meu, așadar, schimb caseta de selectare în yes. Aici ținem apăsat butonul mic „pip” pentru a selecta celulele cu date:

3) Prin glisare, selectați datele pentru a crea un document XML. Apăsați butonul și faceți clic pe OK.

Dacă totul a fost făcut corect, semnul va deveni albastru și alb, iar meniul se va schimba foarte mult:

Ei bine, cam asta e. Acum accesați opțiunile de salvare a documentului și selectați acolo datele XML.

De fapt, asta-i tot! Am primit ca ieșire un document XML gata făcut, pe care acum îl putem analiza în analizator fără probleme. Dar mai multe despre asta altădată :)