La campana.

Ci sono quelli che hanno letto questa notizia prima di te.
Iscriviti per ricevere articoli freschi.
E-mail
Nome
Cognome
Come vuoi leggere la campana
Senza spam.

Recentemente, molta attenzione è pagata per costruire sistemi di e-business, o come sono anche chiamati - B2B (business to business). Dato le raccomandazioni sulla costruzione di sistemi di streaming di scambio di coordinamento delle tecnologie Internet del corpo - consorzio www: l'enfasi è realizzata verso tecnologie XML e costruire sistemi di scambio di documenti XML.

Il vantaggio di utilizzare XML in E-Business è l'elevata efficienza dei sistemi B2B a bassi costi per la sua creazione a causa di una rappresentazione chiara e visiva delle informazioni strutturate, la possibilità di utilizzare i moderni protocolli di rete e la creazione di sistemi aziendali in tempo reale.

L'indipendenza della presentazione delle informazioni sotto forma di documenti XML consente di essere diversi, partecipando al business elettronico, di produrre indipendenti l'uno dall'altro da.

In tutti i sistemi, lo scambio è solitamente costruito dallo stesso schema utilizzando le richieste HTTP. Il protocollo SSL viene applicato come protocollo SSL (ma questo è un argomento separato).

Una delle possibili opzioni per l'elaborazione dei messaggi XML è quello di creare componenti BIN / CGI (ISAPI) -News o COM (server) che formano o elaborando documenti XML.

Da un lato, l'applicazione funge da client, che in modalità post emette una query HTTP, in altra parte, è un server Web sul lato del quale viene elaborata l'elaborazione della query e una risposta. Lo scambio di informazioni utilizza documenti XML.

Una delle opzioni di implementazione più efficaci è l'uso di un parser XML esistente che supporta il modello DOM. Tale parser è una fornitura distributiva di win`98 o parte integrante di IE 4.7 e superiore (per Win`95) e rappresenta il server COM situato nella libreria MSXML.DLL.

Il modello di oggetto componente (COM) è dati incapsulati e metodi in un'unica essenza e un modo per accedervi tramite il sistema di interfaccia. Delphi è semplicemente accessibile all'accesso alle classi Object Com (diverse classi possono essere incluse in un server COM). L'accesso agli oggetti viene eseguito inizializzando l'istanza della classe attraverso il sistema di interfaccia. La descrizione delle interfacce viene eseguita dal linguaggio della definizione dell'interfaccia (IDL), che è possibile eseguire automaticamente i mezzi del mezzo.

Delphi significa importazioni dal server COM msxml.dll.I file di descrizione dell'interfaccia IDL sono costruiti e il file di descrizione binaria del tipo di libreria è TLB. Questa operazione viene eseguita attraverso il menu di sistema: Progetto |. Tipo di importazione della libreria:(Immagine 1). Viene visualizzata la seguente finestra di dialogo (Figura 2), in cui si desidera selezionare un oggetto COM (nel nostro caso, l'oggetto è registrato come "Microsoft.XMLDOM (versione 2.0)") e creare un file TLB (pulsante Creare unità.). Utilizzando il file TLB, l'ambiente genera file "PASKALEVSKY" Descrizione del server COM - MSXML_TLB.PAS

Il file MSXML_TLB.PAS descrive tutte le interfacce, le costanti e i server COM.

Per accedere agli oggetti dell'elemento COM, è necessario nella direttiva Usi.aggiungi il nome del file Descrizione della libreria (msxml_tlb.pas). Di seguito è riportato il programma più semplice che utilizza l'analizzatore DOM STANDARD MSXML.DLL, che scarica il documento XML e lo visualizza nell'elemento della casella di testo MEMO1.

usi. Finestre, messaggi, sysutili, classi, grafici, controlli, moduli, dialoghi, oleserver, msxml_tlb, stdctrls; genere Tform1 \u003d. classe(Tform) Button1: tbutton; Memo1: tmemo; procedura. Button1Click (mittente: Togject); fine; var. Form1: TFORM1; implementazione ($ R * .dfm) Procedura.Tform1.button1click (mittente: togject); // dichiarazione dell'oggetto Soklass Domdocument; var.codoc: CodomDocument; // classe, coerente con l'interfaccia IDomDocument; var.DOC: IXMDocument; inizio. // creando un'istanza dell'oggetto DomDocument; DOC: \u003d Codoc.Create; // chiama un metodo di modalità di un'istanza dell'oggetto DomDocument; Doc.load ("data.xml"); // Accesso all'istanza della proprietà XML dell'oggetto DomDocument; Memo1.text: \u003d doc.xml; fine; fine.

Dom Concept - Modello di documento oggetto

Ogni documento XML è rappresentato come un set di una pluralità di oggetti (classi), con cui è possibile l'accesso a singoli elementi (campi oggetto). DOM - Interfaccia descrive l'accesso a semplici oggetti DomString o caratteriData e parti o parti o elementi XML separati del documento: Domfragmenthelement, Domnode, Domelment.

Le seguenti sono le proprietà e i metodi più importanti di XmldomDocument, Xmldomnode, Xmldomnodelist. Va notato che il modello MSXML.dll XML Analyzer, MSXML.dll XML Analyzer, presentato di seguito, vengono utilizzati dall'analizzatore XML MSXML.DLL rispetto al consorzio DOM approvato dal modello W3C.

Una descrizione più completa degli oggetti DOM INTERFACE può essere trovata su

XMLDOMDocument Object.
Rappresenta il livello superiore della gerarchia dell'oggetto e contiene metodi per lavorare con un documento: i suoi download, analisi, creazione di elementi, attributi, commenti in esso, ecc. .
Proprietà
Async. Proprietà Identificazione della modalità di elaborazione corrente
Parseerror. Restituisce un riferimento all'oggetto di elaborazione dell'errore Xmldomparrarseerror
Abilita - Disabilita la verifica del documento.
uRL Restituisce l'URL del documento
documenthement. Contiene un riferimento all'elemento di root del documento come oggetto XMLDomement.
Metodi
carica (URL)
loadXML (XMLString)
Carica un documento XML
salva (objtarget) Salva il documento XML nel file
abortire. Interrompere il processo di download e elaborazione del documento.
creatAtAttribute (nome) Crea un nuovo attributo con il nome specificato per l'elemento corrente.
createNode (tipo, nome, namespaceuri) Crea un nodo del tipo e titolo specificato
createelement (tagname) Crea un elemento del documento con il nome specificato.
createTextNode (dati) Crea testo all'interno del documento
getelementsbytagname (tagname) Restituisce un collegamento alla raccolta di elementi di documento con il nome specificato
nodefromid (Idstring) Elemento di ricerca per identificatore

Xmldomnode Object.
Oggetto Xmldomnode che implementa l'interfaccia DOM di base Nodo., Progettato per manipolare con un nodo separato di un albero del documento. Le sue proprietà e metodi consentono di ricevere e modificare le informazioni complete sul nodo corrente - il suo tipo, il nome, il nome completo, il suo contenuto, un elenco di elementi figlio, ecc.
Proprietà
nODENAME, BASENAME. Restituisce il nome del nodo corrente.
prefisso. Restituisce il prefisso dello spazio dei nomi.
tipo di dati. Definisce il tipo di contenuto del nodo corrente
nodetype, nodetipestringing. Restituisce il tipo del nodo corrente:
attributi. Restituisce un elenco di attributi del nodo corrente come raccolta xmldomnamendemap.
tESTO. Restituisce il contenuto del supporto corrente sotto forma di testo.
xML. Restituisce la rappresentazione XML del supporto corrente.
nodevalo. Restituisce il contenuto del nodo corrente.
childnodes. Restituisce un elenco di elementi figlio come xmldomnodelist.
primiland, lastchild. Restituisce il primo / ultimo elemento figlio
preconsybling, Nextsibling. Restituisce il precedente / successivo elemento infermieristico.
parentnode. Contiene un riferimento all'elemento principale.
proprietarioDocument. Restituisce il puntatore al documento in cui si trova il nodo corrente.
Metodi
appendchild (NewChild) Aggiunge un nuovo elemento figlio al nodo corrente.
inserisci prima (NewChild, Rifild) Inserisce un nodo figlio, avendo nell'attuale sottosuolo "Sinistra" del nodo specificato dal parametro REFCHILD.
clonenode (profondo) Creare una copia dell'elemento corrente.
getattribute.(Nome)
getattributNode. (Nome)
setAttribute (nome, valore)
setattributNode (xmldomattribute)
Accesso agli attributi (creazione, lettura, scrittura) oggetto. Nome - Nome attributo, valore - il suo valore. Restituisce il valore dell'oggetto Xmldomattribute.
sospelleChild (NewChild, OldChild) RemoveChild (OldChild) Sostituzione dell'oggetto delldchild dell'attuale elenco di filiali su NewChild. Rimozione dell'oggetto delldchild
selectnodes SelectsingLende (PackString) Restituisce l'oggetto XMLDOMNODELIST selezionato dal modello di ricerca o dal primo nodo
transformNode (styesheet)
transfornodetobject (foglio di stili, outputObject)
Assegna una tabella di stile per supportare il nodo corrente e restituisce la stringa - il risultato dell'elaborazione. Un riferimento all'oggetto DomDocument viene trasmesso come parametro, in cui si trovano le istruzioni XSL.

Usando XML in Business.

Per un'immagine più chiara, è necessaria una spiegazione e perché tutto ciò è necessario con cosa capire come funziona:

Quando si crea un sistema B2B o Corporate ERP, quando si organizzano uno scambio di informazioni di documenti XML tra imprese o rami del Prom-I, un sistema informativo collaudato in modo efficace viene utilizzato sulla base dei server Web disponibili sui protocolli HTTP.

Da un lato, l'applicazione funge da client, che in modalità post emette una query HTTP, dall'altro, il server Web è sul lato del quale viene elaborata la richiesta e la risposta. I documenti XML sono usati come scambio.

Ad esempio, in un semplice sistema ERP aziendale del programma contabile (contabilità ACS), è necessario formare una determinata richiesta per una fattura e trasferirla a un ramo con un magazzino (ACS Warehouse). L'arte è un'impostazione simile del problema durante la creazione di un B2B del sistema, quando un'impresa A richiede la disponibilità dei prodotti (effettua un ordine per l'acquisto) dal fornitore V.

L'impresa A e il suo programma agisce come un cliente. Il magazzino serve il fornitore in chi ha un complesso BD del magazzino sul server SQL. Lo scambio viene effettuato tramite un fornitore di server Web aziendale V.

Di seguito è riportato il seguente tipico algoritmo di scambio:


Figura 3.
  1. Azienda A.iniziates. processo A.(Ordine del prodotto), che funge da client web.
  2. Processo A.genera un documento XML (ad esempio, una fattura) e la trasmette come una query post http a un server di fornitori Web V. come URI: viene utilizzato un identificativo per l'elaborazione dell'applicazione. URI può essere lo stesso di tutti i tipi di documenti o individui per ogni tipo. Tutto dipende dalla struttura del server B2B (Web).
  3. Il server Web analizza la richiesta e genera il server Processo B.Passando un documento XML come parametro.
    Il processo nel server Web è avviato ed elaborato come Pagina ASP, CGI (ISISAPI) - Applicazione o Java SevRlet (Applicazione server)
  4. Processo B.- Genera una richiesta al server di database SQL.
  5. Il server SQL fa le operazioni necessarie nel database, costituisce la risposta e lo restituisce. Processo B..
  6. Sulla risposta dal server SQL Processo B. Genera un documento XML (risposta) e lo consente a una risposta alla richiesta HTTP all'applicazione client.
  7. Inoltre, a seconda della situazione sul lato client, viene formata una nuova query HTTP, oppure la sessione termina.

Alcune parole sull'organizzazione della gestione dei documenti.

La regola generale di sviluppo del sistema XML Exchange è:

  • in primo luogo- sviluppo del circuito del flusso di documenti elettronici e della loro struttura;
  • in secondo luogo- Sviluppo di tabelle di funzioni dei processi (sottoprocessi) I.e. Quale funzione in relazione a quale documento XML implementerà ogni processo.

Ogni documento XML, come un documento HTML, dovrebbe consistere in un'intestazione del messaggio (prigioniero di informazioni) e un corpo di messaggi (per la query queste informazioni incorniciate da tagging per rispondere alla richiesta). Affinché il documento XML sia formato correttamente, è necessario per i suoi due componenti dell'intestazione "Intestazione" e "Richiesta" ai tag incorniciati, ad esempio. La vista del documento standard è presentata di seguito:

Il titolo (Figura 4), in contrasto con l'HTML del documento, dovrebbe contenere diversi tipi di informazioni di servizio, comprese le informazioni sul tipo di documento trasmesso e processo di elaborazione. Il trattamento informativo del documento è ricevuto, cioè. La parte significativa è incorniciata dal tag. Va notato che la struttura dell'intestazione dovrebbe essere unita per tutti i tipi di documenti.

Per il processo in esecuzione dal server, l'algoritmo di elaborazione è preferibilmente (ma non necessario) da costruire come segue:


Figura 6.

Alcuni momenti principali durante la creazione di una parte del cliente

Come già spiegato, quando si crea un documento XML utilizza la presentazione sotto forma di un modello DOM. Di seguito è riportato un esempio del testo del testo Delphi del programma di intestazione dei messaggi XML.

procedura.Tthread1.headercreate (mittente: togject); var. // L'annuncio delle classi è necessario per creare Codoc: CodomDocument; // XmldomDocument Object. DOC: DomDocument; R: ixmldomelement; Nodo: ixmldomelement; // domtext txt: ixmldomtext; // DOMATTIBUTE ATTR: IXMLDOMATTIBUTO; inizio. // creando documento DOM DOC: \u003d Codoc.Create; Doc.set_async (falso); // documento iniziale iniziale DOM Doc.loadxml ("
"); // creazione di Domelement (tag<Mittente.>) Nodo: \u003d doc.createelement ("mittente"); // creazione di un nodo di testo " LLC "Typhoon"" TXT: \u003d Doc.CreateTextnode ("LLC" Typhoon "); // Assegnazione di un nodo<Mittente.\u003e Valore // Nodo di testo " LLC "Typhoon"" Nodo.appendchild (txt); // Aggiunta di un oggetto<Mittente.\u003e Nella radice del documento come sussidiaria R.appendchild (nodo); <A partire dal.> Nodo: \u003d doc.createelement ("da"); Txt: \u003d doc.createtextnode ("http://tayfun.ru/xml/default.asp"); Nodo.appendchild (txt); R.appendchild (nodo); // operazioni simili per tag<Per.> Nodo: \u003d doc.createelement ("a"); TXT: \u003d Doc.CreateTextnode ("http://irbis.ru"); Nodo.appendchild (txt); R.appendchild (nodo); // crea Domelment () Nodo: \u003d doc.createelement ("typetocument"); // Creazione di un nodo XMLDomattribute ATT: \u003d Doc.CreateAttribute ("ID", "Ordina"); // Nodo.appendchild (ATT); R.appendchild (nodo); fine;

Va notato che l'annuncio del Codoc: CodomDocument e DOC: variabile DomDocument, nonché la creazione del metodo Crea (DOC: \u003d Codoc.Create;) viene eseguito una volta. La dichiarazione della variabile è nella sezione della descrizione delle variabili globali, e non nella procedura locale, come dimostrato per la visibilità in questo esempio (cioè una variabile globale del modulo di programma DomDocument Type One).

Il risultato del programma di cui sopra sarà l'intestazione creata, in relazione al nostro esempio del documento XML: raffigurato nella figura 5.


Figura 5.


Figura 6.

Il vantaggio principale delle informazioni di trasmissione sotto forma di documenti XML è che è possibile formare un messaggio utilizzando la struttura indipendente delle tabelle nel DBMS sia sul lato ricevuto che sul lato trasmesso. Usando il nostro esempio, lasciare che sia necessario trasferire informazioni sulle fatture dell'impresa A, dal DBMS della struttura mostrata nella figura 6

Per formare un documento XML contenente una fattura, una richiesta SQL inizialmente costruita (query A) con informazioni sulla fattura:

SELEZIONARE * Dalla fattura_generale Dove. Invoicenum \u003d: num SELEZIONAREMerci, qulity, prezzo, hz_cod A partire dal.Merce Dove. Invoicenum \u003d: num //: num: il parametro che specifica il numero della fattura.

Di seguito fa parte del programma che forma il corpo del documento XML:

procedura. Tthread1.dabodycreate (mittente: tobject); var. // classi e xmldomdocument // Codoc: CodomDocument; // deve essere globale, per l'intero modulo. // doc: Domdocument; // annuncio di oggetti a base di damelement R: ixmldomelement; // Domelimento; Nodo, nodo2: ixmldomelement; Node3, Node4: IXMLDMelement; // domtext txt: ixmldomtext; Str: stringa; // Numero di fattura: numero intero; - Variabile globale - // Masching 987654 // Querya, Queryb: Corda; - Variabile globale, // Mantenimento di una richiesta di richiesta // Querya - Richiesta e informazioni generali sulla fattura // Queryb - Query B Informazioni sulla merce descritta in // Fattura (vedi testo) inizio. Query.Close; // Vedi sul testo "Richiedi A" Query.Text: \u003d QUERYA; // richiesta di esecuzione Query.execsql; Query.open; // ricevi l'indirizzo dell'elemento radice R: \u003d doc.get_documentement; Node2: \u003d doc.createelement ("richiesta"); // crea Domelment (tag) Nodo: \u003d Doc.CreateSelement ("Fattura"); // Aggiunta di un oggetto alla radice R.appendchild (node2); // Aggiunta di un articolo in Node2. Appendchild (nodo); // crea Domelment (tag) Node3: \u003d doc.createelement ("Depurerture"); // Aggiunta di un articolo in Nodo. Appendchild (node3); // appello al campo "Depurerture" Str: \u003d Query.fieldbyName ("Depurerture"). Asstring; // Creazione di un nodo di testo \u003d valore del campo // Valore di assegnazione del nodo // nodo di testo, variabile str Nodo.appendchild (txt); // operazioni simili per tag , , // , // (Campo DB "destinatario") Nodo: \u003d doc.createelement ("destinazione"); // Il nome del campo del database potrebbe non coincidere con il nome STR: \u003d Query.FieldbyName ("destinatario") .Asstring; // Taga, in questo vantaggio dell'uso Txt: \u003d doc.createtextnode (STR); // Interfaccia DOM PRIMA DBMS Avere il supporto dell'interfaccia XML, // digitare Oracle 8i o MS SQL 2000 Nodo.appendchild (txt); ... // Formazione di una richiesta per le specifiche merci // chiude la richiesta di accesso Query.Close; // Vedi sul testo "Richiesta in", informazioni. Sui prodotti Query.Text: \u003d Queryb; // Assegnazione dei valori dei parametri Query.params.asinteger: \u003d InvoiceNumber; // richiesta di esecuzione Query2.execsql; // Accesso di apertura per richiedere dati Query.open; // crea Domelment (tag) Node3: \u003d Doc.CreateSelement ("IMEMS"); // Aggiunta di un articolo in Nodo. Appendchild (node3); // Ciclo su tutte le richieste mentre non. EOF.QUERY. fare. Inizia Node4: \u003d doc.createelement ("Imem"); // Aggiunta di un articolo in Node3.appendchild (node4); // Generazione dei dati per tag Str: \u003d query.fieldbybyname ("prezzo"). Asstring; Txt: \u003d doc.createtextnode (STR); Nodo.appendchild (txt); ... // Operazioni simili per tag , , fine; fine;

Come risultato di questa procedura, è formato il seguente testo del documento XML:


Il metodo aperto viene utilizzato per formare una query. Ixmlhttprequest.:

procedura. Apri (Const Bstrmethod, - Metodo Type \u003d "Post" BSTRURL, - Indirizzo del server VARASYNC URL, - Modalità di comunicazione asincrona / sincrona \u003d True BSTRUSER, - Nome utente per Autenticazione BSTRPassword) - Password

Creazione di una parte del server di elaborazione dei documenti

Come notato in precedenza, l'elaborazione della richiesta HTTP può essere eseguita applicazioni CGI o servlet Java. Possibili opzioni per scrivere pagine Asp. Ma in questo caso, la trasmissione dei dati è possibile solo con la "Ottieni" utilizzando la stringa di query. Sebbene, l'elaborazione HTTP della richiesta della pagina ASP funziona in modo più efficiente rispetto all'applicazione CGI. Tuttavia, a mio avviso, senza alcuna differenza, come elaborare e, cosa più importante per risolvere la domanda: come costruire un programma di elaborazione e non con quali mezzi.

Se abbiamo esaminato le opzioni di formazione dei documenti XML dal capitolo precedente, quindi l'attività dell'applicazione server è l'opposto dei documenti XML. Di seguito fa parte del programma che analizza il documento XML:

procedura.Tthread1.daparser (mittente: tobject); var. // annuncio di oggetti a base di damelement R, fnode: ixmldomelement; Str, nomefile: stringa; PARM: String; // annuncio Soklass e CodocXML, CodocxSL, CoDocresult: CodomDocument; // XmldomDocument Object. Xmldoc, Xsldoc, Resultdoc: DomDocument; // httpstr: stringa; - Una variabile globale contenente la stringa di query http Inizio. Xmldoc: \u003d codocxml.create; Xmldoc.loadxml (httpstr); // ricevi l'indirizzo dell'elemento radice R: \u003d doc.get_documentement; // ottenendo il valore dell'elemento Fnode: \u003d r.selectsinglenode ("// typedocument"); // Ottieni un valore Valore Attributo \u003d "Ordina" Nome file: \u003d fnode.getattibuto ("ID"); // e formando il nome del file ordine.xsl Nome file: \u003d filename + ". Xsl"; // creazione di un documento xsldoc Xsldoc: \u003d codocxsl.create; Xsldoc.loadxml (nome file); // Creazione di un documento Xmldoc RISULDERDOC: \u003d CoCocresult.Create; // Impostazione della modalità di elaborazione sincrona Resultdoc.set_async (false); // installando il controllo del debutto Risulddoc.validateonparase: \u003d true; // Collapse Xmldoc con il modello XSL Xmldoc.transformnoc, Resultdoc (xsldoc, Resultdoc); // La variabile Str è assegnata al valore di testo // Documento risultante. Str: \u003d Resultdoc.text; // Elemento di ricerca Fnode: \u003d r.selectsinglenode ("// invoicenumber"); // e ottenere il valore dell'elemento Parm: \u003d fnode.text; // chiude la richiesta di accesso Query.Close; Query.text: \u003d str; // Assegnazione del valore del parametro Query.params.asstring: \u003d parm; // richiesta di esecuzione Query.execsql; fine;

L'intera gamma di analizzazione è quella di applicare il modello XSL, che è formato per ciascun tipo di documento individualmente. Il risultato dell'analisi è la stringa di query SQL. Di conseguenza, l'esecuzione della stringa di query SQL generata renderà le modifiche necessarie nel DBMS.

Il vantaggio di utilizzare l'analisi attraverso il modello è anche il fatto che risulta una flessibilità dei dati e viene ottenuta la completa indipendenza del funzionamento dell'algoritmo dal codice del programma. Di seguito è riportato il testo del modello XSL utilizzato per il tipo di documento di elaborazione.

Inserire in valori Tabreg (da, a, typedoc, body) (" ", "", "") Inserire in merci (valori di faticanumber, nome, prezzo, qualità) (": Num", " ", "", " ")

Spiegazione del suddetto esempio, va notato che l'uso di coppie di tag ed è formale, perché Dopo aver analizzato, almeno un nodo dovrebbe essere presente nel documento XML risultante. Il metodo ResultDoC.Text assegna il valore di testo ottenuto durante l'analisi del documento XML Resultdoc. In questo caso, il valore è tutto ciò che le coppie di tag sono incorniciate e, cioè. Abbiamo formato una richiesta SQL.

Un'altra caratteristica di scrivere il programma dovrebbe essere annotata la possibilità di utilizzare il parametro SQL : Num. L'utilizzo del parametro consente di semplificare il testo del modello XSL. Definizione Il valore degli elementi corrispondenti dei nodi documenti XML viene determinato inizialmente selezionando il nome del nodo corrispondente, ad esempio:

Brevemente su xsl.

L'abbreviazione XSL proviene dal linguaggio stili estensibile di formattazione della tavola di stile (dati XML). Poiché è chiaro dall'intestazione Extensible StyleSheet Language (XSL) (XSL) (XSL) è utilizzato per formattare i dati XML. Per definizione di W3C XSL è composto da due parti:

  • XSLT - TRASFORMAZIONE XSL. La lingua utilizzata per convertire o formattare (trasformare) documenti XML. Pertanto, utilizzando XSLT, possiamo ottenere diverse sezioni di più moduli di dati e dati di dati.
  • Elementi di formattazione. Questi elementi includono tutti gli elementi del design tipografico dei dati, dopo che vengono elaborati utilizzando XSL. Usato solo per formare pagine HTML.

Usando XSLT, possiamo selezionare i dati dal file XML di cui hai bisogno e disponili nel modulo per fornire all'utente. Ad esempio, nel nostro caso, abbiamo trasformato i dati XML come query SQL. La classica applicazione XSL di solito la formattazione di dati come pagine HTML o una rappresentazione rara sotto forma di file RTF.

Il file XSL descrive il modello (modello), in base al quale verrà eseguita la conversione dei dati XML. Tornando ai modelli XSL, i seguenti elementi possono essere assegnati in XSLT (direttive):

Direttiva XSL. descrizione
xSL: Apply-Modelli Direttiva, indicando l'applicazione dell'attributo Attributo Templates SELECT \u003d "Nome modello"
xSL: Attributo. crea l'albero degli attributi e lo aggiunge all'elemento di output, il nome \u003d "Nome attributo" Parametro, Namespace - URI sul namespace (prefisso dei nomi)
xSL: Modello di chiamata cause un modello, un nome attributo \u003d "Uri sul modello"
xSL: scegli.
xSL: quando.
xSL: altrimenti.
effettuare una selezione per condizione XSL: quando expr \u003d "Calcolo dell'espressione su script",
lingua \u003d "nome della lingua"
test \u003d "espressione calcolata"
xSL: commento. genera un commento sul documento di output
xSL: copia.
xSL: copia-di
copia il nodo corrente nella sorgente di uscita o inserisce il frammento del documento al nodo in cui è l'attributo SELECT \u003d "Nome dell'Attributo Sorgente"
xSL: elemento. crea un elemento di output per nome, nome attributo \u003d "nome elemento", namespace \u003d "Uri riferimento allo spazio dei nomi"
xSL: per-ciascuno re-applicare il modello a tutti i nodi dell'elenco dei nodi, selezionare Attributo imposta un elenco di nodi.
xSL: IF. le condizioni Controllo sono impostate dall'attributo di prova come espressione
xSL: include. include un modello esterno, attributo href \u003d "uri riferimento"
xSL: output. specifica il risultato dell'output, l'attributo del metodo potrebbe avere "XML", "HTML" o "Testo"
xSL: Param. specifica il valore del parametro, il nome \u003d attributo "nome del parametro", selezionare \u003d "valore"
xSL: elaborazione-istruzione crea istruzioni per l'elaborazione, il nome dell'attributo \u003d "Istruzioni per il processo del nome"
xSL: Ordina. ordina molti nodi, attributi seleziona \u003d "Nome nodo", tipo di dati \u003d Tipo di dati ("Testo" | "Numero" | QNAME), Order \u003d Ordina Direzione ("Ascending" | "Discendente")
xSL: foglio di stili. definisce il documento del modello XSL, è l'elemento root per XSLT
xSL: modello. specifica il modello XSL, il nome \u003d "Attributo prefisso URI al nome del modello", match \u003d "Nota al nodo a cui si applica il modello"
xSL: testo. genera testo in flusso di output, l'attributo Disable-output-Escaping \u003d "Sì" o "No" indica la possibilità di generare caratteri ESC
xSL: valore-of inserisce il valore del nodo selezionato come attributo del testo, seleziona \u003d "puntatore sull'attributo nodo" da cui viene preso il valore
xSL: variabile specifica il valore dei limiti variabili, l'attributo name \u003d "Nome variabile", selezionare \u003d "Calcola il valore della variabile"
xSL: con-param applica il parametro sul modello, il nome attributo \u003d "nome del parametro", selezionare \u003d Espressione Per calcolare il contesto corrente, il valore predefinito "."

Conclusione

In conclusione, si dovrebbe notare che usando il parser XML standard msxml.dll.non è l'unico mezzo per analizzare e creare documenti XML. Ad esempio, per creare documenti XML per utilizzare efficacemente i componenti TPAGEPRODUSER.e TTABILEPRODUSER.. Ma questo articolo enfatizza solo l'ampiezza e la possibilità di applicare un modello DOM nella pratica.

L'autore sarà molto grato per il feedback sulla pertinenza dell'argomento, il contenuto generale, lo stile della presentazione, nonché tutti gli altri commenti che aiuteranno ulteriormente migliorare la qualità della scrittura di una raccolta di articoli e il rilascio di libri che copre l'oggetto del lato pratico dell'uso dei documenti XML in e-commerce. Per ulteriori informazioni sul lato pratico dell'applicazione dei documenti elettronici, è possibile imparare da www.edocs.al.ru sul sito web dell'autore, è anche progettato per posizionare testi ed esempi di origine.

Molti programmatori Delphi, salvare le impostazioni sono associati utilizzando Ini. File nei loro programmi. L'uso di questo metodo, in progetti meno gravi, è necessario evitare, poiché limita la flessibilità, che impedisce un'ulteriore espansione del programma. Vale la pena dire che un tale approccio è piuttosto popolare, a causa della sua facilità d'uso e della presenza di fondi integrati sull'ambiente di sviluppo.

Tuttavia, l'opzione ideale per la memorizzazione delle impostazioni del programma è strutturata XML. File. Il loro vantaggio è che il numero di parametri potrebbe non essere risolto. Per capire meglio questo, considera un esempio specifico.

Nel programma USART, quando si fa clic sulla registrazione, viene visualizzato un menu di scelta rapida, che visualizza l'elenco dei punti. Questi elementi sono comandi che a turno vengono scaricati dal file delle impostazioni. Nel caso in cui le impostazioni siano state memorizzate in Ini. Il file, il programma potrebbe salvare e caricare un certo numero di comandi, ad esempio 10 o 50. Non appena è necessario più importante, è necessario riscrivere il codice e, di conseguenza, ri-compilarlo.


Applicazione di un approccio usando XML. File, avremo la possibilità di scaricare tutti i parametri della sezione dinamicamente. A tutto questo, il file di configurazione diventerà più elegante, senza un numero eccessivo di parametri. Tuttavia, gli strumenti standard per lavorare con XML. Delphi ha molti inconvenienti, quindi consiglio di utilizzare la libreria standard Msxml.. Di solito è la parte predefinita dei sistemi familiari di Windows.


Per il collegamento Msxml.Dobbiamo formare un file di interfaccia con un elenco di tutte le funzioni importandolo dal server COM. Come importare l'interfaccia è scritta non abbastanza articoli dettagliati, ti suggerisco di scaricare il file Msxml2_tlb.pas. Già pronto all'uso. Dopo aver scaricato il file, posizionarlo accanto al tuo progetto o lanciare alla cartella Delphi Lib Lib. Pertanto, tutti i programmi creati saranno in grado di utilizzare il modulo. Msxml., È sufficiente aggiungere msxml2_tlb agli usi.

Per chiarezza, considera il seguente esempio dell'applicazione di questa libreria:

Procedura LoadData; Var xmldoc: Domdocument; Radice: ixmldomelement; Iniziare xmldoc: \u003d codomdocument.create; Xmldoc.load ("settins.xml"); Root: \u003d xmldoc.documentement; ShowMessage ("dimensione / larghezza"). Testo); Radice: \u003d nil; Xmldoc: \u003d nil; fine;

Innanzitutto, viene creata un'istanza della classe DomDocument, dopodiché il contenuto del file Impostazioni.xml viene caricato nella memoria. Come secondo lo standard qualsiasi XML. Il file deve contenere il tag root (in questo caso configurazione), quindi dobbiamo ottenerlo usando la funzione Documenthement.. Quindi il contenuto del contenuto tra tags che a sua volta sono tra i tag . Pertanto, dal file Impostazioni.XML, il nostro metodo distribuirà il testo in Messagebox "100px".

500px. 100px.

Qui viene applicato il metodo selectsinglende, che prende la stringa come parametro.

Ordina le attività di risoluzione su Delfi
Delphi è il secondo linguaggio di programmazione con cui gli studenti più spesso si conoscono nel processo di apprendimento. Questo è l'inizio della programmazione orientata agli oggetti di apprendimento. Io, come studente, fatto per me per me la conclusione che non esiste un metodo più semplice per padroneggiare la lingua piuttosto che scrivere una calcolatrice su di esso. Anche se ti rendi conto della funzione elementare dell'aggiunta di due numeri, questo è già su un sacco di luce.

Codegaear, Delphi 7, Lazarus è diversi compilatori, programmi che verranno trasferiti al codice della macchina scritto da te, convertendolo in Zoliki e uno. Questi sono tutti programmi per la creazione di programmi e non vengono separati linguaggi di programmazione. Questi compilatori utilizzano il linguaggio di programmazione Pascal Object Pascal alla base del linguaggio Delphi, che è simile alla sintassi simile al solito Pascal, ma è funzionale significativamente diverso.

Cos'è la sintassi del linguaggio di programmazione?

Questo è un formato per scrivere vari operatori. Ad esempio, il ciclo "per" sul Pascal ha il seguente formato: "Per N: \u003d 1 a K do", ecc.

Nel linguaggio di programmazione C ++, lo stesso ciclo è scritto in qualche modo diverso: per (n \u003d 1; n scriviamo una calcolatrice

Questo ti darà a capire come gli oggetti con il codice del programma interagiscono, quali sono "variabili", come funzionano le funzioni matematiche. Tutta la programmazione in ogni caso sarà un calcolo. Il gioco è anche un programma che considera costantemente qualcosa, funziona con numeri e funzioni numeriche. La programmazione è inseparabile dalla matematica.

Usiamo per scrivere l'ambiente di sviluppo Lazarus. La sua funzionalità non è così ricca come, ad esempio, codegear, ma è un accesso gratuito ed è progettato per studiare.

Aprendo l'ambiente di sviluppo, vediamo la forma e il pannello degli elementi. Ecco una forma.

Ecco il pannello dell'elemento.

La prima cosa che faremo è aggiungere i tre elementi necessari per implementare la funzione di aggiunta di due numeri. Abbiamo bisogno di: "tedit" nel numero di tre pezzi e "tbutton". Nella figura qui sotto, vengono visualizzati nel pannello delle frecce. Clicca su di loro una volta, e poi una volta in forma, e appaiono su di esso.

Questi sono campi di testo per l'input e un pulsante normale. Incontri questi elementi usando quasi tutti i programmi Windows. Guarda.


Ora pulisci queste iscrizioni. Fare clic sulla scheda Visualizza. E fai clic su "Ispettore di oggetti. Questa finestra apparirà.

Fare clic una volta sul nostro elemento "Pulsante" sul modulo e modificare il valore "Didascalia" nella finestra di ispezione in qualsiasi altro. Ad esempio, sulla parola "OK". Fai clic su Invio. Vediamo sulla forma, poiché l'elemento ha cambiato il nome.

Basta farlo con Modifica, basta non rinominare, ma li renderiamo senza alcun contenuto. Li evidenziamo a turno e puliamo il valore del testo nell'ispettore. Non dimenticare di premere INVIO.

Secondo il risultato, la nostra forma sembra così.


Ora che il nostro calcolatore ha guadagnato, è necessario registrare il codice software necessario per la procedura del nostro pulsante. Fare clic sull'elemento del pulsante due volte e aprire l'editor di origine.

Vedere? Button1Click Procedura. Questa è una procedura che è responsabile di ciò che accade quando fai clic sul pulsante una volta. E il seguente è necessario verificare: il programma è necessario nella terza modifica per portarci la somma dei numeri introdotti nei primi due campi. Scriviamo il codice.

Tali semplici 5 righe di codice dobbiamo scrivere. I commenti e le spiegazioni sono visibili nella foto sopra. Dopodiché, fai clic su questo pulsante.

Una compilazione del nostro progetto sarà compilata. Sarà assemblato nel programma. Entriamo i numeri nei primi due campi, fai clic sul pulsante e ottieni il valore della quantità.

Conclusione

È possibile fare clic sul pulsante "File", quindi "Salva tutto", selezionare la cartella da salvare e avrai un programma a pieno regime, il cui inizio può essere fatto dal desktop. Ora cerca di capirlo da solo che devi riscrivere in questo codice in modo che il programma sia diviso per due numeri e non piegato. Suggerimento: è necessario modificare il tipo di dati. Il video qui sotto mostra un esempio simile, ma in Delphi 7, non Lazarus.

Benvenuto! Questo blog è dedicato a Internet e computer e, più precisamente, sono stati dedicati a loro.

Probabilmente è immediatamente visto che molti anni non sono apparsi sul sito per molti anni. Sì, questo è il destino della maggior parte dei blog. Una volta che questo progetto era un'impresa ambiziosa, e l'autore, come in molti altri che hanno scritto al momento, erano piani su larga scala per diventare uno dei migliori blogger russi. Bene, se guardi ora, poi da quei blog che sono stati creati simultaneamente con il mio, la maggior parte era già stata dissolta nell'eternità. E sono andato a tacere il blog del tempo mancante. Quindi sì, non è più aggiornato. Anche se una volta vinco in questo sito nel concorso del blog del 2011.

Ho persino avuto l'idea di rimuovere tutto questo, ma poi ho rivisto i vecchi materiali e ho capito che potrebbero essere ancora utili ai lettori. Sì, alcuni articoli sono obsoleti (se ho abbastanza forza, riceveranno i segni appropriati), ma il sito, ad esempio, può essere utile ai principianti - qui puoi leggere sui concetti di base di Internet, imparare a personalizzare il Internet, finestre o persino decidere di andare a Linux. Quindi guarda le intestazioni e seleziona quella adatta a te.

E, dopo tutto, spero che sia più di un semplice blog, ma una vera guida internet. Il sito può essere trovato nella modalità directory, in cui tutti gli articoli disponibili sono strutturati da categorie. E chi sa forse, nuovi articoli di qualità inizieranno ad apparire qui.

Levigatrice

Picodi.RU è un portale di sconto da coupon internazionali, un esperto polacco nel risparmio e negli acquisti economici. I poli sono considerati una delle nazioni più economiche del mondo, quindi non sorprende che questo tipo di progetto sia cresciuto dall'avvio polacco Kodyrabatowe.pl. Cosa può essere utile a questo portale ad un normale utente di Internet in Russia?

I moderni telefoni Android sono più dei telefoni. Si abituare al set di programmi installati, alla cronologia delle chiamate e messaggi di testo, raccolte di foto e molto. Ma il tempo va, e il dispositivo completamente disposto inizia a rallentare, bug o semplicemente perde una vista presentabile a causa della scheggiatura sul corpo o sul graffi sullo schermo. C'è una questione di scegliere un nuovo telefono e cambiare il telefono Android. E se la domanda di scelta, ora ignoreremo la festa ora, quindi "muoversi" a un nuovo telefono rimane un problema serio - assolutamente non voglio avviare tutti i dati da zero. Qui parleremo di questo oggi.

La maggior parte dei lettori di questo blog, molto probabilmente, non ha mai affrontato le versioni del controllo della versione e non si avvicinano nel prossimo futuro. E scusa. Questa invenzione estremamente user-friendly è ampiamente utilizzata dai programmatori, ma, a mio parere, potrebbe essere molto utile e a coloro che lavorano attivamente con i testi. Ma, probabilmente, non esiste ora il sistema di controllo della versione, che sarebbe facile iniziare a utilizzare per il "ufficio Microsoft) del lavoro. Ciononostante, penso che il materiale stabilito nell'articolo possa essere interessante per tutti i lettori.

Se hai pensato a come dai film della tua TV Guarda la rete e accedi a Internet, questo articolo è per te. No, so che alcuni televisori hanno la funzionalità di Smart TV, ma non l'ho mai visto funzionare bene. Apparentemente, pertanto, è stato recentemente dimostrato Google un dispositivo completamente straordinario, è immediatamente terminato con una sensazione. Stiamo parlando del Media Streamer Chromecast (Chromkast), una versione più perfetta e conveniente del giocatore favorito del lo scorso anno Nexus Q.

Dongle Chromkast, le cui dimensioni non superano i 2 pollici, si collega alla porta HDMI del televisore e consente di godere di guardare il contenuto Web di streaming. Per controllare lo streamer, è possibile utilizzare qualsiasi dispositivo (tablet, PC, smartphone) in base alla piattaforma operativa IOS, Windows, Android o Mac OS.

Questo articolo è dedicato al dispositivo di memoria del sistema Android, problemi che possono sorgere a causa della sua mancanza e come risolverli. Io stesso non ho avuto molto tempo fa che il mio telefono Android ha iniziato a rilasciare regolarmente messaggi su una carenza di memoria quando si cerca di stabilire una particolare applicazione. Ciò che è stato molto strano per me nonostante il fatto che sulla descrizione sul mercato ci dovrebbero essere stati circa 16 GB e ho anche aumentato questo volume utilizzando una scheda di memoria aggiuntiva. Tuttavia, il problema era, e ho dovuto ardere a fondo prima di aver trovato la giusta soluzione che non richieda la ricezione dell'accesso alla radice o il pieno recupero del telefono allo stato di fabbrica.

La lingua XML è sempre più utilizzata per memorizzare le informazioni, condividendola tra applicazioni e nodi web. In molte applicazioni, questa lingua viene utilizzata come archiviazione di base di dati in altri - per esportare e importare dati XML. Ne consegue che è tempo che gli sviluppatori pensino a come utilizzare i dati XML nelle proprie applicazioni.

In questo articolo, considereremo il modello del modello oggetto del documento XML (DOM) e la sua implementazione di Microsoft - Microsoft XML Dom.

XML DOM è un modello di oggetti che fornisce agli oggetti sviluppatori di scaricare ed elaborare i file XML. Il modello dell'oggetto è composto dai seguenti oggetti principali: XmldomDocument, XmldomnoDelist, Xmldomnode, Xmldomnamednodemap e XmldomparrarseError. Ciascuno di questi oggetti (eccetto XmldomParseError) contiene proprietà e metodi per ottenere informazioni sull'oggetto, manipolare i valori e la struttura dell'oggetto, nonché spostarsi lungo la struttura del documento XML.

Considera i principali oggetti di XML DOM e dare diversi esempi del loro uso a Borland Delphi.

Usando XML DOM in Borland Delphi

Per utilizzare Microsoft XML DOM nelle applicazioni Delphi, è necessario collegare la libreria di tipo appropriata al progetto. Per fare ciò, eseguiamo il progetto | Biblioteca di tipo di importazione e nel pannello di dialogo IMPORT Type Library, selezionare la libreria di Microsoft XML versione 2.0 (versione 2.0), che si trova solitamente nel file di Windows \\ System \\ msxml.dll

Dopo aver premuto il pulsante Crea unità, verrà creato il modulo di interfaccia MSXML_TLB, che ci consentirà di utilizzare gli oggetti DOM XML: DomDocument, XMDocument, XMLHTTPRequest e un numero di altri implementati nella libreria MSXML.DLL. Il collegamento al modulo MSXML_TLB deve essere elencato nell'elenco degli usi.

Dispositivo XML DOM.

Il modello di oggetto documento rappresenta un documento XML sotto forma di una struttura ad albero costituita da rami. Le interfacce software XML DOM consentono alle applicazioni di navigare nell'albero del documento e manipolare i suoi rami. Ogni ramo può avere un tipo specifico (DomnoDetype), in base ai quali sono determinati i genitori e le controllate. Nella maggior parte dei documenti XML, puoi trovare rami degli elementi, attributi e rami di testo. Attributi (attributo) sono uno speciale tipo di ramo e non sono filiali sussidiari. Per la gestione degli attributi, vengono utilizzati metodi speciali forniti dagli oggetti DOM XML.

Oltre ad implementare le interfacce consentati del Consorzio World Wide Web (W3C), Microsoft XML Dom contiene metodi che supportano XSL, schemi XSL, namespaces e tipi di dati. Ad esempio, il metodo SelectNodes consente di utilizzare XSL Templates Syntax (XSL Pattern Syntax) per cercare rami in un contesto specifico e il metodo Transformnode supporta l'uso di XSL per eseguire trasformazioni.

Prova il documento XML

Come esempio di un documento XML, prendi il catalogo del CD-ROM di musica, che ha la seguente struttura:

Impero Burlesque Bob Dylan. STATI UNITI D'AMERICA. Columbia. 10.90 1985 Nascondi il tuo cuore. Bonnie Tylor. UK. Record CBS. 9.90 1988 ... Libera il mio cuore. Joe Cocker. STATI UNITI D'AMERICA. EMI. 8.20 1987

Ora siamo pronti per iniziare a considerare il modello dell'oggetto XML Dom, familiarità con cui inizierà con l'oggetto XmldomDocument.

Documento XML - Oggetto XmldomDocument

Lavorare con il documento XML inizia con il download. Per fare ciò, usiamo il metodo di caricamento con un solo parametro che indica l'URL del documento scaricato. Durante il download di file da un disco locale, è specificato solo il nome del file completo (file: /// protocollo in questo caso può essere omesso). Se il documento XML è memorizzato come una stringa, il metodo LoadXML deve essere utilizzato per scaricare tale documento.

Per controllare il metodo di scaricare un documento (sincrono o asincrono), viene utilizzata la proprietà ASYNC. Per impostazione predefinita, questa proprietà è vera, indicando che il documento viene caricato asincrono e il controllo viene restituito all'applicazione anche fino a quando il documento non è completamente caricato. In caso contrario, il documento viene caricato in modo sincrono, quindi è necessario verificare il valore della proprietà ReadyState per scoprirlo, il documento caricato o meno. Puoi anche creare un gestore di eventi onReadStateChange che riceverà il controllo quando si cambia il valore della proprietà ReadyState.

Di seguito viene mostrato come scaricare un documento XML utilizzando il metodo di caricamento:

Utenti ... msxml_tlb ... Procedura TFORM1.Button1Click (mittente: Togject); Var xmldoc: ixmldomdocument; Iniziare xmldoc: \u003d codomdocument.create; Xmldoc.async: \u003d false; Xmldoc.load ('c: \\ data \\ data.xml'); // // Ecco il codice che manipola // Documento XML e dei suoi rami // xmldoc: \u003d nil; fine;

Dopo aver caricato il documento, possiamo fare riferimento alle sue proprietà. Pertanto, la proprietà NODENAME conterrà il valore #Document, la proprietà NodeTyPestring è un valore di documento, la proprietà URL è il file: /// c: /data/data.xml valore.

L'elaborazione è un errore

Di particolare interesse sono le proprietà associate al trattamento del documento quando viene caricato. Pertanto, la proprietà di Parseerror restituisce un oggetto Xmldomparrarseerror contenente informazioni sull'errore avvenuta durante il processo di elaborazione.

Per scrivere un gestore di errore, è possibile aggiungere il seguente codice:

Var xmlerror: Ixmldomparseerror; ... xmldoc.load ('c: \\ data \\ data.xml'); Xmlerror: \u003d xmldoc.parseerror; Se xmlerror.errorcode.<> 0 quindi // // Qui elaboremo l'errore // else memo1.lines.add (xmldoc.xml); ... xmldoc: \u003d nil;

Per scoprire quali informazioni vengono restituite in caso di errore, modificare la seguente voce directory:

Impero Burlesque Bob Dylan. STATI UNITI D'AMERICA. Columbia. 10.90 1985

rimozione dell'elemento di chiusura Nella seconda riga:</p><p> <CD> <TITLE>Impero Burlesque <ARTIST>Bob Dylan.</ARTIST> <COUNTRY>STATI UNITI D'AMERICA.</COUNTRY> <COMPANY>Columbia.</COMPANY> <PRICE>10.90</PRICE> <YEAR>1985</YEAR> </CD> </p><p>Ora scrivi il codice che restituisce le proprietà dell'oggetto Xmldomparrarseerrorr:</p><p>Xmlerror: \u003d xmldoc.parseerror; Se xmlerror.errorcode.<> 0 quindi con XMLerror, memo1.lines, inizierà Aggiungi ('file:' + URL); Aggiungi ('Codice:' + INTOSTR (ERRORCODE)); Aggiungi ('Errore:' + motivo); Aggiungi ('Testo:' + SRcCext); Aggiungi ('Row:' + INTOSTR (LINEA)); Aggiungi ('Posizione:' + INTOSTR (LINEPOS)); End els werstime memo1.lines.add (xmldoc.xml); Fine;</p><p>e soddisfare la nostra applicazione. Di conseguenza, otteniamo le seguenti informazioni sull'errore.</p> <p>Come si può vedere dall'esempio sopra, le informazioni restituite dall'oggetto XmldomparrarseError sono sufficienti per localizzare l'errore e comprendere il motivo della sua occorrenza.</p> <p>Ora ripristina l'elemento di chiusura <TITLE> Nel nostro documento e continuare la discussione di XML Dom.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Accesso all'albero del documento</h2> <p>Per accedere all'albero del documento, è possibile ottenere l'elemento radice e quindi passare attraverso le sue filiali o trovare un ramo specifico. Nel primo caso, otteniamo l'elemento root attraverso la proprietà documentale, che restituisce un oggetto di tipo Xmldomnode. Di seguito viene mostrato come utilizzare la proprietà documentale per ottenere il contenuto di ciascun elemento figlio:</p><p>Nodo var: ixmldomnode; Radice: ixmldomelement; I: Integer; ... root: \u003d xmldoc.documentement; Per i: \u003d 0 a root.childnodes.Length-1 Inizia il nodo: \u003d root.childnodes.itm [i]; Memo1.lines.add (nodo.text); Fine;</p><p>Per il nostro documento XML, otteniamo il seguente testo.</p> <p>Se siamo interessati ad una sorta di ramo specifico o livello di ramo al di sotto della prima filiale, possiamo utilizzare il metodo NODEFROMID o il metodo GetElementByTAGName dell'oggetto XMLDOMDocument.</p> <p>Il metodo NODEFROMID richiede la specifica di un identificatore univoco definito in schema XML o definizione del tipo di documento (DTD) e restituisce un ramo con questo identificatore.</p> <p>Il metodo GeetELementBytagname richiede un'indicazione di una stringa con un elemento specifico (tag) e restituisce tutte le filiali con questo articolo. Di seguito viene mostrato come utilizzare questo metodo per trovare tutti gli artisti nella nostra directory CD-ROM:</p><p>Nodi: IXMLDOMNODELIST; Nodo: ixmldomnode; ... Nodi: \u003d xmldoc.getelementsbytagname ('artista'); Per i: \u003d 0 a nodes.Length-1 Inizia il nodo: \u003d nodi.Item [i]; Memo1.lines.add (nodo.text); Fine;</p><p>Per il nostro documento XML, otterremo il seguente testo.</p> <p>Si noti che il metodo Xmldomnode SelectNodes fornisce un modo più flessibile per accedere ai rami del documento. Ma a proposito è leggermente inferiore.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Document Branch - Xmldomnode Object</h2> <p>L'oggetto Xmldomnode è un ramo di documento. Abbiamo già incontrato questo oggetto quando è stato ottenuto l'elemento radice del documento:</p><p>Root: \u003d xmldoc.documentement;</p><p>Per ottenere informazioni sulla filiale del documento XML, è possibile utilizzare le proprietà dell'oggetto Xmldomnode (tabella 1).</p> <p>Per accedere ai dati memorizzati nel ramo, in genere utilizzare la proprietà NodeValue (disponibile per attributi, rami di testo, commenti, istruzioni per l'elaborazione e le sezioni CDATA) o la proprietà del testo che restituisce il contenuto del testo della filiale o della proprietà NodeTypedValue. Quest'ultimo, tuttavia, può essere utilizzato solo per i rami con elementi digitati.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h3> Spostarsi sull'albero del documento</h3> <p>L'oggetto Xmldomnode fornisce una varietà di modi per passare attraverso l'albero del documento. Ad esempio, per accedere alla filiale dei genitori, viene utilizzata la proprietà ParenNnode, l'accesso ai rami infantili viene eseguita attraverso le proprietà dei bambini (tipo Xmldchild), firstchild e lastchild (tipo xmldomnode), ecc. La proprietà ProprietarioDocument restituisce un oggetto XmlDocument che identifica il documento XML stesso. Le proprietà sopra riportate facilitano la muoversi attraverso l'albero del documento.</p> <p>Ora supererò tutti i rami del documento XML:</p><p>Root: \u003d xmldoc.documentement; Per i: \u003d 0 a root.childnodes.Length-1 Inizia il nodo: \u003d root.childnodes.itm [i]; Se node.Haschildnodes Allora GetChilds (nodo, 0); Fine;</p><p>Come notato sopra, l'oggetto SelectNodes Xmldomnode fornisce un modo più flessibile per accedere ai rami del documento. Inoltre, c'è un metodo selectsinglende che restituisce solo la prima filiale del documento. Entrambi questi metodi consentono di specificare i modelli XSL per cercare filiali.</p> <p>Considera il processo di utilizzo del metodo SelectNodes per estrarre tutti i rami con un ramo del CD e un'inflazione.</p><p>Root: \u003d xmldoc.documentement; Nodi: \u003d root.selectnodes ('cd / price');</p><p>La raccolta dei nodi sarà posizionata tutti i rami del CD del prezzo Switter. La discussione dei modelli XSL tornerà un po 'più tardi.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h3> Manipolazione da figlia rami</h3> <p>Per la manipolazione delle controllate, possiamo utilizzare i metodi dell'oggetto Xmldomnode (tabella 2).</p> <p>Per eliminare completamente il record del primo disco, è necessario eseguire il seguente codice:</p><p>Var xmldoc: ixmldomdocument; Radice: ixmldomnode; Nodo: ixmldomnode; Xmldoc: \u003d codomdocument.create; Xmldoc.async: \u003d false; Xmldoc.load ('c: \\ data \\ data.xml'); // Ottieni la radice dell'elemento radice: \u003d xmldoc.documentelement; Nodo: \u003d root; // rimuovere la prima controllata nodo.removechild (node.firstchild);</p><p>Si prega di notare che in questo esempio rimuoviamo la prima filiale. Come rimuovere il primo elemento della prima filiale, è mostrato di seguito:</p><p>Var xmldoc: ixmldomdocument; Radice: ixmldomnode; Nodo: ixmldomnode; Xmldoc: \u003d codomdocument.create; Xmldoc.async: \u003d false; Xmldoc.load ('c: \\ data \\ data.xml'); // Ottieni la radice dell'elemento radice: \u003d xmldoc.documentelement; // e il primo nodo sussidiario: \u003d root.firstchild; // rimuovere la prima controllata nodo.removechild (node.firstchild);</p><p>Nell'esempio sopra, non abbiamo rimosso il primo ramo. <CD>…</CD>e il primo elemento del ramo - <TITLE>….

Ora aggiungi un nuovo ramo. Di seguito è riportato un codice che mostra come aggiungere un nuovo record del CD-ROM di musica:

VAR Newnode: ixmldomnode; BAMBINO: IXMLDOMNODE; ... // Crea un nuovo ramo - Newnode: \u003d xmldoc.createnode (1, 'cd', ''); // Aggiungi elemento Bambino: \u003d xmldoc.createnode (1, 'titolo', ''); // Aggiungi un elemento newnode.appendchild (figlio); // e imposta il suo valore di bambino.Text: \u003d 'Pink Floyd'; // Aggiungi elemento <ARTIST> Bambino: \u003d xmldoc.createnode (1, 'artista', ''); // Aggiungi un elemento newnode.appendchild (figlio); // e stabilire il suo valore di bambino.Text: \u003d 'Division Bell'; // Aggiungi elemento. <COUNTRY> Bambino: \u003d xmldoc.createnode (1, 'Paese', ''); // Aggiungi un elemento newnode.appendchild (figlio); // e imposta il suo valore di bambino.Text: \u003d 'UK'; // Aggiungi elemento. <COMPANY> Bambino: \u003d xmldoc.createnode (1, 'azienda', ''); // Aggiungi un elemento newnode.appendchild (figlio); // e imposta il suo valore figlio.Text: \u003d 'EMI Records Ltd.'; // Aggiungi elemento. <PRICE>Bambino: \u003d xmldoc.createnode (1, 'prezzo', ''); // Aggiungi un elemento newnode.appendchild (figlio); // e stabilire il suo valore di bambino.Text: \u003d '11 .99 "; // Aggiungi un elemento <YEAR> Bambino: \u003d xmldoc.createnode (1, 'anno', ''); // Aggiungi un elemento newnode.appendchild (figlio); // e stabilire il suo valore di bambino.Text: \u003d '1994'; // e aggiungere la radice root.appendchild (newnode); ...</p><p>Il codice sopra mostra la seguente sequenza di azioni per aggiungere un nuovo ramo:</p> <ul><li>Creazione di un nuovo ramo con CreateNode: <ul><li>creazione di un oggetto utilizzando il metodo CreateNode;</li> <li>aggiungere un elemento al ramo del metodo Appendchild;</li> <li>impostazione del valore dell'elemento attraverso la proprietà del testo;</li> <li>... Ripeti per tutti gli articoli.</li> </ul></li> <li>Aggiunta di un nuovo ramo al documento di Appendchild.</li> </ul><p>Ricordiamo che il metodo Appendchild aggiunge un ramo alla fine di un albero. Per aggiungere un ramo a un luogo specifico dell'albero, è necessario utilizzare il metodo InsertBefore.</p> <h2> Set di rami - Oggetto XmldomnoDelist</h2> <p>L'oggetto XMLNodelist contiene un elenco di rami che possono essere costruiti utilizzando i metodi di selezione o getelementsByTaGName, ed è anche ottenuto dalla proprietà dei bambini.</p> <p>Abbiamo già considerato l'uso di questo oggetto nell'esempio indicato nella sezione "spostandosi sull'albero del documento". Qui diamo anche alcuni commenti teorici.</p> <p>Il numero di rami nell'elenco può essere ottenuto come il valore della proprietà della lunghezza. I rami hanno indici da 0 a lunghezza-1, e ogni singolo ramo è disponibile tramite un elemento di array dell'oggetto con l'indice corrispondente.</p> <p>Si spostando sull'elenco dei rami possono anche essere eseguiti utilizzando il metodo Nextnode che ritorna il ramo successivo nell'elenco o Nil, se il ramo corrente è il secondo. Per tornare all'inizio dell'elenco, è necessario chiamare il metodo di reset.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Creazione e salvataggio di documenti</h2> <p>Quindi, abbiamo guardato come è possibile aggiungere rami ed elementi ai documenti XML esistenti. Ora crea un documento XML "al volo". Prima di tutto, ti ricorderemo che il documento può essere caricato non solo dall'URL, ma anche dalla solita stringa. Di seguito viene mostrato come creare un elemento radice, che può quindi essere utilizzato per costruire dinamicamente gli elementi rimanenti (che abbiamo già considerato nella sezione "Manipolazione delle controllate"):</p><p>Var xmldoc: ixmldomdocument; Radice: ixmldomnode; Nodo: ixmldomnode; S: WideString; ... s: \u003d ' <CATALOG></CATALOG>'; Xmldoc: \u003d codomdocument.create; Xmldoc.async: \u003d false; Xmldoc.loadxml (s); Root: \u003d xmldoc.documentement; Nodo: \u003d xmldoc.createnode (1, 'cd', ''); Root.appendchild (nodo); Memo1.lines.add (xmldoc.xml); ... xmldoc: \u003d nil;</p><p>Dopo aver creato un documento XML, salvalo nel file utilizzando il metodo Salva. Per esempio:</p> <p>Xmldoc.save ('c: \\ data \\ newcd.xml');</p> <p>Oltre a salvare nel file, il metodo Salva consente di salvare un documento XML in un nuovo oggetto XmldomDocument. In questo caso, il documento è pieno di elaborazione e, di conseguenza, controllando la sua struttura e sintassi. Di seguito viene mostrato come salvare un documento in un altro oggetto:</p><p>Procedura TFORM1.Button2Click (mittente: Togject); Var xmldoc2: ixmldomdocument; Iniziare xmldoc2: \u003d codomdocument.create; Xmdoc.save (xmldoc2); Memo2.lines.add (xmldoc2.xml); ... xmldoc2: \u003d nil; fine;</p><p>In conclusione, notiamo che il metodo Salva consente inoltre di salvare un documento XML su altri oggetti COM che supportano le interfacce ISTREAM, ISETSTREAM o IPESCistStreaminit.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Usando i modelli XSL.</h2> <p>Discutere il metodo di selezione di selezione dell'oggetto Xmldomnode, abbiamo detto che fornisce un modo più flessibile per accedere ai rami del documento. La flessibilità risiede nel fatto che come criterio per selezionare i rami, è possibile specificare un modello XSL. Tali modelli forniscono un meccanismo potente per cercare informazioni nei documenti XML. Ad esempio, per ottenere un elenco di tutti i nomi del CD-ROM di musica nella nostra directory, è possibile seguire la seguente query:</p><p>Per scoprire se i dischi di cui gli esecutori vengono rilasciati negli Stati Uniti, la richiesta è formata come segue:</p><p>Nodi: \u003d root.selectnodes ('cd / artist');</p><p>Di seguito viene mostrato come trovare il primo disco nella directory:</p><p>Nodi: \u003d root.selectnodes ('cd / title');</p><p>e ultimo:</p><p>Nodi: \u003d root.selectnodes ('cd / title');</p><p>Per trovare i dischi di Bob Dilan, è possibile eseguire la seguente query:</p><p>Nodi: \u003d root.selectnodes ('CD [$ qualsiasi $ ARST \u003d "Bob Dylan"] / Titolo');</p><p>e per ottenere un elenco di dischi rilasciato dopo il 1985, svolgiamo la seguente query:</p><p>Nodi: \u003d root.selectnodes ('cd / title');</p><p>Una discussione più dettagliata della sintassi XSL richiede una pubblicazione separata. Per i lettori di intrighi e spingere ulteriori ricerche, darò un solo piccolo esempio del possibile uso di XSL. Supponiamo che dobbiamo convertire la nostra directory nella solita tabella HTML. Approfittando dei modi tradizionali, dobbiamo risolvere tutti i rami degli alberi e per ogni elemento ottenuto per formare i tag corrispondenti <TD>…</TD>.</p> <p>Usando XSL, creiamo semplicemente un modello (o un tavolo stile), in cui indichiamo cosa e come convertire. Quindi imponiamo questo modello al nostro catalogo - e pronto: prima di noi il testo del modello XSL, che converte la directory nella tabella (elenco 2).</p> <p>Il codice per sovrapposizione del modello XSL al nostro catalogo è simile a questo:</p><p>Procedura TFORM1.Button2Click (mittente: Togject); Var xsldoc: ixmldomdocument; Iniziare xsldoc: \u003d codomdocument.create; Xsldoc.load ('c: \\ data \\ data.xsl'); Memo2.text: \u003d xmldoc.transformnode (xsldoc); Xsldoc: \u003d nil; fine;</p><p>Completando la nostra discussione su XSL, si dovrebbe dire che attualmente questa lingua è utilizzata attivamente per la trasformazione tra diversi documenti XML, nonché per la formattazione dei documenti.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Conclusione</h2> <p>Per ragioni abbastanza comprensibili, in un articolo è impossibile considerare tutti gli oggetti DOM Microsoft XML e portare esempi del loro utilizzo. Qui abbiamo solo toccato i problemi principali dell'utilizzo di XML DOM in applicazioni. Nella scheda. 3 Mostra tutti gli oggetti implementati in Microsoft XML DOM.</p> <p>Calcolatore 12 "2000</p> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy loading=lazy>");</script> </div> <div class="bsb-wrap bsb-bold bsb-after-post php-mode" data-post-id="4848" data-share-url="/eshhe-odin-nalog-chem-zamenit-nalog-na-modernizatsiyu/"> <div class="bsb-items"> <div class="bsb-item bsb-facebook bsb-no-count" data-id="facebook"> <a href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fqipu.ru%2Fit%2Ftele2%2Fkak-v-delphi-sformirovat-xml-fail-putevoditel-po-internetu---vse.html" class="bsb-link" target="_blank" data-wpel-link="internal"> <i class="bsb-icon icon icon-facebook"></i> <span class="bsb-label">Condividere.</span> </a> </div> <div class="bsb-item bsb-telegram bsb-no-count" data-id="telegram"> <a href="https://qipu.ru/it/tg://msg?text=https%3A%2F%2Fqipu.ru%2Ftele2%2Fkak-v-delphi-sformirovat-xml-fail-putevoditel-po-internetu---vse.html" class="bsb-link" target="_blank" data-wpel-link="internal"> <i class="bsb-icon icon icon-telegram"></i> <span class="bsb-label">Condividere.</span> </a> </div> <div class="bsb-item bsb-twitter bsb-no-count" data-id="twitter"> <a href="https://twitter.com/share?url=https%3A%2F%2Fqipu.ru%2Fit%2Ftele2%2Fkak-v-delphi-sformirovat-xml-fail-putevoditel-po-internetu---vse.html" class="bsb-link" target="_blank" data-wpel-link="internal"> <i class="bsb-icon icon icon-twitter"></i> <span class="bsb-label">Tweet.</span> </a> </div> <div class="bsb-item bsb-vkontakte bsb-no-count" data-id="vkontakte"> <a href="https://vk.com/share.php?url=https%3A%2F%2Fqipu.ru%2Ftele2%2Fkak-v-delphi-sformirovat-xml-fail-putevoditel-po-internetu---vse.html" class="bsb-link" target="_blank" data-wpel-link="internal"> <i class="bsb-icon icon icon-vkontakte"></i> <span class="bsb-label">Piace</span> </a> </div> <div class="bsb-item bsb-fb-messenger bsb-no-count" data-id="fb-messenger"> <a href="https://qipu.ru/it/fb-messenger://share/?link=https%3A%2F%2Fqipu.ru%2Ftele2%2Fkak-v-delphi-sformirovat-xml-fail-putevoditel-po-internetu---vse.html" class="bsb-link" target="_blank" data-wpel-link="internal"> <i class="bsb-icon icon icon-fb-messenger"></i> <span class="bsb-label">Piace</span> </a> </div> </div> </div> </div> </div> </article> <section class="section-carousel"> <div class="post-carousel"> <h3 class="title-block">Leggi anche</h3> <div class="owl-container owl-loop" data-columns="3" data-padding="20"> <div class="owl-carousel"> <article class="post- post type-post status-publish format-standard has-post-thumbnail hentry category-morning-news"> <div class="post-thumbnail"> <img width="720" height="378" src="/uploads/b97ecfd81dde3f1928777a5d7c5a2d89.jpg" class="attachment-md size-md wp-post-image" alt="Come Blocca Android il numero indesiderato" / loading=lazy loading=lazy> <div class="post-more"><a href="https://qipu.ru/it/mts/kak-zablokirovat-na-smartfone-nezhelatelnye-vhodyashchie-kak-na.html" class="btn-link" data-wpel-link="internal"><span>Leggere</span></a></div> <ul class="post-meta"></ul> <a href="https://qipu.ru/it/mts/kak-zablokirovat-na-smartfone-nezhelatelnye-vhodyashchie-kak-na.html" data-wpel-link="internal"></a> </div> <h2 class="entry-title"><a href="https://qipu.ru/it/mts/kak-zablokirovat-na-smartfone-nezhelatelnye-vhodyashchie-kak-na.html" data-wpel-link="internal">Come Blocca Android il numero indesiderato</a></h2> <ul class="post-meta"> <li class="meta-date"> <time class="entry-date published updated" datetime=""> 2021-04-29 04:26:04 </time> </li> </ul> </article> <!-- /next_post --> <article class="post- post type-post status-publish format-standard has-post-thumbnail hentry category-morning-news"> <div class="post-thumbnail"> <img width="720" height="378" src="/uploads/aa49a7ec62581be90be4802dc49458e2.jpg" class="attachment-md size-md wp-post-image" alt="Perché la rottura cellulare è la rottura?" / loading=lazy loading=lazy> <div class="post-more"><a href="https://qipu.ru/it/yota/chasto-propadaet-svyaz-pochemu-obryvaetsya-sotovaya-svyaz.html" class="btn-link" data-wpel-link="internal"><span>Leggere</span></a></div> <ul class="post-meta"></ul> <a href="https://qipu.ru/it/yota/chasto-propadaet-svyaz-pochemu-obryvaetsya-sotovaya-svyaz.html" data-wpel-link="internal"></a> </div> <h2 class="entry-title"><a href="https://qipu.ru/it/yota/chasto-propadaet-svyaz-pochemu-obryvaetsya-sotovaya-svyaz.html" data-wpel-link="internal">Perché la rottura cellulare è la rottura?</a></h2> <ul class="post-meta"> <li class="meta-date"> <time class="entry-date published updated" datetime=""> 2021-04-29 04:26:04 </time> </li> </ul> </article> <!-- /next_post --> <article class="post- post type-post status-publish format-standard has-post-thumbnail hentry category-morning-news"> <div class="post-thumbnail"> <img width="720" height="378" src="/uploads/712be3a4ede31a210b27220b32952990.jpg" class="attachment-md size-md wp-post-image" alt="Come impostare completamente le notifiche mobili sotto te stesso" / loading=lazy loading=lazy> <div class="post-more"><a href="https://qipu.ru/it/tele2/kak-dobavit-uvedomleniya-v-windows-kak-nastroit-mobilnye-uvedomleniya.html" class="btn-link" data-wpel-link="internal"><span>Leggere</span></a></div> <ul class="post-meta"></ul> <a href="https://qipu.ru/it/tele2/kak-dobavit-uvedomleniya-v-windows-kak-nastroit-mobilnye-uvedomleniya.html" data-wpel-link="internal"></a> </div> <h2 class="entry-title"><a href="https://qipu.ru/it/tele2/kak-dobavit-uvedomleniya-v-windows-kak-nastroit-mobilnye-uvedomleniya.html" data-wpel-link="internal">Come impostare completamente le notifiche mobili sotto te stesso</a></h2> <ul class="post-meta"> <li class="meta-date"> <time class="entry-date published updated" datetime=""> 2021-04-29 04:26:04 </time> </li> </ul> </article> <!-- /next_post --> </div> <div class="owl-dots"></div> </div> </div> </section> </main> </div> </div> </div> </div> <footer class="site-footer"> <style> .footer-section { width: 830px; margin: 0 auto; padding: 0; font-family: 'Noto Sans', sans-serif; } .site-footer { background-color: #222; } @media (max-width: 1025px) { .footer-section { max-width: 690px; } } @media (max-width: 760px) { .footer-section { width: 90%; } } .site-footer a:hover { color: #FF3400; } .white-a { color: #969696!important; } .white-a:hover { color: #fff!important; } .white-a:hover g { opacity: 1; } </style> <div class="footer-section"> <div class="footer" > <div class="footer__menu"> <div class="footer__menu__logo" style="background:none;"><img src="/logo.png" loading=lazy loading=lazy></div> <ul> <li><a href="https://qipu.ru/it/category/megaphone/">Megafono</a></li> <li><a href="https://qipu.ru/it/category/mts/">MTS.</a></li> <li><a href="https://qipu.ru/it/category/beeline/">Beeline.</a></li> <li><a href="https://qipu.ru/it/category/tele2/">Tele 2.</a></li> </ul> <ul> <li><a href="https://qipu.ru/it/category/megaphone/">Megafono</a></li> <li><a href="https://qipu.ru/it/category/mts/">MTS.</a></li> <li><a href="https://qipu.ru/it/category/beeline/">Beeline.</a></li> <li><a href="https://qipu.ru/it/category/tele2/">Tele 2.</a></li> </ul> </div> <div class="footer__social"> <a href="https://facebook.com/" target="_blank" class="footer__social--facebook white-a" data-wpel-link="external"></a> <a href="https://twitter.com/" target="_blank" class="footer__social--tw white-a" data-wpel-link="external"></a> <a href="" target="_blank" class="footer__social--vk white-a" data-wpel-link="external"></a> <a href="https://youtube.com/" target="_blank" class="footer__social--yt white-a" data-wpel-link="external"></a> </div> <div class="footer__info" > <p>© Qipu.ru, 2021. Assistente personale nel mondo della comunicazione cellulare <br> .</p> </div> </div> </div> </footer> </div> </div> <a href="https://qipu.ru/it/#top" class="scroll-to-top hidden-sm-down" data-wpel-link="internal"></a> <div class="site-search" id="search"> <button type="button" class="close"></button> <div class="form-container"> <div class="container"> <div class="row"> <div class="col-lg-6 offset-lg-3"> <form role="search" method="get" class="search-form form" action="/"> <label class="sr-only">Cercare:</label> <div class="input-group"> <input type="search" value="" name="s" class="search-field form-control" placeholder="Che cosa sta cercando?" required> <span class="input-group-btn"> <button type="submit" class="search-submit btn btn-primary btn-effect"><span>Ricerca.</span><span><i class="icon icon-search"></i></span></button> </span> </div> </form> <p>Inserisci le parole chiave.</p> </div> </div> </div> </div> </div> <style type="text/css"> .wpmchimpa-overlay-bg.wpmchimpselector { display: none; top: 0; left: 0; height:100%; width: 100%; cursor: pointer; z-index: 999999; background: #000; background: rgba(0,0,0,0.40); background:rgba(0,0,0,0.7);cursor: default; position: fixed!important; } .wpmchimpa-overlay-bg #wpmchimpa-main *{ transition: all 0.5s ease; } .wpmchimpa-overlay-bg .wpmchimpa-mainc, .wpmchimpa-overlay-bg .wpmchimpa-maina{ -webkit-transform: translate(0,0); height:100%;} .wpmchimpa-overlay-bg #wpmchimpa-main { position: absolute; top: 50%; left: 50%; border-radius: 2px; -webkit-transform: translate(-50%, -50%); -moz-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); -o-transform: translate(-50%, -50%); transform: translate(-50%, -50%); width: calc(100% - 20px); max-width:650px; background: #27313B; text-align: center; background-color:#ffffff;} #wpmchimpa-main #wpmchimpa-newsletterform{ } #wpmchimpa-main #wpmchimpa{ width: calc(100% - 20px); max-width: 400px; margin: 0 auto; } #wpmchimpa div{ position:relative; } #wpmchimpa h3{ line-height: 24px; margin-top:20px; color: #F4233C; font-size: 24px; font-family:Tahoma, Geneva, sans-serif;font-size:35px;line-height:35px;font-weight:normal;font-style:normal;color:#f34b38;} #wpmchimpa .wpmchimpa_para{ margin-top: 15px; } #wpmchimpa .wpmchimpa_para,#wpmchimpa .wpmchimpa_para * { font-size: 15px; color: #959595; font-family:Tahoma, Geneva, sans-serif;font-size:15px;} #wpmchimpa form{ margin: 20px auto; } #wpmchimpa .formbox > div:first-of-type{ width: 65%; float: left; } #wpmchimpa .formbox > div:first-of-type + div{ width: 35%; float: left; text-align: center; } #wpmchimpa .formbox input[type="text"]{ border-radius: 3px 0 0 3px; } #wpmchimpa .wpmchimpa-field{ position: relative; width:100%; margin: 0 auto 10px auto; text-align: left; } #wpmchimpa .inputicon{ display: none; } #wpmchimpa .wpmc-ficon .inputicon { display: block; width: 40px; height: 40px; position: absolute; top: 0; left: 0; pointer-events: none; } #wpmchimpa .wpmc-ficon input[type="text"], #wpmchimpa .wpmc-ficon input[type="text"] ~ .inputlabel{ padding-left: 40px; } #wpmchimpa .wpmc-ficon [wpmcfield="email"] ~ .inputicon { background: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiMzZDNkM2QiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMTVweCIgaGVpZ2h0PSIxNXB4IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNTEyIDUxMiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBhdGggZD0iTTUxMiwzODRjMCwxMS4yMTktMy4xNTYsMjEuNjI1LTguMjE5LDMwLjc4MUwzNDIuMTI1LDIzMy45MDZMNTAyLjAzMSw5NGM2LjIxOSw5Ljg3NSw5Ljk2OSwyMS40NjksOS45NjksMzRWMzg0eiBNMjU2LDI2Ni43NUw0NzguNSw3Mi4wNjNjLTkuMTI1LTUtMTkuNDA2LTguMDYzLTMwLjUtOC4wNjNINjRjLTExLjEwOSwwLTIxLjM5MSwzLjA2My0zMC40ODQsOC4wNjNMMjU2LDI2Ni43NXogTTMxOC4wMzEsMjU0Ljk2OSBsLTUxLjUsNDUuMDk0QzI2My41MTYsMzAyLjY4OCwyNTkuNzY2LDMwNCwyNTYsMzA0cy03LjUxNi0xLjMxMy0xMC41MzEtMy45MzhsLTUxLjUxNi00NS4wOTRMMzAuMjUsNDM4LjE1NiBDNDAuMDYzLDQ0NC4zMTMsNTEuNTYzLDQ0OCw2NCw0NDhoMzg0YzEyLjQzOCwwLDIzLjkzOC0zLjY4OCwzMy43NS05Ljg0NEwzMTguMDMxLDI1NC45Njl6IE05Ljk2OSw5NEMzLjc1LDEwMy44NzUsMCwxMTUuNDY5LDAsMTI4IHYyNTZjMCwxMS4yMTksMy4xNDEsMjEuNjI1LDguMjE5LDMwLjc4MWwxNjEuNjQxLTE4MC45MDZMOS45NjksOTR6Ii8+PC9zdmc+') no-repeat center} #wpmchimpa .wpmc-ficon [wpmcfield="FNAME"] ~ .inputicon { background: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiMzZDNkM2QiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMTVweCIgaGVpZ2h0PSIxNXB4IiB2aWV3Qm94PSIwIDAgNjEyIDYxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNjEyIDYxMiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PGc+PHBhdGggZD0iTTMwNi4wMDEsMzI1Ljk4OGM5MC41NjMtMC4wMDUsMTIzLjE0Ny05MC42ODIsMTMxLjY3OS0xNjUuMTY3QzQ0OC4xODgsNjkuMDYsNDA0Ljc5OSwwLDMwNi4wMDEsMCBjLTk4Ljc4MiwwLTE0Mi4xOTUsNjkuMDU1LTEzMS42NzksMTYwLjgyQzE4Mi44NjIsMjM1LjMwNCwyMTUuNDM2LDMyNS45OTUsMzA2LjAwMSwzMjUuOTg4eiIvPjxwYXRoIGQ9Ik01NTAuOTgxLDU0MS45MDhjLTAuOTktMjguOTA0LTQuMzc3LTU3LjkzOS05LjQyMS04Ni4zOTNjLTYuMTExLTM0LjQ2OS0xMy44ODktODUuMDAyLTQzLjk4My0xMDcuNDY1IGMtMTcuNDA0LTEyLjk4OC0zOS45NDEtMTcuMjQ5LTU5Ljg2NS0yNS4wODFjLTkuNjk3LTMuODEtMTguMzg0LTcuNTk0LTI2LjUzNy0xMS45MDFjLTI3LjUxOCwzMC4xNzYtNjMuNCw0NS45NjItMTA1LjE4Niw0NS45NjQgYy00MS43NzQsMC03Ny42NTItMTUuNzg2LTEwNS4xNjctNDUuOTY0Yy04LjE1Myw0LjMwOC0xNi44NCw4LjA5My0yNi41MzcsMTEuOTAxYy0xOS45MjQsNy44MzItNDIuNDYxLDEyLjA5Mi01OS44NjMsMjUuMDgxIGMtMzAuMDk2LDIyLjQ2My0zNy44NzMsNzIuOTk2LTQzLjk4MywxMDcuNDY1Yy01LjA0NSwyOC40NTQtOC40MzMsNTcuNDg5LTkuNDIyLDg2LjM5MwljLTAuNzY2LDIyLjM4NywxMC4yODgsMjUuNTI1LDI5LjAxNywzMi4yODRjMjMuNDUzLDguNDU4LDQ3LjY2NiwxNC43MzcsNzIuMDQxLDE5Ljg4NGM0Ny4wNzcsOS45NDEsOTUuNjAzLDE3LjU4MiwxNDMuOTIxLDE3LjkyNCBjNDguMzE4LTAuMzQzLDk2Ljg0NC03Ljk4MywxNDMuOTIxLTE3LjkyNGMyNC4zNzUtNS4xNDUsNDguNTktMTEuNDI0LDcyLjA0MS0xOS44ODQJQzU0MC42OTQsNTY3LjQzNSw1NTEuNzQ3LDU2NC4yOTcsNTUwLjk4MSw1NDEuOTA4eiIvPjwvZz48L3N2Zz4=') no-repeat center} #wpmchimpa .wpmc-ficon [wpmcfield="LNAME"] ~ .inputicon { background: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiMzZDNkM2QiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMTVweCIgaGVpZ2h0PSIxNXB4IiB2aWV3Qm94PSIwIDAgNjEyIDYxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNjEyIDYxMiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PGc+PHBhdGggZD0iTTMwNi4wMDEsMzI1Ljk4OGM5MC41NjMtMC4wMDUsMTIzLjE0Ny05MC42ODIsMTMxLjY3OS0xNjUuMTY3QzQ0OC4xODgsNjkuMDYsNDA0Ljc5OSwwLDMwNi4wMDEsMCBjLTk4Ljc4MiwwLTE0Mi4xOTUsNjkuMDU1LTEzMS42NzksMTYwLjgyQzE4Mi44NjIsMjM1LjMwNCwyMTUuNDM2LDMyNS45OTUsMzA2LjAwMSwzMjUuOTg4eiIvPjxwYXRoIGQ9Ik01NTAuOTgxLDU0MS45MDhjLTAuOTktMjguOTA0LTQuMzc3LTU3LjkzOS05LjQyMS04Ni4zOTNjLTYuMTExLTM0LjQ2OS0xMy44ODktODUuMDAyLTQzLjk4My0xMDcuNDY1IGMtMTcuNDA0LTEyLjk4OC0zOS45NDEtMTcuMjQ5LTU5Ljg2NS0yNS4wODFjLTkuNjk3LTMuODEtMTguMzg0LTcuNTk0LTI2LjUzNy0xMS45MDFjLTI3LjUxOCwzMC4xNzYtNjMuNCw0NS45NjItMTA1LjE4Niw0NS45NjQgYy00MS43NzQsMC03Ny42NTItMTUuNzg2LTEwNS4xNjctNDUuOTY0Yy04LjE1Myw0LjMwOC0xNi44NCw4LjA5My0yNi41MzcsMTEuOTAxYy0xOS45MjQsNy44MzItNDIuNDYxLDEyLjA5Mi01OS44NjMsMjUuMDgxIGMtMzAuMDk2LDIyLjQ2My0zNy44NzMsNzIuOTk2LTQzLjk4MywxMDcuNDY1Yy01LjA0NSwyOC40NTQtOC40MzMsNTcuNDg5LTkuNDIyLDg2LjM5MwljLTAuNzY2LDIyLjM4NywxMC4yODgsMjUuNTI1LDI5LjAxNywzMi4yODRjMjMuNDUzLDguNDU4LDQ3LjY2NiwxNC43MzcsNzIuMDQxLDE5Ljg4NGM0Ny4wNzcsOS45NDEsOTUuNjAzLDE3LjU4MiwxNDMuOTIxLDE3LjkyNCBjNDguMzE4LTAuMzQzLDk2Ljg0NC03Ljk4MywxNDMuOTIxLTE3LjkyNGMyNC4zNzUtNS4xNDUsNDguNTktMTEuNDI0LDcyLjA0MS0xOS44ODQJQzU0MC42OTQsNTY3LjQzNSw1NTEuNzQ3LDU2NC4yOTcsNTUwLjk4MSw1NDEuOTA4eiIvPjwvZz48L3N2Zz4=') no-repeat center} #wpmchimpa .wpmchimpa-field textarea, #wpmchimpa .wpmchimpa-field select, #wpmchimpa input[type="text"]{ text-align: left; width: 100%; height: 40px; border-radius:3px; background: #fff; padding: 0 10px; color: #353535; font-size:17px; outline:0; display: block; border: 1px solid #efefef; font-family:Tahoma, Geneva, sans-serif;font-size:15px;color:#696565;} #wpmchimpa .wpmchimpa-field.wpmchimpa-multidrop select{ height: 100px; } #wpmchimpa .wpmchimpa-field.wpmchimpa-drop:before{ content: ''; width: 40px; height: 40px; position: absolute; right: 0; top: 0; pointer-events: none; background: no-repeat center; background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiMwMDAiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMTZweCIgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgOTQuODU5IDk0Ljg1OSIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgOTQuODU5IDk0Ljg1OSIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBhdGggZD0iTTE3LjMxMiw0MS43NTdoNjAuMjM2YzAuNzcsMCwxLjQ2OS0wLjQ0LDEuODAyLTEuMTMzYzAuMzM0LTAuNjkxLDAuMjQxLTEuNTE0LTAuMjM3LTIuMTE0TDQ4Ljk5NCwwLjc1MyBDNDguNjE0LDAuMjc3LDQ4LjAzOSwwLDQ3LjQzMSwwcy0xLjE4NCwwLjI3Ny0xLjU2MywwLjc1M0wxNS43NDgsMzguNTFjLTAuNDc5LDAuNjAxLTAuNTcyLDEuNDIzLTAuMjM4LDIuMTE0IEMxNS44NDMsNDEuMzE3LDE2LjU0Miw0MS43NTcsMTcuMzEyLDQxLjc1N3oiLz4gPHBhdGggZD0iTTc3LjU0Nyw1My4xMDJIMTcuMzEyYy0wLjc2OSwwLTEuNDY5LDAuNDM5LTEuODAyLDEuMTMzYy0wLjMzNCwwLjY5MS0wLjI0MSwxLjUxNCwwLjIzOCwyLjExM2wzMC4xMTksMzcuNzU4IGMwLjM4LDAuNDc2LDAuOTU1LDAuNzUzLDEuNTYzLDAuNzUzczEuMTg0LTAuMjc3LDEuNTYzLTAuNzUzTDc5LjExLDU2LjM0OGMwLjQ3OS0wLjYwMSwwLjU3MS0xLjQyMiwwLjIzNy0yLjExMyBDNzkuMDE2LDUzLjU0MSw3OC4zMTcsNTMuMTAyLDc3LjU0Nyw1My4xMDJ6Ii8+PC9zdmc+'); } #wpmchimpa input[type="text"] ~ .inputlabel{ position: absolute; top: 0; left: 0; right: 0; pointer-events: none; width: 100%; line-height: 40px; color: rgba(0,0,0,0.6); font-size: 17px; font-weight:500; padding: 0 10px; white-space: nowrap; font-family:Tahoma, Geneva, sans-serif;font-size:15px;color:#696565;} #wpmchimpa input[type="text"]:valid + .inputlabel{ display: none; } #wpmchimpa select.wpmcerror, #wpmchimpa input[type="text"].wpmcerror{ border-color: red; } #wpmchimpa .wpmchimpa-check, #wpmchimpa .wpmchimpa-radio{ clear: both; } #wpmchimpa .wpmchimpa-check *, #wpmchimpa .wpmchimpa-radio *{ color: #fff; font-family:Tahoma, Geneva, sans-serif;font-size:14px;font-weight:normal;font-style:normal;color:#3d3d3d;} #wpmchimpa .wpmchimpa-item{ width:100%; display: inline-block; vertical-align: top; } #wpmchimpa .wpmchimpa-item input { display: none; } #wpmchimpa .wpmchimpa-item span { cursor: pointer; display: inline-block; position: relative; padding-left: 35px; line-height: 20px; margin-right: 10px; } #wpmchimpa .wpmchimpa-item span:before, #wpmchimpa .wpmchimpa-item span:after { content: ''; display: inline-block; width: 12px; height: 12px; left: 0; top: 4px; position: absolute; } #wpmchimpa .wpmchimpa-item span:before { border:1px solid #ccc; border-radius: 1px; background-color: #fff; -webkit-transition: all 0.3s ease-in-out; transition: all 0.3s ease-in-out; border: 1px solid#f34b38;background: #ffffff;} #wpmchimpa .wpmchimpa-item input[type='checkbox'] + span:hover:after, #wpmchimpa input[type='checkbox']:checked + span:after { content:''; width: 14px; height: 14px; background: no-repeat center; background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiMwMDAwMDAiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iOHB4IiBoZWlnaHQ9IjhweCIgdmlld0JveD0iMCAwIDIzMCAyMzAiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDIzMCAyMzAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxwYXRoIGQ9Ik05Mi4zNTYsMjIzLjU0OWM3LjQxLDcuNSwyMy45MTQsNS4wMTQsMjUuNjkxLTYuNzc5YzExLjA1Ni03My4yMTcsNjYuMzc4LTEzNC45ODUsMTA4LjI0My0xOTMuMTg5IEMyMzcuODk4LDcuNDUyLDIxMS4yMDctNy44NywxOTkuNzUsOC4wNjdDMTYxLjQ5Myw2MS4yNDksMTEzLjI3NCwxMTcuMjEsOTQuNDEsMTgxLjc0NCBjLTIxLjU1Ny0yMi4wMzEtNDMuMjAxLTQzLjg1My02Ny4zNzktNjMuMjEyYy0xNS4zMTItMTIuMjY1LTM3LjIxNSw5LjM0My0yMS43MzgsMjEuNzM3IEMzNi43OTQsMTY1LjUwMSw2NC4wMTcsMTk0LjkyNCw5Mi4zNTYsMjIzLjU0OXoiLz48L3N2Zz4='); } #wpmchimpa .wpmchimpa-item input[type='checkbox']:not(:checked) + span:hover:after { opacity: 0.5; } #wpmchimpa .wpmchimpa-item input[type='radio'] + span:before { border-radius: 50%; width: 12px; height: 12px; top: 4px; } #wpmchimpa input[type='radio']:checked + span:after { background: #000000; width: 8px; height: 8px; top: 6px; left: 2px; border-radius: 50%; } #wpmchimpa .wpmcinfierr{ display: block; height: 10px; text-align: left; line-height: 10px; margin-bottom: -10px; font-size: 10px; color: red; pointer-events: none; font-family:Tahoma, Geneva, sans-serif;} #wpmchimpa .wpmchimpa-subs-button{ border-radius: 0 3px 3px 0; width: 100%; color: #fff; font-size: 17px; border: 1px solid #FA0B38; background-color: #FF1F43; height: 40px; line-height: 40px; text-align: center; cursor: pointer; position: relative; top: 0; font-family:Tahoma, Geneva, sans-serif;font-size:16px;font-weight:normal;font-style:normal;color:#ffffff;background-color:#f34b38;} #wpmchimpa .wpmchimpa-subs-button::before{ content: 'Подписаться'; } #wpmchimpa .wpmchimpa-subs-button:hover{ background-color: #FA0B38; color:#ffffff;background-color:#75c462;} #wpmchimpa .wpmchimpa-subs-button.subsicon:before{ padding-left: 40px; } #wpmchimpa .wpmchimpa-subs-button.subsicon::after{ content:''; position: absolute; height: 40px; width: 40px; top: 0; left: 0; pointer-events: none; } .wpmchimpa-overlay-bg.signalshow .wpmchimpa-subs-button::after, .wpmchimpa-overlay-bg.signalshow .wpmchimpa-subs-button::before{ display: none; } #wpmchimpa-main .wpmchimpa-signal { display: none; z-index: 1; top: 5px; left: calc(50% - 20px); position: absolute; -webkit-transform: scale(0.8); -ms-transform: scale(0.8); transform: scale(0.8); } .wpmchimpa-overlay-bg.signalshow #wpmchimpa-main .wpmchimpa-signal { display: inline-block; } #wpmchimpa-main .wpmchimpa-feedback{ text-align: center; position: relative; color: #ccc; font-size: 10px; height: 12px; margin-top: -12px; font-family:Tahoma, Geneva, sans-serif;color:#3d3d3d;} #wpmchimpa-main .wpmchimpa-tag{ margin: 5px auto; } #wpmchimpa-main .wpmchimpa-tag, #wpmchimpa-main .wpmchimpa-tag *{ color:#fff; font-size: 10px; font-family:Tahoma, Geneva, sans-serif;font-size:10px;color:#3d3d3d;} #wpmchimpa-main .wpmchimpa-tag:before{ content:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiMzZDNkM2QiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMTBweCIgaGVpZ2h0PSIxMHB4IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNTEyIDUxMiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBhdGggZD0iTTQxNy41NjYsMjA5LjgzaC05LjQ4NHYtNDQuMzg4YzAtODIuMDk5LTY1LjE1MS0xNTAuNjgxLTE0Ni41ODItMTUyLjE0NWMtMi4yMjQtMC4wNC02LjY3MS0wLjA0LTguODk1LDAgYy04MS40MzIsMS40NjQtMTQ2LjU4Miw3MC4wNDYtMTQ2LjU4MiwxNTIuMTQ1djQ0LjM4OGgtOS40ODVDODEuOTIyLDIwOS44Myw3MCwyMjQuOTEyLDcwLDI0My41Mzl2MjIyLjYzMiAgQzcwLDQ4NC43NzcsODEuOTIyLDUwMCw5Ni41MzksNTAwaDMyMS4wMjhjMTQuNjE3LDAsMjYuNTM5LTE1LjIyMywyNi41MzktMzMuODI5VjI0My41MzkgIEM0NDQuMTA1LDIyNC45MTIsNDMyLjE4NCwyMDkuODMsNDE3LjU2NiwyMDkuODN6IE0yODcuMTI5LDM1NC42Mjl2NjcuMjdjMCw3LjcwNC02LjQ0OSwxNC4yMjItMTQuMTU5LDE0LjIyMmgtMzEuODM0ICBjLTcuNzEsMC0xNC4xNTktNi41MTgtMTQuMTU5LTE0LjIyMnYtNjcuMjdjLTcuNDc3LTcuMzYxLTExLjgzLTE3LjUzNy0xMS44My0yOC43OTVjMC0yMS4zMzQsMTYuNDkxLTM5LjY2NiwzNy40NTktNDAuNTEyICBjMi4yMjItMC4wOSw2LjY3My0wLjA5LDguODk1LDBjMjAuOTY4LDAuODQ2LDM3LjQ1OSwxOS4xNzgsMzcuNDU5LDQwLjUxMkMyOTguOTU5LDMzNy4wOTIsMjk0LjYwNSwzNDcuMjY4LDI4Ny4xMjksMzU0LjYyOXogTTM0NS41NzIsMjA5LjgzSDI2MS41aC04Ljg5NWgtODQuMDcydi00NC4zODhjMC00OC45MDUsMzkuNzQ0LTg5LjM0Miw4OC41MTktODkuMzQyczg4LjUyLDQwLjQzNyw4OC41Miw4OS4zNDJWMjA5LjgzeiIvPjwvc3ZnPg=='); margin: 5px; top: 1px; position:relative; } #wpmchimpa-main .wpmchimpa-social{ display: inline-block; margin: 12px auto 0; height: 90px; width: 100%; background: rgba(75, 75, 75, 0.3); box-shadow: 0px 1px 1px 1px rgba(116, 116, 116, 0.94); } #wpmchimpa-main .wpmchimpa-social::before{ content: 'Subscribe with'; font-size: 13px; color: #ADACB2; width: 100%; display: block; margin: 15px auto 5px; } #wpmchimpa-main .wpmchimpa-social .wpmchimpa-soc{ display: inline-block; width:40px; height: 40px; border-radius: 2px; cursor: pointer; -webkit-transition: all 0.1s ease; transition: all 0.1s ease; -webkit-backface-visibility:hidden; border:1px solid #262E43; border-color: #ffffff;} #wpmchimpa-main .wpmchimpa-social .wpmchimpa-soc::before{ content: ''; display: block; width:40px; height: 40px; background: no-repeat center; } #wpmchimpa-main .wpmchimpa-social .wpmchimpa-soc.wpmchimpa-fb { display:none;} #wpmchimpa-main .wpmchimpa-social .wpmchimpa-soc.wpmchimpa-fb::before { background-image:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiNmZmYiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMTVweCIgaGVpZ2h0PSIxNXB4IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNTEyIDUxMiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBhdGggZD0iTTI5Ni4yOTYsNTEySDIwMC4zNlYyNTZoLTY0di04OC4yMjVsNjQtMC4wMjlsLTAuMTA0LTUxLjk3NkMyMDAuMjU2LDQzLjc5NCwyMTkuNzczLDAsMzA0LjU1NiwwaDcwLjU4OHY4OC4yNDJoLTQ0LjExNSBjLTMzLjAxNiwwLTM0LjYwNCwxMi4zMjgtMzQuNjA0LDM1LjM0MmwtMC4xMzEsNDQuMTYyaDc5LjM0NmwtOS4zNTQsODguMjI1TDI5Ni4zNiwyNTZMMjk2LjI5Niw1MTJ6Ii8+PC9zdmc+')} #wpmchimpa-main .wpmchimpa-social .wpmchimpa-soc.wpmchimpa-fb:hover:before { background-image:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiMyZDYwOWIiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMTVweCIgaGVpZ2h0PSIxNXB4IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNTEyIDUxMiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBhdGggZD0iTTI5Ni4yOTYsNTEySDIwMC4zNlYyNTZoLTY0di04OC4yMjVsNjQtMC4wMjlsLTAuMTA0LTUxLjk3NkMyMDAuMjU2LDQzLjc5NCwyMTkuNzczLDAsMzA0LjU1NiwwaDcwLjU4OHY4OC4yNDJoLTQ0LjExNSBjLTMzLjAxNiwwLTM0LjYwNCwxMi4zMjgtMzQuNjA0LDM1LjM0MmwtMC4xMzEsNDQuMTYyaDc5LjM0NmwtOS4zNTQsODguMjI1TDI5Ni4zNiwyNTZMMjk2LjI5Niw1MTJ6Ii8+PC9zdmc+')} #wpmchimpa-main .wpmchimpa-social .wpmchimpa-soc.wpmchimpa-gp { display:none;} #wpmchimpa-main .wpmchimpa-social .wpmchimpa-soc.wpmchimpa-gp:before { background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiNmZmYiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMTVweCIgaGVpZ2h0PSIxNXB4IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNTEyIDUxMiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBhdGggZD0iTTI3My4zNzIsMzAyLjQ5OGMtNS4wNDEtNi43NjItMTAuNjA4LTEzLjA0NS0xNi43LTE4Ljg0MmMtNi4wOTEtNS44MDQtMTIuMTgzLTExLjA4OC0xOC4yNzEtMTUuODQ1IGMtNi4wOTItNC43NTctMTEuNjU5LTkuMzI5LTE2LjcwMi0xMy43MDljLTUuMDQyLTQuMzc0LTkuMTM1LTguOTQ1LTEyLjI3NS0xMy43MDJjLTMuMTQtNC43NTctNC43MTEtOS42MS00LjcxMS0xNC41NTggYzAtNi44NTUsMi4xOS0xMy4yNzgsNi41NjctMTkuMjc0YzQuMzc3LTUuOTk2LDkuNzA3LTExLjc5OSwxNS45ODYtMTcuNDE3YzYuMjgtNS42MTcsMTIuNTU5LTExLjc1MywxOC44NDQtMTguNDE1IGM2LjI3Ni02LjY2NSwxMS42MDQtMTUuNDY1LDE1Ljk4NS0yNi40MTJjNC4zNzMtMTAuOTQ0LDYuNTYzLTIzLjQ1OCw2LjU2My0zNy41NDJjMC0xNi43NS0zLjcxMy0zMi44MzUtMTEuMTM2LTQ4LjI1IGMtNy40MjMtMTUuNDE4LTE3Ljg5LTI3LjQxMi0zMS40MDUtMzUuOTc2aDM4LjU0TDMwMy4yLDBIMTc4LjQ0MWMtMTcuNjk5LDAtMzUuNDk4LDEuOTA2LTUzLjM4NCw1LjcyIGMtMjYuNDUzLDUuOS00OC43MjMsMTkuMzY4LTY2LjgwNiw0MC4zOTdDNDAuMTcxLDY3LjE1LDMxLjEyOSw5MC45OSwzMS4xMjksMTE3LjYzN2MwLDI4LjE3MSwxMC4xMzgsNTEuNTgzLDMwLjQwNiw3MC4yMzMgYzIwLjI2OSwxOC42NDksNDQuNTg1LDI3Ljk3OCw3Mi45NDUsMjcuOTc4YzUuNzEsMCwxMi4zNzEtMC40NzgsMTkuOTg1LTEuNDI3Yy0wLjM4MSwxLjUyMS0xLjA0MywzLjU2Ny0xLjk5Nyw2LjEzNiBzLTEuNzE1LDQuNjItMi4yODYsNi4xNGMtMC41NywxLjUyMS0xLjA0NywzLjM3NS0xLjQyNSw1LjU2NmMtMC4zODIsMi4xOS0wLjU3MSw0LjQyOC0wLjU3MSw2LjcxIGMwLDEyLjU2Myw2LjA4NiwyNi43NDQsMTguMjcxLDQyLjU0MWMtMTQuNDY1LDAuMzg3LTI4LjczNywxLjY3LTQyLjgyNSwzLjg2Yy0xNC4wODQsMi4xOS0yOC44MzMsNS42MTYtNDQuMjUyLDEwLjI4IGMtMTUuNDE3LDQuNjYxLTI5LjIxNywxMS40Mi00MS4zOTYsMjAuMjdjLTEyLjE4Miw4Ljg1NC0yMS4zMTcsMTkuMzY2LTI3LjQwOCwzMS41NDlDMy41MzMsMzYxLjU1OSwwLjAxLDM3NC40MDUsMC4wMSwzODYuMDE3IGMwLDEyLjc1MSwyLjg1NywyNC4zMTQsOC41NjUsMzQuNjljNS43MDgsMTAuMzY5LDEzLjAzNSwxOC44NDIsMjEuOTgyLDI1LjQwNmM4Ljk0NSw2LjU3LDE5LjI3MywxMi4wODMsMzAuOTc4LDE2LjU2MiBjMTEuNzA0LDQuNDcsMjMuMzE1LDcuNjU5LDM0LjgyOSw5LjU2MmMxMS41MTYsMS45MDMsMjIuODg4LDIuODU0LDM0LjExOSwyLjg1NGM1MS4wMDcsMCw5MC45ODEtMTIuNDY0LDExOS45MDktMzcuMzk3IGMyNi42NDgtMjMuMjIzLDM5Ljk3MS01MC4wNjIsMzkuOTcxLTgwLjUxN2MwLTEwLjg1NS0xLjU3LTIwLjk4NC00LjcxMi0zMC40MDlDMjgyLjUxLDMxNy4zMzcsMjc4LjQyLDMwOS4yNTQsMjczLjM3MiwzMDIuNDk4eiBNMTYzLjMxMSwxOTguNzIyYy05LjcwNywwLTE4LjkzNy0yLjQ3NS0yNy42OTQtNy40MjZjLTguNzU3LTQuOTUtMTYuMTgtMTEuMzc0LTIyLjI3LTE5LjI3MyBjLTYuMDg4LTcuODk4LTExLjQxOC0xNi43OTYtMTUuOTg3LTI2LjY5NWMtNC41NjctOS44OTYtNy45NDQtMTkuNzkyLTEwLjEzNS0yOS42OTJjLTIuMTktOS44OTUtMy4yODQtMTkuMzE4LTMuMjg0LTI4LjI2NSBjMC0xOC4yNzEsNC44NTQtMzMuOTc0LDE0LjU2Mi00Ny4xMDhjOS43MDUtMTMuMTM0LDIzLjQxMS0xOS43MDEsNDEuMTEyLTE5LjcwMWMxMi41NjMsMCwyMy45MzUsMy44OTksMzQuMTE4LDExLjcwNCBjMTAuMTgzLDcuODA0LDE4LjE3NywxNy43MDEsMjMuOTg0LDI5LjY5MmM1LjgwMiwxMS45OTEsMTAuMjc3LDI0LjQwNywxMy40MTcsMzcuMjU3YzMuMTQsMTIuODQ3LDQuNzExLDI0Ljk4Myw0LjcxMSwzNi40MDMgYzAsMTkuMDM2LTQuMTM5LDM0LjMxNy0xMi40MTksNDUuODMzQzE5NS4xNDQsMTkyLjk2NCwxODEuNzc1LDE5OC43MjIsMTYzLjMxMSwxOTguNzIyeiBNMjQyLjI1MSw0MTMuMTIzIGMtNS4yMyw4Ljk0OS0xMi4zMTksMTUuOTQtMjEuMjY3LDIwLjk4MWMtOC45NDYsNS4wNDgtMTguNTA5LDguNzU4LTI4LjY5MywxMS4xNGMtMTAuMTgzLDIuMzg1LTIwLjg4OSwzLjU3Mi0zMi4xMiwzLjU3MiBjLTEyLjE4MiwwLTI0LjI3LTEuNDMxLTM2LjI1OC00LjI4NGMtMTEuOTktMi44NTEtMjMuNDU5LTcuMTg3LTM0LjQwMy0xMi45OTFjLTEwLjk0NC01LjgtMTkuNzk1LTEzLjc5OC0yNi41NTEtMjMuOTgyIGMtNi43NTctMTAuMTg0LTEwLjEzNS0yMS43NDQtMTAuMTM1LTM0LjY5YzAtMTEuNDE5LDIuNTY4LTIxLjYwMSw3LjcwOC0zMC41NWM1LjE0Mi04Ljk0NSwxMS43MDktMTYuMDg0LDE5LjcwMi0yMS40MDggYzcuOTk0LTUuMzMyLDE3LjMxOS05LjcxMywyNy45NzktMTMuMTMxYzEwLjY2LTMuNDMzLDIwLjkzNy01LjgwOCwzMC44MzMtNy4xMzljOS44OTUtMS4zMzUsMTkuOTg1LTEuOTk1LDMwLjI2Mi0xLjk5NSBjNi4yODMsMCwxMS4wNDMsMC4xOTEsMTQuMjc3LDAuNTY3YzEuMTQzLDAuNzY3LDQuMDQzLDIuNzU5LDguNzA4LDUuOTk2czcuODA0LDUuNDI4LDkuNDIzLDYuNTcgYzEuNjE1LDEuMTM3LDQuNTY3LDMuMzI2LDguODUsNi41NjNjNC4yODEsMy4yMzcsNy4zMjcsNS42NjEsOS4xMzUsNy4yNzljMS44MDMsMS42MTgsNC40MjEsNC4wNDUsNy44NDksNy4yNzkgYzMuNDI0LDMuMjM3LDUuOTQ4LDYuMDQzLDcuNTY2LDguNDIyYzEuNjE1LDIuMzc4LDMuNjE2LDUuMjgsNS45OTYsOC43MDJjMi4zOCwzLjQzMyw0LjA0Myw2LjcxNSw0Ljk5OCw5Ljg1NSBjMC45NDgsMy4xNDIsMS44NTQsNi41NjcsMi43MDcsMTAuMjc3YzAuODU1LDMuNzIsMS4yODMsNy41NjksMS4yODMsMTEuNTdDMjUwLjEwNSwzOTMuNzEzLDI0Ny40ODcsNDA0LjE4MiwyNDIuMjUxLDQxMy4xMjN6Ii8+IDxwb2x5Z29uIHBvaW50cz0iNDAxLjk5OCw3My4wODkgNDAxLjk5OCwwIDM2NS40NDksMCAzNjUuNDQ5LDczLjA4OSAyOTIuMzU4LDczLjA4OSAyOTIuMzU4LDEwOS42MzYgMzY1LjQ0OSwxMDkuNjM2ICAzNjUuNDQ5LDE4Mi43MjUgNDAxLjk5OCwxODIuNzI1IDQwMS45OTgsMTA5LjYzNiA0NzUuMDgxLDEwOS42MzYgNDc1LjA4MSw3My4wODkiLz48L3N2Zz4=')} #wpmchimpa-main .wpmchimpa-social .wpmchimpa-soc.wpmchimpa-gp:hover:before { background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiNlYjQwMjYiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMTVweCIgaGVpZ2h0PSIxNXB4IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNTEyIDUxMiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBhdGggZD0iTTI3My4zNzIsMzAyLjQ5OGMtNS4wNDEtNi43NjItMTAuNjA4LTEzLjA0NS0xNi43LTE4Ljg0MmMtNi4wOTEtNS44MDQtMTIuMTgzLTExLjA4OC0xOC4yNzEtMTUuODQ1IGMtNi4wOTItNC43NTctMTEuNjU5LTkuMzI5LTE2LjcwMi0xMy43MDljLTUuMDQyLTQuMzc0LTkuMTM1LTguOTQ1LTEyLjI3NS0xMy43MDJjLTMuMTQtNC43NTctNC43MTEtOS42MS00LjcxMS0xNC41NTggYzAtNi44NTUsMi4xOS0xMy4yNzgsNi41NjctMTkuMjc0YzQuMzc3LTUuOTk2LDkuNzA3LTExLjc5OSwxNS45ODYtMTcuNDE3YzYuMjgtNS42MTcsMTIuNTU5LTExLjc1MywxOC44NDQtMTguNDE1IGM2LjI3Ni02LjY2NSwxMS42MDQtMTUuNDY1LDE1Ljk4NS0yNi40MTJjNC4zNzMtMTAuOTQ0LDYuNTYzLTIzLjQ1OCw2LjU2My0zNy41NDJjMC0xNi43NS0zLjcxMy0zMi44MzUtMTEuMTM2LTQ4LjI1IGMtNy40MjMtMTUuNDE4LTE3Ljg5LTI3LjQxMi0zMS40MDUtMzUuOTc2aDM4LjU0TDMwMy4yLDBIMTc4LjQ0MWMtMTcuNjk5LDAtMzUuNDk4LDEuOTA2LTUzLjM4NCw1LjcyIGMtMjYuNDUzLDUuOS00OC43MjMsMTkuMzY4LTY2LjgwNiw0MC4zOTdDNDAuMTcxLDY3LjE1LDMxLjEyOSw5MC45OSwzMS4xMjksMTE3LjYzN2MwLDI4LjE3MSwxMC4xMzgsNTEuNTgzLDMwLjQwNiw3MC4yMzMgYzIwLjI2OSwxOC42NDksNDQuNTg1LDI3Ljk3OCw3Mi45NDUsMjcuOTc4YzUuNzEsMCwxMi4zNzEtMC40NzgsMTkuOTg1LTEuNDI3Yy0wLjM4MSwxLjUyMS0xLjA0MywzLjU2Ny0xLjk5Nyw2LjEzNiBzLTEuNzE1LDQuNjItMi4yODYsNi4xNGMtMC41NywxLjUyMS0xLjA0NywzLjM3NS0xLjQyNSw1LjU2NmMtMC4zODIsMi4xOS0wLjU3MSw0LjQyOC0wLjU3MSw2LjcxIGMwLDEyLjU2Myw2LjA4NiwyNi43NDQsMTguMjcxLDQyLjU0MWMtMTQuNDY1LDAuMzg3LTI4LjczNywxLjY3LTQyLjgyNSwzLjg2Yy0xNC4wODQsMi4xOS0yOC44MzMsNS42MTYtNDQuMjUyLDEwLjI4IGMtMTUuNDE3LDQuNjYxLTI5LjIxNywxMS40Mi00MS4zOTYsMjAuMjdjLTEyLjE4Miw4Ljg1NC0yMS4zMTcsMTkuMzY2LTI3LjQwOCwzMS41NDlDMy41MzMsMzYxLjU1OSwwLjAxLDM3NC40MDUsMC4wMSwzODYuMDE3IGMwLDEyLjc1MSwyLjg1NywyNC4zMTQsOC41NjUsMzQuNjljNS43MDgsMTAuMzY5LDEzLjAzNSwxOC44NDIsMjEuOTgyLDI1LjQwNmM4Ljk0NSw2LjU3LDE5LjI3MywxMi4wODMsMzAuOTc4LDE2LjU2MiBjMTEuNzA0LDQuNDcsMjMuMzE1LDcuNjU5LDM0LjgyOSw5LjU2MmMxMS41MTYsMS45MDMsMjIuODg4LDIuODU0LDM0LjExOSwyLjg1NGM1MS4wMDcsMCw5MC45ODEtMTIuNDY0LDExOS45MDktMzcuMzk3IGMyNi42NDgtMjMuMjIzLDM5Ljk3MS01MC4wNjIsMzkuOTcxLTgwLjUxN2MwLTEwLjg1NS0xLjU3LTIwLjk4NC00LjcxMi0zMC40MDlDMjgyLjUxLDMxNy4zMzcsMjc4LjQyLDMwOS4yNTQsMjczLjM3MiwzMDIuNDk4eiBNMTYzLjMxMSwxOTguNzIyYy05LjcwNywwLTE4LjkzNy0yLjQ3NS0yNy42OTQtNy40MjZjLTguNzU3LTQuOTUtMTYuMTgtMTEuMzc0LTIyLjI3LTE5LjI3MyBjLTYuMDg4LTcuODk4LTExLjQxOC0xNi43OTYtMTUuOTg3LTI2LjY5NWMtNC41NjctOS44OTYtNy45NDQtMTkuNzkyLTEwLjEzNS0yOS42OTJjLTIuMTktOS44OTUtMy4yODQtMTkuMzE4LTMuMjg0LTI4LjI2NSBjMC0xOC4yNzEsNC44NTQtMzMuOTc0LDE0LjU2Mi00Ny4xMDhjOS43MDUtMTMuMTM0LDIzLjQxMS0xOS43MDEsNDEuMTEyLTE5LjcwMWMxMi41NjMsMCwyMy45MzUsMy44OTksMzQuMTE4LDExLjcwNCBjMTAuMTgzLDcuODA0LDE4LjE3NywxNy43MDEsMjMuOTg0LDI5LjY5MmM1LjgwMiwxMS45OTEsMTAuMjc3LDI0LjQwNywxMy40MTcsMzcuMjU3YzMuMTQsMTIuODQ3LDQuNzExLDI0Ljk4Myw0LjcxMSwzNi40MDMgYzAsMTkuMDM2LTQuMTM5LDM0LjMxNy0xMi40MTksNDUuODMzQzE5NS4xNDQsMTkyLjk2NCwxODEuNzc1LDE5OC43MjIsMTYzLjMxMSwxOTguNzIyeiBNMjQyLjI1MSw0MTMuMTIzIGMtNS4yMyw4Ljk0OS0xMi4zMTksMTUuOTQtMjEuMjY3LDIwLjk4MWMtOC45NDYsNS4wNDgtMTguNTA5LDguNzU4LTI4LjY5MywxMS4xNGMtMTAuMTgzLDIuMzg1LTIwLjg4OSwzLjU3Mi0zMi4xMiwzLjU3MiBjLTEyLjE4MiwwLTI0LjI3LTEuNDMxLTM2LjI1OC00LjI4NGMtMTEuOTktMi44NTEtMjMuNDU5LTcuMTg3LTM0LjQwMy0xMi45OTFjLTEwLjk0NC01LjgtMTkuNzk1LTEzLjc5OC0yNi41NTEtMjMuOTgyIGMtNi43NTctMTAuMTg0LTEwLjEzNS0yMS43NDQtMTAuMTM1LTM0LjY5YzAtMTEuNDE5LDIuNTY4LTIxLjYwMSw3LjcwOC0zMC41NWM1LjE0Mi04Ljk0NSwxMS43MDktMTYuMDg0LDE5LjcwMi0yMS40MDggYzcuOTk0LTUuMzMyLDE3LjMxOS05LjcxMywyNy45NzktMTMuMTMxYzEwLjY2LTMuNDMzLDIwLjkzNy01LjgwOCwzMC44MzMtNy4xMzljOS44OTUtMS4zMzUsMTkuOTg1LTEuOTk1LDMwLjI2Mi0xLjk5NSBjNi4yODMsMCwxMS4wNDMsMC4xOTEsMTQuMjc3LDAuNTY3YzEuMTQzLDAuNzY3LDQuMDQzLDIuNzU5LDguNzA4LDUuOTk2czcuODA0LDUuNDI4LDkuNDIzLDYuNTcgYzEuNjE1LDEuMTM3LDQuNTY3LDMuMzI2LDguODUsNi41NjNjNC4yODEsMy4yMzcsNy4zMjcsNS42NjEsOS4xMzUsNy4yNzljMS44MDMsMS42MTgsNC40MjEsNC4wNDUsNy44NDksNy4yNzkgYzMuNDI0LDMuMjM3LDUuOTQ4LDYuMDQzLDcuNTY2LDguNDIyYzEuNjE1LDIuMzc4LDMuNjE2LDUuMjgsNS45OTYsOC43MDJjMi4zOCwzLjQzMyw0LjA0Myw2LjcxNSw0Ljk5OCw5Ljg1NSBjMC45NDgsMy4xNDIsMS44NTQsNi41NjcsMi43MDcsMTAuMjc3YzAuODU1LDMuNzIsMS4yODMsNy41NjksMS4yODMsMTEuNTdDMjUwLjEwNSwzOTMuNzEzLDI0Ny40ODcsNDA0LjE4MiwyNDIuMjUxLDQxMy4xMjN6Ii8+IDxwb2x5Z29uIHBvaW50cz0iNDAxLjk5OCw3My4wODkgNDAxLjk5OCwwIDM2NS40NDksMCAzNjUuNDQ5LDczLjA4OSAyOTIuMzU4LDczLjA4OSAyOTIuMzU4LDEwOS42MzYgMzY1LjQ0OSwxMDkuNjM2ICAzNjUuNDQ5LDE4Mi43MjUgNDAxLjk5OCwxODIuNzI1IDQwMS45OTgsMTA5LjYzNiA0NzUuMDgxLDEwOS42MzYgNDc1LjA4MSw3My4wODkiLz48L3N2Zz4=')} #wpmchimpa-main .wpmchimpa-social .wpmchimpa-soc.wpmchimpa-ms { display:none;} #wpmchimpa-main .wpmchimpa-social .wpmchimpa-soc.wpmchimpa-ms::before { background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiNmZmYiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMTVweCIgaGVpZ2h0PSIxNXB4IiB2aWV3Qm94PSIwIDAgMTcgMTciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDE3IDE3IiB4bWw6c3BhY2U9InByZXNlcnZlIj48cGF0aCBkPSJNOC4wMjEsMS4zODV2Ni40MzdoOC43OTFWMC4xMjdMOC4wMjEsMS4zODV6IE0wLDcuODIyaDYuNjQ4VjEuNDk0TDAsMi40NDNWNy44MjJ6IE0wLDE0LjE3NSBsNi42NDgsMS4wMzFWOC42M0gwVjE0LjE3NXogTTguMDIxLDE1LjMyMWw4Ljc5MSwxLjM2NFY4LjYzSDguMDIxVjE1LjMyMXoiLz48L3N2Zz4=')} #wpmchimpa-main .wpmchimpa-social .wpmchimpa-soc.wpmchimpa-ms:hover:before { background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiMwMEJDRjIiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMTVweCIgaGVpZ2h0PSIxNXB4IiB2aWV3Qm94PSIwIDAgMTcgMTciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDE3IDE3IiB4bWw6c3BhY2U9InByZXNlcnZlIj48cGF0aCBkPSJNOC4wMjEsMS4zODV2Ni40MzdoOC43OTFWMC4xMjdMOC4wMjEsMS4zODV6IE0wLDcuODIyaDYuNjQ4VjEuNDk0TDAsMi40NDNWNy44MjJ6IE0wLDE0LjE3NSBsNi42NDgsMS4wMzFWOC42M0gwVjE0LjE3NXogTTguMDIxLDE1LjMyMWw4Ljc5MSwxLjM2NFY4LjYzSDguMDIxVjE1LjMyMXoiLz48L3N2Zz4=')} #wpmchimpa-main .wpmchimpa-close-button{ position: absolute; display: block; top: 0; right: 0; width: 25px; text-align: center; cursor: pointer; } #wpmchimpa-main .wpmchimpa-close-button::before{ content: "\00D7"; font-size: 25px; line-height: 25px; font-weight: 100; color: #999; opacity: 0.4; color:;} #wpmchimpa-main .wpmchimpa-close-button:hover:before{ opacity: 1; } #wpmchimpa-main .wpmchimpa-feedback.wpmchimpa-done{ font-size: 15px; margin: 10px; height: auto;} #wpmchimpa-main .wpmchimpa-feedback.wpmchimpa-done:before{ content:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiNmZmYiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMTVweCIgaGVpZ2h0PSIxNXB4IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNTEyIDUxMiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSIxNDIuOCwzMjMuODUgMzUuNywyMTYuNzUgMCwyNTIuNDUgMTQyLjgsMzk1LjI1IDQ0OC44LDg5LjI1IDQxMy4xLDUzLjU1Ii8+PC9zdmc+'); width: 40px; height: 40px; border-radius: 20px; line-height: 46px; display: block; background-color: #01E169; margin: 40px auto; } .wpmc_2col #wpmchimpa .wpmc_colsplit{ width: calc(50% - 5px); display: inline-block; float: left; } .wpmc_2col #wpmchimpa .wpmc_coleven{ margin-left: 10px; } @media only screen and (max-width: 600px){ .wpmc_2col #wpmchimpa .wpmc_colsplit{ width: 100%; margin-left: 0; } } .animated { -webkit-animation-duration: 1s; animation-duration: 1s; -webkit-animation-fill-mode: both; animation-fill-mode: both; } @-webkit-keyframes bounceInDown { 0%, 60%, 75%, 90%, 100% { -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); } 0% { opacity: 0; -webkit-transform: translate3d(0, -3000px, 0); transform: translate3d(0, -3000px, 0); } 60% { opacity: 1; -webkit-transform: translate3d(0, 25px, 0); transform: translate3d(0, 25px, 0); } 75% { -webkit-transform: translate3d(0, -10px, 0); transform: translate3d(0, -10px, 0); } 90% { -webkit-transform: translate3d(0, 5px, 0); transform: translate3d(0, 5px, 0); } 100% { -webkit-transform: none; transform: none; } } @keyframes bounceInDown { 0%, 60%, 75%, 90%, 100% { -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); } 0% { opacity: 0; -webkit-transform: translate3d(0, -3000px, 0); transform: translate3d(0, -3000px, 0); } 60% { opacity: 1; -webkit-transform: translate3d(0, 25px, 0); transform: translate3d(0, 25px, 0); } 75% { -webkit-transform: translate3d(0, -10px, 0); transform: translate3d(0, -10px, 0); } 90% { -webkit-transform: translate3d(0, 5px, 0); transform: translate3d(0, 5px, 0); } 100% { -webkit-transform: none; transform: none; } } .bounceInDown { -webkit-animation-name: bounceInDown; animation-name: bounceInDown; } .animatedout { -webkit-animation-duration: 1s; animation-duration: 1s; -webkit-animation-fill-mode: both; animation-fill-mode: both; } @-webkit-keyframes rollOut { 0% { opacity: 1; } 100% { opacity: 0; -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); } } @keyframes rollOut { 0% { opacity: 1; } 100% { opacity: 0; -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); } } .rollOut { -webkit-animation-name: rollOut; animation-name: rollOut; } @-webkit-keyframes zoomIn { 0% { opacity: 0; -webkit-transform: scale3d(.3, .3, .3); transform: scale3d(.3, .3, .3); } 50% { opacity: 1; } } </style> <div class="wpmchimpa-reset wpmchimpa-overlay-bg wpmchimpselector chimpmatecss"> <div class="wpmchimpa-maina bounceInDown animated" wpmcexitanim> <div class="wpmchimpa-mainc"> <div id="wpmchimpa-main"> <div id="wpmchimpa-newsletterform" class="wpmchimpa-wrapper"> <div class="wpmchimpa" id="wpmchimpa"> <h3>La campana.</h3> <div class="wpmchimpa_para"><div style="text-align: center;">Ci sono quelli che hanno letto questa notizia prima di te.</div><div style="text-align: center;">Iscriviti per ricevere articoli freschi. <img src="http://" loading=lazy loading=lazy></div></div> <form wpmc_suc wpmc_msg="Спасибо! ПРОВЕРЬТЕ ПОЧТУ" action="" method="post"> <input type="hidden" name="action" value="wpmchimpa_add_email_ajax."/> <input type="hidden" name="wpmcform" value="1"/> <div class="formbox wpmchimpa-field"><div class="wpmchimpa-text wpmc-ficon"><input type="text" name="email" wpmctype="email" wpmcfield="email" wpmcreq="true" required/><span class="inputlabel">E-mail</span><span class="inputicon"></span><div class="wpmcinfierr" wpmcerr="email"></div></div><div class="wpmchimpa-subsc"><div class="wpmchimpa-subs-button"></div><div class="wpmchimpa-signal"><style type="text/css">#wpmchimpa-main .sp8 { margin: 0 auto;width: 50px;height: 30px;} #wpmchimpa-main .sp8 > div { background-color: #3d3d3d;margin-left: 3px;height: 100%;width: 6px;display: inline-block;-webkit-animation: wpmchimpa-mainsp8 1.2s infinite ease-in-out;animation: wpmchimpa-mainsp8 1.2s infinite ease-in-out;} #wpmchimpa-main .sp8 .sp82 { -webkit-animation-delay: -1.1s;animation-delay: -1.1s;} #wpmchimpa-main .sp8 .sp83 { -webkit-animation-delay: -1.0s;animation-delay: -1.0s;} #wpmchimpa-main .sp8 .sp84 { -webkit-animation-delay: -0.9s;animation-delay: -0.9s;} #wpmchimpa-main .sp8 .sp85 { -webkit-animation-delay: -0.8s;animation-delay: -0.8s;} @-webkit-keyframes wpmchimpa-mainsp8 { 0%, 40%, 100% { -webkit-transform: scaleY(0.4) } 20% { -webkit-transform: scaleY(1.0) } }@keyframes wpmchimpa-mainsp8 { 0%, 40%, 100% { transform: scaleY(0.4);-webkit-transform: scaleY(0.4);} 20% { transform: scaleY(1.0);-webkit-transform: scaleY(1.0);} }</style><div class="sp8"><div class="sp81"></div><div class="sp82"></div><div class="sp83"></div><div class="sp84"></div><div class="sp85"></div></div></div></div><div style="clear:both"></div></div><div class="wpmchimpa-field wpmchimpa-text wpmc_colsplit wpmc-ficon"><input type="text" name="merge_fields[FNAME]" wpmctype="text" wpmcfield="FNAME" wpmcreq="true" required/><span class="inputlabel">Nome</span><span class="inputicon"></span><div class="wpmcinfierr" wpmcerr="FNAME"></div></div><div class="wpmchimpa-field wpmchimpa-text wpmc_colsplit wpmc-ficon"><input type="text" name="merge_fields[LNAME]" wpmctype="text" wpmcfield="LNAME" wpmcreq="true" required/><span class="inputlabel">Cognome</span><span class="inputicon"></span><div class="wpmcinfierr" wpmcerr="LNAME"></div></div><div class="wpmchimpa-field wpmchimpa-radio"><div class="wpmchimpa-itemh">Come vuoi leggere la campana</div><div class="wpmchimpa-itemb"><label class="wpmchimpa-item"><input type="radio" name="group[f899931c09]" value="a22E2103B4." wpmctype="radio" wpmcfield="f899931c09" wpmcreq="true"><span>Due volte al giorno</span></label><label class="wpmchimpa-item"><input type="radio" name="group[f899931c09]" value="4ab55De31a." wpmctype="radio" wpmcfield="f899931c09" wpmcreq="true"><span>Newsletter del mattino</span></label><label class="wpmchimpa-item"><input type="radio" name="group[f899931c09]" value="e386C1935E." wpmctype="radio" wpmcfield="f899931c09" wpmcreq="true"><span>Newsletter da sera</span></label></div><div class="wpmcinfierr" wpmcerr="f899931c09"></div></div> <div style="clear:both"></div> <div class="wpmchimpa-tag">Senza spam.</div> </form> <div class="wpmchimpa-feedback" wpmcerr="gen"></div> </div> </div> <div class="wpmchimpa-close-button"></div> </div> </div> </div> </div><script data-cfasync="false" src="/cdn-cgi/scripts/af2821b0/cloudflare-static/email-decode.min.js"></script><script type='text/javascript' src='https://qipu.ru/wp-content/themes/authentic/js/vendors.min.js?ver=201710093'></script> <script type='text/javascript'> /* <![CDATA[ */ var translation = { "next":"Next","previous":"Previous"} ; /* ]]> */ </script> <script type='text/javascript' src='https://qipu.ru/wp-content/themes/authentic/js/scripts.js?ver=201710093'></script> <script type='text/javascript' src='/wp-includes/js/wp-embed.min.js?ver=9.9.9'></script> <script type='text/javascript' src='https://qipu.ru/wp-content/plugins/chimpmatepro/public/assets/js/public.js?ver=1.3.2'></script> </body> </html>