Dzwon.

Są ci, którzy przeczytali tę wiadomość przed tobą.
Subskrybuj odbieranie artykułów świeżych.
E-mail
Nazwa
Nazwisko
Jak chcesz przeczytać dzwonek
Bez spamu

Ostatnio, duża uwaga jest wypłacana budowanie systemów e-biznesowych, lub jak są one również nazywane - B2B (biznes do biznesu). Biorąc pod uwagę zalecenia dotyczące budowy systemów wymiany strumieniowych systemów koordynujących technologii internetowych organu - www Konsorcjum: podkreśla się nacisk na technologie XML i budowanie systemów wymiany dokumentów XML.

Zaletą wykorzystania XML w e-biznesu jest wysoka wydajność systemów B2B przy niskich kosztach jego tworzenia z powodu jasnej i wizualnej reprezentacji strukturalnych informacji, możliwość korzystania z nowoczesnych protokołów sieciowych i tworzenia systemów biznesowych w czasie rzeczywistym.

Niezależność prezentacji informacji w formie dokumentów XML pozwala na różne, uczestniczące w biznesie elektronicznym, aby wytworzyć niezależne od siebie.

We wszystkich systemach wymiana jest zwykle budowana przez ten sam schemat przy użyciu żądań HTTP. Protokół SSL jest stosowany jako protokół SSL (ale jest to oddzielny temat).

Jedną z możliwych opcji przetwarzania wiadomości XML jest zbudowanie bin / CGI (ISAPI) -News lub COM (Server) komponenty tworzące lub przetwarzanie dokumentów XML.

Z jednej strony aplikacja działa jako klient, który w trybie post powoduje wyświetlenie zapytania HTTP, z drugiej strony jest serwer internetowy z boku, którego przetwarzane jest przetwarzanie zapytania i odpowiedź. Wymiana informacji wykorzystuje dokumenty XML.

Jedną z najbardziej efektywnych opcji wdrażania jest stosowanie istniejącego parsera XML obsługującego model Dom. Taki parser jest dostawą dystrybucyjną Win`98 lub integralną częścią IE 4.7 i powyżej (dla Win`95) i reprezentuje serwer COM znajduje się w bibliotece MSXML.dll.

Model obiektu Komponentowy (COM) jest kapsułkowanymi danymi i metodami w jednej esencji i sposób na dostęp do nich przez system interfejsu. Delphi jest po prostu dostępny do dostępu do klasy obiektu COM (kilka klas może być zawartych w jednym serwerze COM). Dostęp do obiektów jest przeprowadzany przez inicjalizację instancji klasy przez system interfejsu. Opis interfejsów jest wykonywany przez język definicji interfejsu (IDL), który jest możliwy do automatycznego wykonywania środków medium.

Delphi oznacza import z serwera COM msxml.dll.Pliki opisu interfejsu IDL są zbudowane i plik binarny typ biblioteki jest TLB. Ta operacja jest przeprowadzana przez menu System: Projekt |. Import biblioteki typu:(obrazek 1). Pojawi się następujące okno dialogowe (Rysunek 2), w którym chcesz wybrać obiekt COM (w naszym przypadku obiekt jest zarejestrowany jako "Microsoft.xmldom (wersja 2.0)") i utwórz plik TLB (przycisk Utwórz jednostkę.). Korzystanie z pliku TLB środowisko generuje plik "Paskalevsky" Opis serwera COM - MSXML_TLB.PAS

Plik MSXML_TLB.PAS opisuje wszystkie interfejsy, stałe i serwery COM.

W celu uzyskania dostępu do obiektów elementu COM konieczne jest w dyrektywie Używa.dodaj nazwę pliku opisu biblioteki (MSXML_TLB.PAS). Poniżej znajduje się najprostszy program, który używa standardowego analizatora MSXML.DLL, który pobiera dokument XML i wyświetla go w elemencie pola tekstowego MEMO1.

używa. Windows, wiadomości, Sysutils, klasy, grafiki, elementy sterujące, formularze, dialogowe, OleServer, MSXML_TLB, STDCTRLS; rodzaj Tform1 \u003d. klasa(Torm) Button1: Tbutton; MEMO1: TMEMO; procedura. Button1Click (nadawca: Połącz); koniec; var. Formularz1: tform1; realizacja ($ R * .dfm) Procedura.Tform1.Button1click (nadawca: TOBJECT); // Deklaracja obiektu Soklass Domdocument; var.codoc: Kodomdocument; // klasa, zgodna z interfejsem idomdocument; var.DOC: Ixmldocument; zaczynać. // tworząc instancję obiektu Domdocument; DOC: \u003d Codoc.Create; // wywołaj metodę trybu instancji obiektu Domdocument; Doc.load ("Data.xml"); // Dostęp do instancji właściwości XML obiektu Domdocument; Memo1.text: \u003d doc.xml; koniec; koniec.

Dom koncepcja - model dokumentu obiektu

Każdy dokument XML jest reprezentowany jako zestaw wielu obiektów (klas), z którymi możliwe jest dostęp do poszczególnych elementów (pól obiektów). Dom - interfejs opisuje dostęp do obiektów i obiektów i elementów i elementów i części lub oddzielnych elementów XML dokumentu: domFragmentElement, domnode, domIEL.

Poniżej znajdują się najważniejsze właściwości i metody xmldomdocument, XMldomnode, XMldomnodelist. Należy zauważyć, że model MSXML.DLL XML Analyzer, analizator MSXML.DLL XML, przedstawiony poniżej, są używane poniżej analizatora XML MSXML.DLL niż konsorcjum Dom zatwierdzony przez model W3C.

Bardziej pełny opis obiektów interfejsu można znaleźć

Xmldomdocument obiekt.
Reprezentuje najwyższy poziom hierarchii obiektów i zawiera metody pracy z dokumentem: jego pliki do pobrania, analizy, tworzenie elementów, atrybutów, komentarzy w nim itp. .
Nieruchomości
Async. Właściwość Identyfikacja trybu przetwarzania bieżącego
Błąd przetwarzania Zwraca odniesienie do obiektu przetwarzania błędów xmldompsarror
Włącz - wyłącz weryfikację dokumentów.
uRL. Zwraca adres URL dokumentu
dokumentacja Zawiera odniesienie do elementu głównego dokumentu jako obiektu XMDOMEMEMEMENT.
Metody
Ładunek (URL)
loadxml (xmlstring)
Ładuje dokument XML
zapisz (Objtarget) Zapisuje dokument XML w pliku
aNULOWAĆ. Przerywanie procesu pobierania i przetwarzania dokumentu.
createatTribute (Nazwa) Tworzy nowy atrybut z określoną nazwą bieżącego elementu.
createNode (typ, imię, nazwisko) Tworzy węzeł określonego typu i tytułu
createlement (zmienna) Tworzy element dokumentu o określonej nazwie.
createTextNode (dane) Tworzy tekst wewnątrz dokumentu
gettelementsBytagname (zmienna) Zwraca link do kolekcji elementów dokumentów o określonej nazwie
nodefromid (idtring) Element wyszukiwania według identyfikatora

Xmldomnode obiekt.
Object XMldomnode, który realizuje podstawowy interfejs DOM Węzeł., Zaprojektowany, aby manipulować oddzielnym węzłem drzewa dokumentu. Jego właściwości i metody pozwalają otrzymywać i zmienić pełne informacje o bieżącym węźle - jego typ, nazwa, pełna nazwa, jego zawartość, lista elementów dziecka itp.
Nieruchomości
nodename, Basename. Zwraca nazwę bieżącego węzła.
prefiks. Zwraca prefiks przestrzeni nazw.
typ danych. Określa typ treści bieżącego węzła
nodeTepe, NodeTyPestring. Zwraca typ bieżącego węzła:
atrybuty. Zwraca listę atrybutów bieżącego węzła jako kolekcji XMLDOMNAMENDEMAP.
tEKST. Zwraca zawartość bieżącego wsparcia w formie tekstu.
xml. Zwraca reprezentację XML bieżącego wsparcia.
nodevalue. Zwraca zawartość bieżącego węzła.
dziecięce. Zwraca listę elementów dziecka jako XMldomnodelist.
fUNDID, LADYCHILD. Zwraca pierwszy / ostatni element dziecka
poprzednie, Nextsibling. Zwraca poprzedni / następny element pielęgniarski.
parentNode. Zawiera odniesienie do elementu macierzystego.
właścicieldokument. Zwraca wskaźnik do dokumentu, w którym znajduje się bieżący węzeł.
Metody
appendChild (Newchild) Dodaje nowy element dziecka do bieżącego węzła.
insertBefore (Newchild, Retchild) Wstawia węzeł dziecka, mający go w bieżącym poddrzeniu "w lewo" węzła określonego przez parametr zRECHILD.
klonenode (głębokie) Utwórz kopię bieżącego elementu.
getattribute.(Nazwa)
getattributenode. (Nazwa)
setattribute (nazwa, wartość)
setattributeNode (xmldomattribute)
Dostęp do atrybutów (tworzenie, czytanie, pisanie) obiektu. Nazwa - nazwa atrybutu, wartość - jego wartość. Zwraca wartość obiektu XMldomattribute.
wymień się (Newchild, Oldchild) RemoveChild (oldchild) Wymiana Oldchild Cel of the Resty List Spółka zależnych na Newchild. Usuwanie obiektu oldchild
selectNodes SelectSingLende (PatternString) Zwraca obiekt XMldomnodelist wybrany przez wzorzec wyszukiwania lub pierwszy węzeł
transformnode (Styresheet)
transformnodetObject (style arkusz, wyjście)
Przypisuje tabelę stylową, aby obsługiwać bieżący węzeł i zwraca ciąg - wynik przetwarzania. Odniesienie do obiektu Domdocument jest przesyłany jako parametr, w którym znajdują się instrukcje XSL.

Korzystanie z XML w biznesie.

Aby uzyskać wyraźniejszy obraz, konieczne jest wyjaśnienie i dlaczego to wszystko jest konieczne, co zrozumieć, jak to działa:

Podczas budowy systemu ERP B2B lub Corporate, przy organizowaniu wymiany informacji o dokumentach XML między przedsiębiorstwami lub oddziałami Prom-I, skutecznie sprawdzony system informacyjny jest używany na podstawie dostępnych serwerów internetowych w protokole HTTP.

Z jednej strony aplikacja działa jako klient, który w trybie post powoduje z drugiej strony zapytanie HTTP, serwer WWW znajduje się z boku, którego żądanie jest przetwarzane i odpowiedź. Dokumenty XML są używane jako wymiana.

Na przykład w prostym systemie Corporate ERP programu księgowego (Rachunkowość ACS), konieczne jest utworzenie pewnego wniosku o fakturę i przeniesienie go do oddziału, który ma magazyn (magazyn ACS). Sztuka jest podobną ustawieniem problemu podczas tworzenia B2B systemu, gdy przedsiębiorstwo żąda dostępności produktów (dokonuje zamówienia na zakup) od Dostawcy V.

Przedsiębiorstwo A i jego program działa jako klient. Magazyn serwuje dostawca, który ma kompleks magazynowy BD na serwerze SQL. Wymiana prowadzona jest przez dostawcę serwera internetowego korporacyjnego V.

Poniżej znajduje się następujący typowy algorytm wymiany:


Rysunek 3.
  1. Przedsiębiorstwo A.inicjatywy. proces A.(Zamówienie produktu), który działa jako klient internetowy.
  2. Proces A.generuje dokument XML (na przykład, fakturę) i przesyła ją jako zapytanie pocztowe do serwera dostawcy internetowego V. jako URI - używany jest identyfikator aplikacji przetwarzania. URI może być taki sam jak dla wszystkich typów dokumentów lub jednostki dla każdego typu. Wszystko zależy od struktury serwera B2B (Web).
  3. Serwer internetowy analizuje żądanie i generuje serwer Proces B.Przekazując dokument XML jako parametr.
    Proces w serwerze WWW jest uruchamiany i przetwarzany jako strona ASP, CGI (ISAPI) - aplikacja lub Java Sevrlet (Server Application)
  4. Proces B.- Generuje żądanie do serwera bazy danych SQL.
  5. Serwer SQL umożliwia konieczne operacje w bazie danych, tworzy odpowiedź i zwraca go. Proces B..
  6. Na odpowiedź z serwera SQL Proces B. Generuje dokument XML (odpowiedź) i pozwala go jako odpowiedź na żądanie HTTP do aplikacji klienta.
  7. Ponadto, w zależności od sytuacji po stronie klienta utworzone jest nowe zapytanie HTTP lub kończy się sesja.

Kilka słów o organizacji zarządzania dokumentami.

Ogólną zasadą rozwoju systemu Exchange XML jest:

  • po pierwsze- opracowanie obwodu przepływu dokumentów elektronicznych i ich struktury;
  • po drugie- Rozwój tabel funkcji procesów (subprocesses) I.e. Jaka funkcja w stosunku do której dokument XML wdroży każdy proces.

Każdy dokument XML, taki jak dokument HTML, powinien składać się z nagłówka wiadomości (więźnia informacyjna) i korpusu wiadomości (dla zapytania te informacje oprawione przez oznaczenie na żądanie). Aby uzyskać prawidłowe utworzenie dokumentu XML, konieczne jest na przykład dwa składniki "nagłówka" i "żądania" do oprawionych znaczników. Widok standardowego dokumentu przedstawiono poniżej:

Tytuł (Rysunek 4), w przeciwieństwie do HTML dokumentu, powinien zawierać różne informacje dotyczące usługi, w tym informacje o rodzaju procesu przesyłanego i przetwarzania dokumentów. Otrzymano przetwarzanie informacyjne dokumentu, tj. Znacząca część jest oprawiona tagiem. Należy zauważyć, że struktura nagłówka powinna być zjednoczona dla wszystkich typów dokumentów.

W przypadku procesu działającego przez serwer algorytm przetwarzania jest korzystnie (ale nie jest konieczny), aby zbudować w następujący sposób:


Rysunek 6.

Niektóre główne chwile podczas tworzenia części klienta

Jak już wyjaśniono, podczas tworzenia dokumentu XML wykorzystuje swoją prezentację w postaci modelu Domu. Poniżej znajduje się przykład tekstu tekstu Delphi programu Message Header.

procedura.TTHREAD1.HEADERCreate (nadawca: TOBJECT); var. // ogłoszenie klasy jest potrzebne do utworzenia Codoc: Kodomdocument; // xmldomdocument obiekt. DOC: Domdocument; R: ixmldomelement; Węzeł: Ixmldomelement; // domText txt: ixmldomText; // domattribute attr: ixmldomattribute; zaczynać. // tworząc dokument DOM DOC: \u003d Codoc.Create; DOC.SET_ASYNC (FAŁSZ); // początkowy inicjacja dokument DOC.LOADXML ("
"); // tworząc domIELENT (tag<Nadawca.>) Węzeł: \u003d doc.createel ("nadawca"); // Tworzenie węzła tekstowego " LLC "Typhoon"" Txt: \u003d doc.creatextnode ("LLC" Tyfoon "); // przypisanie węzła<Nadawca.\u003e Wartość // węzeł tekstowy " LLC "Typhoon"" Node.appendChild (TXT); // dodając przedmiot<Nadawca.\u003e w korzeniu dokumentu jako spółki zależnej R.appendChild (węzeł); <Z.> Węzeł: \u003d Doc.Createelement ("z"); TXT: \u003d DOC.CreatextNode ("http://tayfun.ru/xml/default.asp"); Node.appendChild (TXT); R.appendChild (węzeł); // Podobne operacje dla tagu<Do.> Węzeł: \u003d Doc.createelement ("do"); Txt: \u003d doc.createTextNode ("http://irbis.ru"); Node.appendChild (TXT); R.appendChild (węzeł); // Utwórz domIEMEMENT () Węzeł: \u003d doc.createelement ("typedocument"); // tworząc węzeł xmldomattribute ATT: \u003d DOC.CreatTribute ("ID", "zamówienie"); // Node.appendChild (ATT); R.appendChild (węzeł); koniec;

Należy zauważyć, że ogłoszenie Codoc: Codomdocument i Doc: Zmienna Domdocument, a także tworzenie metody Utwórz (Doc: \u003d Codoc.Create;) odbywa się raz. Deklaracja zmiennej znajduje się w sekcji opisu zmiennych globalnych, a nie w procedurze lokalnej, jak wykazała widoczność w tym przykładzie (tj. Jedna globalna zmienna z modułu programu Domdocument typu jednego).

Wynik powyższego programu będzie utworzony nagłówek, w odniesieniu do naszego przykładu dokumentu XML: przedstawiony na rysunku 5.


Rysunek 5.


Rysunek 6.

Główną zaletą przekazywania informacji w formie dokumentów XML jest to, że możliwe jest utworzenie wiadomości przy użyciu niezależnej struktury tabel w DBMS zarówno na stronie odebranej, jak i przenoszonej. Korzystając z naszego przykładu, niech musi przenieść informacje o fakturach przedsiębiorstwa A, z DBMS struktury pokazanej na rysunku 6

Aby utworzyć dokument XML zawierający fakturę, początkowo zbudowany wniosek SQL (zapytanie A) z informacjami o fakturze:

WYBIERZ * Z Invoice_General. Gdzie. InvoiCenum \u003d: Num WYBIERZTowary, quulty, cena, Hz_cod Z.Dobra Gdzie. InvoiCenum \u003d: Num //: Num - parametr, który określa numer faktury.

Poniżej znajduje się część programu tworzącego korpus dokumentu XML:

procedura. TTHREAD1.DATABODYCREATE (nadawca: Tobject); var. // klasy i xmldomdocument // Codoc: Codomdocument; // musi być globalny, dla całego modułu. // DOC: Domdocument; // Ogłoszenie obiektów domeniowych R: ixmldomelement; // DomaLemat; Węzeł, węzeł2: Ixmldomelemelement; Node3, Node4: Ixmldomelement; // domText txt: ixmldomText; Str: ciąg; // Numer faktury: liczba całkowita; - Zmienna globalna - // Masching 987654 // Querya, QueryB: Strunowy; - Zmienna globalna, // utrzymanie prośby o żądanie // querya - żądanie i ogólne informacje na temat faktury // Queryb - zapytanie B Informacje o towarach opisanych w // faktury (patrz tekst) zaczynać. Query.Close; // zobacz tekstu "Poproś o" Query.Text: \u003d querya; // żądanie wykonania Query.execsql; Query.open; // Uzyskaj adres elementu korzenia R: \u003d dok.get_documentElement; Node2: \u003d Doc.createel ("żądanie"); // Utwórz domIEL (tag) Węzeł: \u003d doc.createel ("faktura"); // dodając element do korzenia R.appendChild (węzeł2); // dodając przedmiot Węzeł2. Appendochild (węzeł); // Utwórz domIEL (tag) Node3: \u003d Doc.createel ("Depurture"); // dodając przedmiot Węzeł. AppendChild (Node3); // Odwołaj się do pola "Depurture" Str: \u003d Query.fieldbyName ("Depurture"). Asstring; // Tworzenie węzła tekstowego \u003d wartość pola // Wartość przypisania węzła // węzeł tekstowy, zmienny str Node.appendChild (TXT); // Podobne operacje dla tagu , , // , // (pole db "odbiorca") Węzeł: \u003d doc.createelement ("miejsce docelowe"); // Nazwa pola bazy danych może nie pokrywać się z nazwą Str: \u003d Query.fieldbyName ("odbiorca") .String; // Taga, w tej zalicie użytkowania Txt: \u003d doc.createTextNode (STR); // Dom interfejsu przed DBMS mający obsługę interfejsu XML, // Typ Oracle 8i lub MS SQL 2000 Node.appendChild (TXT); ... // powstawanie żądania specyfikacji towarów // zamyka żądanie dostępu Query.Close; // zobacz tekstu "Poproś o", informacje. O produktach Query.Text: \u003d queryb; // Przypisywanie wartości parametrów Query.Params.Asinteger: \u003d Invocenumberumber; // żądanie wykonania Query2.execsql; // Otwarcie dostępu do danych Query.open; // Utwórz domIEL (tag) Node3: \u003d doc.createel ("imems"); // dodając przedmiot Węzeł. AppendChild (Node3); // cykl na wszystkich żądaniach podczas nie. Eof.query. zrobić. Rozpocznij Node4: \u003d Doc.createel ("IMEM"); // dodając przedmiot Node3.appendChild (Node4); // generowanie danych dla tagu Str: \u003d Query.fieldbyName ("Cena"). Asstring; Txt: \u003d doc.createTextNode (STR); Node.appendChild (TXT); ... // Podobne operacje dla tagów , , koniec; koniec;

W wyniku tej procedury utworzono następujący tekst dokumentu XML:


Open metoda służy do utworzenia zapytania. IXMLHTTPREQUEST.:

procedura. Otwórz (Const Bstrmethod, - Metoda Type \u003d "Post" BSTRURL, - Adres serwera URL VarasynC, - Tryb asynchroniczny / synchroniczny Tryb komunikacji \u003d True Bstruper, - Nazwa użytkownika dla Uwierzytelniania BBSpassword) - Hasło

Tworzenie serwera części przetwarzania dokumentów

Jak wspomniano wcześniej, przetwarzanie żądania HTTP można przeprowadzić aplikacje CGI lub serwlety Java. Możliwe opcje pisania stron ASP. Ale w tym przypadku transmisja danych jest możliwa tylko przez "Zdobądź" używając ciągu zapytań. Chociaż przetwarzanie HTTP żądania strony ASP działa bardziej wydajnie niż aplikacja CGI. Jednak moim zdaniem, bez żadnej różnicy, jak przetworzyć, co ważniejsze, aby rozwiązać pytanie - jak zbudować program przetwarzania, a nie z co oznacza.

Jeśli przeglądamy opcje tworzenia dokumentów XML z poprzedniego rozdziału, zadaniem aplikacji serwera jest przeciwieństwem dokumentów XML. Poniżej znajduje się część programu, który analizuje dokument XML:

procedura.TTHREAD1.DATAPARSER (nadawca: Tobject); var. // Ogłoszenie obiektów domeniowych R, FNODE: Ixmldomelement; Str, nazwa_pliku: ciąg; Parm: ciąg; // ogłoszenie Soklass i Codocxml, Codocxsl, Kodocresult: Codomdocument; // xmldomdocument obiekt. XMLDOC, XSLDOC, ResultUdoc: Domdocument; // httpstr: ciąg; - Zmienna globalna zawierająca ciąg zapytania HTTP Zaczynać. Xmldoc: \u003d codocxml.create; Xmldoc.loadxml (httpstr); // Uzyskaj adres elementu korzenia R: \u003d dok.get_documentElement; // Uzyskanie wartości elementu FNODE: \u003d r.SexingLenode ("// typedocument"); // Uzyskaj atrybutę ID \u003d "Zamówienie" Nazwa pliku: \u003d fnode.getattibute ("id"); // i tworząc polecenie nazwy pliku.xsl Nazwa pliku: \u003d nazwa pliku + ". XSL"; // Tworzenie dokumentu XSLDOC Xsldoc: \u003d codocxsl.create; Xsldoc.loadxml (nazwa pliku); // Tworzenie dokumentu XMLDOC RUNDUSDOC: \u003d codocresult.Create; // Ustawianie trybu przetwarzania synchronicznego Resultadok.set_async (False); // Instalowanie sprawdzania debiutu Resultadok.ValidatParase: \u003d true; // zwiń xmldoc przez szablon XSL Xmldoc.transformnoc, ResultDOC (XSLDOC, ResultDOC); // zmienna STR jest przypisana do wartości tekstowej // wynikowy dokument. Str: \u003d Resultadok.Text; // Element wyszukiwania FNODE: \u003d R.SexingingLode ("// InvoiCenumber"); // i uzyskanie wartości elementu Parm: \u003d fnode.text; // zamyka żądanie dostępu Query.Close; Query.Text: \u003d str; // przypisanie wartości parametru Query.Params.Astring: \u003d parm; // żądanie wykonania Query.execsql; koniec;

Cała gama parsowania jest zastosowanie szablonu XSL, który jest utworzony dla każdego rodzaju dokumentu indywidualnie. Rezultatem analizy jest ciąg zapytania SQL. W konsekwencji wykonanie wygenerowanego ciągu Zapytania SQL dokona niezbędnych zmian w DBMS.

Zaleta wykorzystania parsowania przez szablon jest również w fakcie, że uzyskuje się całkowitą elastyczność danych, a całkowita niezależność działania algorytmu z kodu programu. Poniżej znajduje się tekst szablonu XSL w stosowanym do przetwarzania typu dokumentu.

Włóż do wartości Tabreg (z, do, typedoc, korpus) (" ", "", "") Wstaw do towarów (faktura, nazwa, cena, jakości) wartości (": num", " ", "", " ")

Wyjaśniając powyższy przykład, należy zauważyć, że korzystanie z par tagów i jest formalne, ponieważ Po parsowaniu przynajmniej jeden węzeł powinien być obecny w wynikowym dokumencie XML. Metoda Resultadok.Text przypisuje wartość tekstową uzyskaną podczas analizy Dokumentu XML Dokumentu. W tym przypadku wartość jest wszystkim, że pary tagów są oprawione i tj. Utworzyliśmy żądanie SQL.

Inną cechą pisania programu należy zauważyć możliwość korzystania z parametru SQL : Num. Korzystanie z parametru umożliwia uproszczenie tekstu szablonu XSL. Definicja Wartość odpowiednich elementów węzłów Dokument XML określa się początkowo wybierając nazwę odpowiedniego węzła, na przykład:

Krótko o XSL.

Skrót XSL pochodzi z rozszerzalnego języka stylowego w stylu formatowania stylu (dane XML). Ponieważ jest jasne z rozszerzalnego języka stylistego (XSL) nagłówek (XSL) służy do formatowania danych XML. Według definicji W3C XSL składa się z dwóch części:

  • XSLT - transformacja XSL. Język używany do konwertowania lub formatowania (przekształcić) Dokumenty XML. Tak więc, używając XSLT, możemy uzyskać różne sekcje wielu formularzy danych i prezentacji danych.
  • Elementy formatowania. Elementy te obejmują wszystkie elementy projektu danych typograficznych, po ich przetworzeniu za pomocą XSL. Używany tylko do tworzenia stron HTML.

Korzystając z XSLT, możemy wybrać dane z potrzebnego pliku XML i zorganizować je w formularzu, aby zapewnić użytkownikowi. Na przykład w naszym przypadku przekształciliśmy dane XML jako zapytanie SQL. Klasyczna aplikacja XSL zazwyczaj formatuje dane jako strony HTML lub rzadkie reprezentacja w postaci plików RTF.

Plik XSL opisuje szablon (szablon), zgodnie z którym zostanie wykonana konwersja danych XML. Wracając do szablonów XSL, następujące elementy można przydzielić w XSLT (dyrektywy):

Dyrektywa XSL. opis
xSL: Zastosuj szablony Dyrektywa, wskazując zastosowanie odpowiednich substancji szablonów Wybierz \u003d "Nazwa szablonu"
xSL: Atrybut. tworzy drzewo atrybutów i dodaje go do elementu wyjściowego, nazwę \u003d "Nazwa atrybutu" parametr, przestrzeni nazw - URI na przestrzeni nazw (przedrostek przestrzeni nazw)
xSL: Call-szablon powoduje szablon, nazwę atrybutu \u003d "URI na szablonie"
xSL: Wybierz.
xsl: kiedy.
xSL: W przeciwnym razie.
dokonywanie wyboru według stanu XSL: Kiedy Expr \u003d "Wyrażenie obliczające na skrypcie",
język \u003d "Nazwa języka"
test \u003d "obliczone wyrażenie"
xSL: Komentarz generuje komentarz na dokumencie wyjściowym
xSL: Kopiuj.
xsl: kopia
kopiuje bieżący węzeł w źródle wyjściowego lub wstawia fragment dokumentu do węzła, w którym przypisuje atrybut select \u003d "Nazwa węzła źródłowego"
xSL: Element. tworzy element wyjściowy według nazwy, nazwę atrybutu \u003d "Nazwa elementu", przestrzeń nazw \u003d "URI odniesienie do przestrzeni nazw"
xSL: Dla każdego ponownie zastosuj szablon do wszystkich węzłów Lista węzłów, wybierz Atrybut Ustawia listę węzłów.
xsl: jeśli. kontrola warunków jest ustawiana przez atrybut testowy jako wyrażenie
xSL: Dołącz zawiera zewnętrzny szablon, atrybut href \u003d "odnośnik URI"
xSL: Wyjście określa wynik wyjściowy, atrybut metody może mieć "XML", "HTML" lub "tekst"
xSL: Param. określa wartość parametru, nazwę \u003d "Nazwa parametrów", wybierz \u003d "Wartość"
xSL: instrukcja przetwarzania tworzy instrukcje dotyczące przetwarzania, nazwy atrybutu \u003d "Instrukcje procesu nazwy"
xSL: Sortuj. sortuje wiele węzłów, atrybuty Wybierz \u003d "Nazwa węzła", typ Data \u003d typ danych ("Tekst" | "Numer" | QNAME), zamówienie \u003d kierunek sortowania ("rosnące" | "malejąco")
xSL: Arkusz stylów. definiuje dokument szablonu XSL, jest elementem korzeniowym dla XSLT
xSL: Szablon. określa szablon XSL, nazwę \u003d "atrybut prefiksu URI do nazwy szablonu", Mecz \u003d "Uwaga do węzła, do którego stosuje się szablon"
xSL: Tekst. generuje tekst do strumienia wyjściowego, wyłączanie-wyjście-escaping \u003d "tak" lub "nie" atrybut wskazuje możliwość generowania znaków ESC
xSL: Wartość wstawia wartość wybranego węzła jako tekstu, select \u003d "Wskaźnik do węzła" atrybutu, z którego wartość jest pobierana
xSL: Zmienna określa wartość granic zmiennych, atrybut nazwy \u003d "nazwa zmiennej", wybierz \u003d "Oblicz wartość zmiennej"
xSL: With-param dotyczy parametru do szablonu, atrybut nazwy \u003d "Nazwa parametru", wybierz \u003d Wyrażenie, aby obliczyć bieżący kontekst, wartość domyślna "."

Wniosek

Podsumowując, należy zauważyć, że przy użyciu standardowego parsera XML msxml.dll.nie jest jedynym sposobem analizowania i tworzenia dokumentów XML. Na przykład, aby utworzyć dokumenty XML, aby skutecznie używać komponentów Tpageproduser.i TtableProduser.. Ale ten artykuł podkreśla tylko szerokość i możliwość stosowania modelu Dom w praktyce.

Autor będzie bardzo wdzięczny za informacje zwrotne na temat znaczenia tematu, ogólnej treści, stylu prezentacji, a także wszystkie inne komentarze, które pomogą w dalszej poprawie jakości pisania zbierania artykułów i uwolnienia książek, które obejmuje Przedmiot praktycznej strony wykorzystania dokumentów XML w handlu elektronicznym. Aby uzyskać więcej informacji na temat praktycznej strony zastosowania dokumentów elektronicznych, można nauczyć się na stronie www.edocs.al.ru na stronie autora, planowany jest również umieścić teksty źródłowe i przykłady.

Wielu programistów Delphi, Ustawienia zapisywania są powiązane Ini. Pliki w ich programach. Korzystanie z tej metody, w mniej poważnych projektach, konieczne jest uniknięcie, ponieważ ogranicza się w elastyczności, co zapobiega dalszej ekspansji programu. Warto stwierdzić, że takie podejście jest dość popularne, ze względu na łatwość użytkowania i obecność wbudowanych środków na środowisko programistyczne.

Jednak idealna opcja przechowywania ustawień programu są strukturalne Xml. Akta. Ich zaletą jest to, że liczba parametrów nie może być ustalona. Aby lepiej to zrozumieć, rozważ konkretny przykład.

W programie USear, po kliknięciu na nagrywanie pojawi się menu kontekstowe, które wyświetla listę punktów. Te elementy są poleceniami, które z kolei są pobierane z pliku ustawień. W przypadku przechowywania ustawień Ini. Plik, program może zapisać i załadować pewną liczbę poleceń, na przykład 10 lub 50. Gdy tylko potrzebujesz ważniejsze, musisz przepisać kod, a odpowiednio, ponownie skompilować go.


Stosując podejście za pomocą Xml. Pliki, będziemy mieli możliwość dynamicznego pobierania wszystkich parametrów sekcji. Wszystkim tym plik konfiguracyjny stanie się bardziej elegancki, bez nadmiernej numeracji parametrów. Jednak standardowe narzędzia do pracy Xml. Delphi ma wiele wad, więc zalecam korzystanie z standardowej biblioteki Msxml.. Zwykle jest to domyślna część systemów systemów Windows.


Do podłączenia Msxml.Musimy utworzyć plik interfejsu z listą wszystkich funkcji, importując go z serwera COM. Jak zaimportować interfejs, jest napisany za mało szczegółowych artykułów, sugeruję pobranie pliku Msxml2_tlb.pas. Już gotowy do użycia. Po pobraniu pliku umieść go obok swojego projektu lub rzuć do folderu Delphi lib Lib. W ten sposób wszystkie utworzone programy będą mogły używać modułu. Msxml., Wystarczy dodać MSXML2_TLB do zastosowań.

Dla jasności rozważ poniższy przykład aplikacji tej biblioteki:

Procedura LoadData; Var xmldoc: Domdocument; Root: Ixmldomelement; Rozpocznij XMLDOC: \u003d Codomdocument.Create; Xmldoc.load ("setteins.xml"); Root: \u003d xmldoc.documentElement; Showmessage ("rozmiar / szerokość"). Tekst); Root: \u003d zero; XMLDOC: \u003d Nil; koniec;

Po pierwsze, powstaje instancja klasy Domdocument, po czym zawartość pliku ustawień.xml jest załadowana do pamięci. Jak zgodnie ze standardem Xml. Plik musi zawierać znacznik korzenia (w tym przypadku config.), musimy go za pomocą funkcji Dokumentacja. Następnie zawartość treści między tagami który z kolei są między tagami . Znacznie z pliku Ustawienia.xml, nasz metodę wdroży tekst w Cambox "100px".

500px. 100px.

Tutaj zastosowano metodę SelectSingLende, która bierze ciąg jako parametr.

Zadania rozwiązywania zamówień na Delphi
Delphi to drugi język programowania, z którym uczniowie najczęściej zapoznają się w procesie uczenia się. Jest to początek programowania obiektów uczenia się. Ja, jako student, wykonany dla siebie wniosek, że nie ma łatwiejszego sposobu opanowania języka niż napisanie kalkulatora. Nawet jeśli zdasz sobie sprawę z podstawowej funkcji dodawania dwóch liczb, jest już na dużym świetle.

Codegaear, Delphi 7, Lazarus jest różnymi kompilatami, programy, które zostaną przeniesione do kodu maszyny napisanego przez Ciebie, konwertując go w Zoliki i jeden. Są to wszystkie programy tworzenia programów, a nie oddzielne języki programowania. Kompilatory te korzystają z języka Pascal Programowania języka u podstaw języka Delphi, który jest podobny do składni podobnej do zwykłego Pascala, ale jest funkcjonalny znacznie inny.

Co jest składni języka programowania?

Jest to format pisania różnych operatorów. Na przykład cykl "dla" na Pascale ma następujący format: "Dla n: \u003d 1 do k do" itp.

W języku programowania C ++ ten sam cykl jest napisany nieco inaczej: dla (n \u003d 1; n Piszemy kalkulatora

To da ci zrozumieć, w jaki sposób obiekty z kodem programu interakcji, co jest "zmienne", jak działa funkcje matematyczne. Wszystkie programowanie w każdym przypadku będą obliczaniem. Gra jest również programem, który stale uważa coś, działa z liczbami i funkcjami numerycznymi. Programowanie jest nierozłączne od matematyki.

Użyamy do napisania środowiska rozwoju Lazarusa. Jego funkcjonalność nie jest tak bogata jak, powiedzmy, CodeGear, ale jest bezpłatny dostęp i jest przeznaczony do nauki.

Otwarcie środowiska programistycznego, widzimy kształt i panel elementów. Oto forma.

Oto panel elementu.

Pierwszą rzeczą, którą zrobimy, jest dodanie trzech elementów, które należy wdrożyć opcję Dwóch liczb. Potrzebujemy: "Tedit" w liczbie trzech sztuk i "Tbutton". Na poniższym rysunku są wyświetlane w panelu strzałki. Kliknij je raz, a następnie raz w kształcie i pojawiają się na nim.

Są to pola tekstowe dla wejścia i zwykłego przycisku. Spotkasz te elementy za pomocą prawie każdego programu Windows. Spójrz.


Teraz wyczyść te napisy. Kliknij kartę Widok. I kliknij "Inspektor obiektów. To okno pojawi się.

Kliknij raz na naszym elemencie "przycisk" na formularzu i zmień wartość "podpis" w oknie Inspektora do dowolnego innego. Na przykład na słowie "OK". Kliknij Enter. Widzimy na formularzu, ponieważ element zmienił nazwę.

Zrób to z edycją, po prostu nie zmień nazwy, ale uczynimy je bez żadnych treści. Podświetlamy je z kolei i oczyścimy wartość tekstową inspektora. Nie zapomnij nacisnąć Enter.

Zgodnie z wynikiem nasza forma wygląda tak.


Teraz, gdy nasz kalkulator uzyskał, musisz zarejestrować niezbędny kod oprogramowania do procedury naszego przycisku. Kliknij dwukrotnie element przycisku i otwórz edytor źródła.

Widzieć? Procedura button1Click. Jest to procedura odpowiedzialna za to, co się dzieje, gdy raz klikamy przycisk. Należy wystąpić następujące czynności: Program jest potrzebny w trzecim edycji, aby przynieść nam sumę liczb wprowadzonych w pierwszych dwóch polach. Piszemy kod.

Takie proste 5 linii kodu musimy napisać. Komentarze i wyjaśnienia są widoczne na powyższym rysunku. Po tym kliknij ten przycisk.

Kompilacja naszego projektu zostanie skompilowana. Zostanie on zmontowany w programie. Wprowadzamy liczby w pierwszych dwóch polach, kliknij przycisk i uzyskaj wartość kwoty.

Wniosek

Możesz kliknąć przycisk "Plik", a następnie "Zapisz wszystko", wybierz folder, aby zapisać, a otrzymasz program pełnoprawny, którego początek można wykonać z pulpitu. Teraz spróbuj wymienić na własną rękę, musisz przepisać w tym kodzie, aby program był podzielony przez dwie liczby i nie złożone. Wskazówka: Musisz zmienić typ danych. Poniższy film pokazuje podobny przykład, ale w Delphi 7, a nie Lazarus.

Witamy! Ten blog poświęcony jest Internetowi i komputerom, a dokładniej, byli ich dedykowani.

Prawdopodobnie natychmiast widać, że wiele lat nie pojawiło się na stronie przez wiele lat. Tak, to jest los większości blogów. Gdy ten projekt był ambitnym przedsięwzięciem, a autorem, jak w wielu innych, którzy napisali wtedy, były na dużą skalę planów stać się jednym z najlepszych rosyjskich blogerów. Cóż, jeśli teraz spojrzysz, a następnie z tych blogów, które zostały stworzone jednocześnie z moim, najbardziej rozpuszcza się w wieczności. A ja błagałem brakującego blogu czasowego. Więc tak, nie jest już aktualizowany. Chociaż kiedyś wygrałem na tej stronie w konkursie Blog 2011.

Miałem nawet pomysł, aby usunąć to wszystko, ale potem zmieniłem stare materiały i zdałem sobie sprawę, że nadal mogą być przydatne dla czytelników. Tak, niektóre artykuły są przestarzałe (jeśli mam wystarczającą siłę, otrzymają odpowiednie znaki), ale na przykład witryna może być przydatna dla początkujących - tutaj możesz przeczytać o podstawowych koncepcjach Internetu, nauczyć się dostosować Internet, okna lub nawet zdecyduj się przejść do Linux. Więc spójrz na pozycje i wybierz ten, który jest odpowiedni dla Ciebie.

W końcu mam nadzieję, że jest to coś więcej niż blog, ale prawdziwy przewodnik Internet. Witryna znajduje się w trybie katalogów, w której wszystkie dostępne artykuły są strukturalne według kategorii. A kto może wie, że pojawiają się nowe artykuły wysokiej jakości.

Sander.

Picodi.ru to portal zniżkowy z kuponów międzynarodowych, polskiego eksperta w oszczędzaniu i tanich zakupach. Polacy uważa się za jedną z najbardziej ekonomicznych narodów na świecie, dlatego nie jest zaskakujące, że ten typ projektu wzrósł z polskiego startup Kodyrabatowe.pl. Co może być przydatne dla tego portalu zwykłym użytkownikiem Internetu w Rosji?

Nowoczesne telefony z Androidem to więcej niż telefony. Przyzwyczaisz się do zestawu zainstalowanych programów do historii połączeń i wiadomości tekstowych, kolekcjach zdjęć i wiele. Ale czas idzie, a w pełni ułożone urządzenie zaczyna spowolnić, błąd lub po prostu traci prezentny widok z powodu odpryskiwania na obudowy lub zarysowania na ekranie. Istnieje kwestia wyboru nowego telefonu i zmieniając telefon z Androidem. A jeśli kwestia wyboru, będziemy teraz ominąć partię, a następnie "ruch" do nowego telefonu pozostaje poważnym problemem - absolutnie nie chcę rozpocząć wszystkich danych od podstaw. Tutaj porozmawiamy o tym dzisiaj.

Większość czytelników tego bloga, najprawdopodobniej nigdy nie stoi przed wersjami kontroli wersji i nie pojawi się w najbliższej przyszłości. I przepraszam. Ten wyjątkowo przyjazny dla użytkownika wynalazek jest szeroko stosowany przez programistów, ale moim zdaniem może być bardzo przydatne i tym, którzy aktywnie pracują z tekstami. Ale prawdopodobnie nie ma teraz systemu kontroli wersji, który byłoby łatwe do rozpoczęcia korzystania z pracy "Office" (Microsoft Office) pracy. Niemniej jednak myślę, że materiał przedstawiony w artykule może być interesujący dla wszystkich czytelników.

Jeśli myślałeś o tym, jak z telewizji oglądają filmy w sieci i dostęp do Internetu, ten artykuł jest dla Ciebie. Nie, wiem, że niektóre telewizory mają funkcjonalność Smart TV, ale nigdy nie widziałem, że działa dobrze. Najwyraźniej dlatego Google wykazał się ostatnio całkowicie oszałamiające urządzenie, natychmiast zakończył się uczuciem. Mówimy o Media Streamer ChromeCast (Chromkast), bardziej doskonałą i niedrogą wersję ubiegłorocznego Player Player Nexus Q.

Dongle Chromkast, których wymiary nie przekraczają 2 cali, łączą się z portem HDMI telewizora i umożliwia korzystanie z oglądania treści internetowych strumieniowych. Aby sterować Streamer, możesz użyć dowolnego urządzenia (tablet, komputer, smartfon) na podstawie platformy operacyjnej IOS, Windows, Android lub Mac OS.

Ten artykuł jest poświęcony urządzeniu pamięci systemowej Android, problemy, które mogą pojawić się z powodu jego braku i sposobu ich rozwiązania. Sam nie miałem tak dawno temu, że mój telefon z Androidem zaczął regularnie wydawać wiadomości o niedoborze pamięci podczas próby ustanowienia konkretnego zastosowania. To, co było dla mnie bardzo dziwne, mimo że w opisie na rynku powinno być około 16 GB, a ja również zwiększyłem tę wolumin za pomocą dodatkowej karty pamięci. Jednak problem był i musiałem zrobić dokładnie majsterker, zanim znalazłem odpowiednie rozwiązanie, które nie wymaga odbioru dostępu korzenia ani pełnego odzyskania telefonu do stanu fabrycznego.

Język XML jest coraz częściej używany do przechowywania informacji, udostępniania go między aplikacjami a węzłami internetowymi. W wielu zastosowaniach ten język jest używany jako podstawowy magazynowanie danych w innych - do eksportowania i importowania danych XML. Wynika z tego, że nadszedł czas, aby deweloperzy myśleli o tym, jak korzystać z danych XML we własnych zastosowaniach.

W tym artykule rozważymy model obiektów dokumentów XML (DOM) i jego wdrożenie Microsoft - Microsoft XML DOM.

XML DOM to model obiektu, który zapewnia obiekty programisty do pobrania i przetwarzania plików XML. Model obiektu składa się z następujących głównych obiektów: XMldomdocument, XMldomnodelist, XMldomnode, XMldomnodonNodemap i XMldompsOrror. Każdy z tych obiektów (z wyjątkiem XMLDompsarseError) zawiera właściwości i metody, aby uzyskać informacje o obiekcie, manipulują wartościami i strukturą obiektu, a także poruszać się wzdłuż struktury dokumentu XML.

Rozważ główne obiekty XML DOM i podaj kilka przykładów ich stosowania w Borland Delphi.

Korzystanie z XML DOM w Borland Delphi

Aby korzystać z aplikacji Microsoft XML DOM w aplikacjach DELPHI, należy podłączyć odpowiednią bibliotekę typu do projektu. Aby to zrobić, wykonujemy projekt | Importuj bibliotekę Typ oraz w panelu dialogowym Biblioteka typu Import, wybierz Microsoft XML Version 2.0 Library (wersja 2.0), która zwykle znajduje się w pliku systemu Windows \\ msxml.dll

Po naciśnięciu przycisku Utwórz urządzenie moduł interfejsu MSXML_TLB zostanie utworzony, co pozwoli nam korzystać z obiektów XML DOM: Domdocument, XMDOCUMENT, XMLHTTPREQUEST i wiele innych zaimplementowanych w bibliotece MSXML.dll. Link do modułu MSXML_TLB musi być wymieniony na liście zastosowań.

Urządzenie XML DOM.

Model obiektu dokumentu reprezentuje dokument XML w postaci struktury drzewa składającej się z gałęzi. XML DOM Software Interfejsy umożliwiają aplikacje do nawigacji po drzewie dokumentów i manipulują jego gałęzie. Każda gałąź może mieć określony typ (domnodetype), zgodnie z którym są określone rodzic i spółki zależne. W większości dokumentów XML można znaleźć oddziały elementu, atrybutu i oddziałów tekstowych. Atrybuty (atrybut) są specjalnym rodzajem oddziału i nie są oddziałami zależnymi. Do zarządzania atrybutem używany są specjalne metody dostarczane przez obiekty XML DOM.

Oprócz wdrażania interfejsów Zalecane interfejsy WWW Consortium (W3C) Microsoft XML DOM zawiera metody obsługujące XSL, wzory XSL, przestrzeni nazw i typów danych. Na przykład Metoda SelectNodes umożliwia korzystanie z składni szablonów XSL (składnia XSL Pattern Składnia), aby wyszukać oddziały w określonym kontekście, a metoda transformNode obsługuje użycie XSL do wykonania transformacji.

Test Dokument XML.

Jako przykład dokumentu XML należy przyjmować katalog CD-ROM MUSIC, który ma następującą strukturę:

Imperium Burlesque. Bob Dylan. USA. Columbia. 10.90 1985 Ukryj swoje serce. Bonnie Tylor. UK. Rekordy CBS. 9.90 1988 ... Uwolnij moje serce. Joe cocker. USA. EMI. 8.20 1987

Teraz jesteśmy gotowi rozpocząć rozważanie modelu obiektu XML DOM, znajomość zacznie się od obiektu XMLDOMdocument.

XML Document - XMLDOMDocument Obiekt

Praca z dokumentem XML rozpoczyna się od pobrania. Aby to zrobić, używamy metody ładowania, która ma tylko jeden parametr wskazujący adres URL pobranego dokumentu. Podczas pobierania plików z dysku lokalnego określono tylko pełną nazwę pliku (Plik: /// Protokol w tym przypadku można pominąć). Jeśli dokument XML jest przechowywany jako łańcuch, metoda LOADXML należy użyć do pobrania takiego dokumentu.

Aby kontrolować metodę pobierania dokumentu (synchroniczne lub asynchroniczne), stosuje się właściwość asynchronizacji. Domyślnie ta właściwość jest prawdziwa, wskazując, że dokument jest ładowany asynchronicznie, a kontrola jest zwracana do aplikacji, nawet dopóki dokument zostanie całkowicie załadowany. W przeciwnym razie dokument jest ładowany synchronicznie, a następnie musisz sprawdzić wartość nieruchomości ReadyState, aby dowiedzieć się, załadowany dokument lub nie. Możesz także utworzyć obsługę zdarzeń zdarzeń OnreadyStateChange, który otrzyma kontrolę podczas zmiany wartości nieruchomości Readystate.

Poniżej przedstawiono, jak pobrać dokument XML za pomocą metody obciążenia:

Użytkownicy ... MSXML_TLB ... Procedura TFORM1.Button1Click (Nadawca: Połącz); Var xmldoc: ixmldomdocument; Rozpocznij XMLDOC: \u003d Codomdocument.Create; Xmldoc.async: \u003d false; Xmldoc.load ('C: Data \\ Data.xml'); // // Oto kod, który manipuluje // XML Dokument i jego oddziały // XMLDOC: \u003d Nil; koniec;

Po załadowaniu dokumentu możemy odnosić się do jego właściwości. W ten sposób właściwość Nodename będzie zawierać wartość #document, właściwość NodeTyPestring jest wartością dokumentu, właściwość URL jest plikiem: /// C: /data/data.xml.

Przetwarzanie jest błędem

Szczególnie interesujące są właściwości związane z przetwarzaniem dokumentu, gdy jest załadowany. W ten sposób właściwość ParseError zwraca obiekt XMLDompsarororor zawierający informacje o błędzie, które wystąpiły podczas procesu przetwarzania.

Aby napisać obsługę błędu, możesz dodać następujący kod:

Var xmlerror: ixmldompsarror; ... XMLDOC.Load ('C: Data \\ Data.xml'); XMLERROR: \u003d XMLDOC.ParSeError; Jeśli xmlerror.errorcode.<> 0 Następnie // // Tutaj przetwarzamy błąd // Else Memo1.lines.add (xmldoc.xml); ... XMLDOC: \u003d Nil;

Aby dowiedzieć się, które informacje są zwracane w przypadku błędu, zmień następujący element katalogu:

Imperium Burlesque. Bob Dylan. USA. Columbia. 10.90 1985

usuwanie elementu zamykającego W drugiej linii:</p><p> <CD> <TITLE>Imperium Burlesque. <ARTIST>Bob Dylan.</ARTIST> <COUNTRY>USA.</COUNTRY> <COMPANY>Columbia.</COMPANY> <PRICE>10.90</PRICE> <YEAR>1985</YEAR> </CD> </p><p>Teraz napisz kod, który zwraca właściwości obiektu XMLDompsarororor:</p><p>XMLERROR: \u003d XMLDOC.ParSeError; Jeśli xmlerror.errorcode.<> 0 Następnie z XMLerror, memo1.lines rozpocznij Dodaj ("Plik: '+ URL); Dodaj ("Kod: '+ Inttostr (ErrorCode)); Dodaj ("Błąd:" + powód); Dodaj ('Tekst:' + SRCTEXT); Dodaj ("wiersz:" +ttostr (linia)); Dodaj ("Pozycja:" + Inttostr (LinePos)); Else Else Memo1.lines.add (xmldoc.xml); Koniec;</p><p>i wypełnij naszą aplikację. W rezultacie otrzymujemy następujące informacje o błędach.</p> <p>Jak widać z powyższego przykładu, informacje zwracane przez obiekt XMLDompsarorror wystarczy, aby zlokalizować błąd i zrozumieć powód jego wystąpienia.</p> <p>Teraz przywróć element zamykający <TITLE> W naszym dokumencie i kontynuuj dyskusję XML DOM.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Dostęp do drzewa dokumentów</h2> <p>Aby uzyskać dostęp do drzewa dokumentu, możesz uzyskać element korzeniowy, a następnie przejść przez swoje spółki zależne, lub znajdź pewną specyficzną gałęzi. W pierwszym przypadku otrzymujemy element korzeniowy przez właściwość Dokumentowania, co zwraca obiekt typu XMldomnode. Poniżej przedstawiono, jak używać właściwości dokumentacji w celu uzyskania zawartości każdego elementu podrzędnego:</p><p>Var węzeł: ixmldomnode; Root: Ixmldomelement; I: Integer; ... root: \u003d xmldoc.documentElement; Dla I: \u003d 0 do roota.childnodes.length-1 do rozpoczęcia węzła: \u003d root.Childnodes.Item [i]; Memo1.lines.add (węzeł.Text); Koniec;</p><p>W naszym dokumencie XML otrzymujemy następujący tekst.</p> <p>Jeśli jesteśmy zainteresowani jakimś konkretnym poziomem oddziału lub poziomem oddziału poniżej pierwszej jednostki zależnej, możemy użyć metody Nodefromid lub metody GetElementBowname obiektu XMLDOMDocument.</p> <p>Metoda NodeFromid wymaga określenia unikalnego identyfikatora zdefiniowanego w schemacie XML lub definicji typu dokumentu (DTD) i zwraca oddział z tym identyfikatorem.</p> <p>Metoda GetElementByTagname wymaga wskazania ciągów z określonym elementem (znacznikiem) i zwraca wszystkie gałęzie z tym elementem. Poniżej przedstawiono, jak korzystać z tej metody, aby znaleźć wszystkich wykonawców w naszym katalogu CD-ROM:</p><p>Węzły: Ixmldomnodelist; Węzeł: Ixmldomnode; ... węzły: \u003d xmldoc.getelementsbyTagname ("artysta"); Dla I: \u003d 0 do węzłów.length-1 do rozpoczęcia węzła: \u003d węzły.Item [i]; Memo1.lines.add (węzeł.Text); Koniec;</p><p>W naszym dokumencie XML otrzymamy następujący tekst.</p> <p>Zauważ, że metoda XMLDOMNode SelectNodes zapewnia bardziej elastyczny sposób na dostęp do gałęzi dokumentu. Ale o tym jest nieco niższy.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Oddział dokumentu - obiekt xmldomnode</h2> <p>Obiekt XMldomnode jest oddział dokumentu. Spotkaliśmy już ten obiekt, gdy uzyskano element główny dokumentu:</p><p>Root: \u003d xmldoc.documentElement;</p><p>Aby uzyskać informacje na temat oddziału dokumentu XML, można użyć właściwości obiektu XMLDOMNode (Tabela 1).</p> <p>Aby uzyskać dostęp do danych przechowywanych w oddziale, zazwyczaj używają właściwości Nodevalue (dostępnych do atrybutów, oddziałów tekstowych, komentarzy, instrukcje dotyczące przetwarzania i sekcji CDATA) lub właściwości tekstu, która zwraca zawartość tekstu w oddziale lub właściwość NodeTyPedValue. Ten ostatni może być jednak używany tylko do gałęzi z elementami wpisanych.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h3> Poruszając się na drzewie dokumentu</h3> <p>Obiekt XMldomnode zapewnia wiele sposobów poruszania się przez drzewo dokumentów. Na przykład, aby uzyskać dostęp do oddziału nadrzędnego, stosuje się właściwość ParentNode, dostęp do oddziałów dziecięcych jest przeprowadzany przez właściwości dziecięce (Typ XMLDCHild), Firstchild i LastChild (typ XMldomnode) itp. Właściwość Ownerdocument zwraca obiekt XMLDocument, który identyfikuje sam dokument XML. Powyższe właściwości ułatwiają przemieszczanie się przez drzewo dokumentów.</p> <p>Teraz pokonam wszystkie gałęzie dokumentu XML:</p><p>Root: \u003d xmldoc.documentElement; Dla I: \u003d 0 do roota.childnodes.length-1 do rozpoczęcia węzła: \u003d root.Childnodes.Item [i]; Jeśli węzeł.Haschildnodes następnie getchilds (węzeł, 0); Koniec;</p><p>Jak wspomniano powyżej, obiekt SelectNodes XMldomnode zapewnia bardziej elastyczny sposób dostępu do gałęzi dokumentu. Ponadto istnieje metoda SelectSingLende, która zwraca tylko pierwszy oddział dokumentu. Oba te metody umożliwiają określenie szablonów XSL, aby wyszukać gałęzie.</p> <p>Rozważ proces korzystania z metody SelectNodes, aby wyodrębnić wszystkie gałęzie, które mają oddział CD i inflację.</p><p>Root: \u003d xmldoc.documentElement; Węzły: \u003d root.selectNodes ("CD / Cena");</p><p>Kolekcja węzłów zostaną umieszczone całe gałęzie CD CD PITTER. Dyskusja szablonów XSL wróci trochę później.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h3> Manipulacja przez gałęzie</h3> <p>W przypadku manipulacji spółek zależnych możemy użyć metod obiektu XMldomnode (Tabela 2).</p> <p>Aby całkowicie usunąć rekord pierwszego dysku, musisz wykonać następujący kod:</p><p>Var xmldoc: ixmldomdocument; Root: ixmldomnode; Węzeł: Ixmldomnode; XMLDOC: \u003d Codomdocument.Create; Xmldoc.async: \u003d false; Xmldoc.load ('C: Data \\ Data.xml'); // Uzyskaj root elementu korzenia: \u003d xmldoc.documentElement; Węzeł: \u003d root; // Usuń pierwszy węzeł spółki zależnej.Removechild (węzeł.Firstchild);</p><p>Należy pamiętać, że w tym przykładzie usuwamy pierwszą spółkę zależną. Jak usunąć pierwszy element pierwszej spółki zależnej, jest pokazany poniżej:</p><p>Var xmldoc: ixmldomdocument; Root: ixmldomnode; Węzeł: Ixmldomnode; XMLDOC: \u003d Codomdocument.Create; Xmldoc.async: \u003d false; Xmldoc.load ('C: Data \\ Data.xml'); // Uzyskaj root elementu korzenia: \u003d xmldoc.documentElement; // i pierwszy węzeł spółki zależnej: \u003d root.firstochild; // Usuń pierwszy węzeł spółki zależnej.Removechild (węzeł.Firstchild);</p><p>W powyższym przykładzie nie usunęliśmy pierwszej gałęzi. <CD>…</CD>i pierwszy element oddziału - <TITLE>….

Teraz dodaj nowy oddział. Poniżej znajduje się kod pokazujący, jak dodać nowy rekord CD-ROM:

Var Newnode: ixmldomnode; Dziecko: Ixmldomnode; ... // Utwórz nowy oddział - Newnode: \u003d xmldoc.createNode (1, "CD", ''); // Dodaj element. Dziecko: \u003d xmldoc.createNode (1, "tytuł", ""); // Dodaj element newnode.appendChild (Child); // i ustaw jego wartość dziecka. TEXT: \u003d 'Pink Floyd'; // Dodaj element. <ARTIST> Dziecko: \u003d xmldoc.createNode (1, "artysta", ""); // Dodaj element newnode.appendChild (Child); // i ustal jego wartość dziecka. TEXT: \u003d 'Division Bell'; // Dodaj element. <COUNTRY> Dziecko: \u003d xmldoc.createNode (1, "country", ''); // Dodaj element newnode.appendChild (Child); // i ustaw swoją wartość dziecka. TEXT: \u003d 'UK'; // Dodaj element. <COMPANY> Dziecko: \u003d xmldoc.createNode (1, "firma", ""); // Dodaj element newnode.appendChild (Child); // i ustaw jego wartość dziecka. TEXT: \u003d 'EMI Records Ltd.'; // Dodaj element. <PRICE>Dziecko: \u003d xmldoc.CreateNode (1, "cena", ''); // Dodaj element newnode.appendChild (Child); // i ustalić jego wartość dziecka. TEXT: \u003d '11 .99 "; // Dodaj element <YEAR> Dziecko: \u003d xmldoc.createNode (1, "rok", ""); // Dodaj element newnode.appendChild (Child); // i ustal jego wartość dziecka. TEXT: \u003d '1994'; // i dodaj gałąź root.appendChild (Newnode); ...</p><p>Powyższy kod pokazuje następującą sekwencję działań, aby dodać nową oddział:</p> <ul><li>Tworzenie nowej gałęzi przy użyciu CreateNode: <ul><li>tworzenie elementu za pomocą metody CreateNode;</li> <li>dodanie elementu do oddziału metodą AppendChild;</li> <li>ustawianie wartości elementu przez właściwość tekstu;</li> <li>... powtórz dla wszystkich przedmiotów.</li> </ul></li> <li>Dodawanie nowej gałęzi do dokumentu przez AppendChild.</li> </ul><p>Przypomnijmy, że metoda AppendChild dodaje oddział na końcu drzewa. Aby dodać oddział do określonego miejsca drzewa, musisz użyć metody InsertBeFore.</p> <h2> Zestaw gałęzi - obiekt xmldomnodelist</h2> <p>Obiekt XMLNodelist zawiera listę oddziałów, które można zbudować przy użyciu metod SelectNodes lub GetEletySBName, a także otrzymuje się z właściwości dziecięcego.</p> <p>Rozważaliśmy już użycie tego obiektu w przykładzie podanym w sekcji "Przemieszczając się na drzewie dokumentów". Tutaj podajemy również teoretyczne komentarze.</p> <p>Liczba gałęzi na liście można uzyskać jako wartość właściwości o długości. Oddziały mają wskaźniki od 0 do długości-1, a każdy pojedynczy oddział jest dostępny za pośrednictwem elementu tablicy elementu z odpowiednim indeksem.</p> <p>Poruszanie się na liście gałęzi można również przeprowadzić za pomocą metody NextNode zwracając następny oddział na liście lub zero, jeśli bieżący oddział jest tym drugim. Aby powrócić na górę listy, powinieneś zadzwonić do metody resetowania.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Tworzenie i oszczędzanie dokumentów</h2> <p>Spojrzeliśmy więc, jak można dodać oddziały i elementy do istniejących dokumentów XML. Teraz utworzyć dokument XML "w locie". Przede wszystkim przypomnimy, że dokument można załadować nie tylko z adresu URL, ale także z zwykłego ciągu. Poniżej przedstawiono, jak utworzyć element korzeniowy, który można następnie wykorzystać do dynamicznego budowania pozostałych elementów (które już uwzględniliśmy w sekcji "Manipulacja jednostek zależnych"):</p><p>Var xmldoc: ixmldomdocument; Root: ixmldomnode; Węzeł: Ixmldomnode; S: Wyszukiwanie; ... S: \u003d ' <CATALOG></CATALOG>"; XMLDOC: \u003d Codomdocument.Create; Xmldoc.async: \u003d false; Xmldoc.loadxml (y); Root: \u003d xmldoc.documentElement; Węzeł: \u003d xmldoc.createNode (1, "CD", ''); Root.appendChild (węzeł); Memo1.lines.add (xmldoc.xml); ... XMLDOC: \u003d Nil;</p><p>Po zbudowaniu dokumentu XML zapisz go w pliku za pomocą metody Zapisz. Na przykład:</p> <p>Xmldoc.save ('C: Data newcd.xml');</p> <p>Oprócz zapisywania w pliku metoda zapisywania umożliwia zapisanie dokumentu XML w nowym obiekcie XMLDOMDocument. W tym przypadku dokument jest pełny przetwarzanie, a w rezultacie sprawdzanie jego struktury i składni. Poniżej przedstawiono, jak zapisać dokument w innym obiekcie:</p><p>PROCEDURA TFORM1.BUTTON2CLICK (nadawca: Połącz); Var xmldoc2: ixmldomdocument; Rozpocznij XMLDOC2: \u003d Codomdocument.Create; Xmldoc.Save (XMLDOC2); Memo2.lines.add (xmldoc2.xml); ... XMLDOC2: \u003d Nil; koniec;</p><p>Podsumowując, zauważamy, że metoda zapisywania również pozwala zapisać dokument XML do innych obiektów COM obsługujących interfejsy ISTream, ISESTREAM lub IPessstreaminit.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Korzystanie z szablonów XSL.</h2> <p>Omówienie metody XMLDOMNode Obiekt SelectsNodes, wspomnieliśmy, że zapewnia bardziej elastyczny sposób dostępu do gałęzi dokumentu. Elastyczność leży w fakcie, że jako kryterium wyboru gałęzi można określić szablon XSL. Takie szablony zapewniają potężny mechanizm do wyszukiwania informacji w dokumentach XML. Na przykład, aby uzyskać listę wszystkich nazw płyt CD-ROM w naszym katalogu, możesz śledzić następujące zapytanie:</p><p>Aby dowiedzieć się, czy dyski, których wykonawcy są wydawane w Stanach Zjednoczonych, żądanie jest utworzone w następujący sposób:</p><p>Węzły: \u003d root.selectNodes ("CD / artysta");</p><p>Poniżej przedstawiono, jak znaleźć pierwszy dysk w katalogu:</p><p>Węzły: \u003d root.selectNodes ("CD / Title");</p><p>i ostatni:</p><p>Węzły: \u003d root.selectNodes ("CD / Title");</p><p>Aby znaleźć dyski Bob Dylan, możesz wykonać następujące zapytanie:</p><p>Węzły: \u003d root.selectNodes ("CD [$ dowolny $ Arst \u003d" Bob Dylan "] / Title ');</p><p>i uzyskać listę dysków wydanych po 1985 r., Przeprowadzamy następujące zapytanie:</p><p>Węzły: \u003d root.selectNodes ("CD / Title");</p><p>Bardziej szczegółowa dyskusja z składni XSL wymaga oddzielnej publikacji. Aby intrygować czytelników i popchnąć dalsze badania, dam tylko jeden mały przykład możliwego wykorzystania XSL. Przypuśćmy, że musimy przekonwertować nasz katalog do zwykłej tabeli HTML. Korzystając z tradycyjnych sposobów, musimy uporządkować wszystkie gałęzie drzewa i każdy przedmiot uzyskany, aby utworzyć odpowiednie znaczniki <TD>…</TD>.</p> <p>Korzystając z XSL, wystarczy tworzyć szablon (lub stół styl), w którym wskazujemy, co i jak konwertować. Następnie narzucimy ten szablon do naszego katalogu - i gotowy: Przed nami tekst szablonu XSL, który konwertuje katalog w tabeli (aukcję 2).</p> <p>Kod do nakładania szablonu XSL do naszego katalogu wygląda tak:</p><p>PROCEDURA TFORM1.BUTTON2CLICK (nadawca: Połącz); Var xsldoc: ixmldomdocument; Rozpocznij XSLDOC: \u003d Codomdocument.Create; Xsldoc.load ('c: dane \\ Data.xsl'); Memo2.text: \u003d xmldoc.transformnode (XSLDOC); XSLDOC: \u003d Nil; koniec;</p><p>Ukończając naszą dyskusję na XSL, należy powiedzieć, że obecnie ten język jest aktywnie stosowany do transformacji między różnymi dokumentami XML, a także do formatowania dokumentów.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Wniosek</h2> <p>Z całkiem zrozumiałych powodów, w jednym artykule niemożliwe jest rozważenie wszystkich obiektów Microsoft XML DOM i przynieś przykłady ich użycia. Tutaj dotyczyliśmy głównych problemów przy użyciu XML DOM w aplikacjach. W zakładce. 3 przedstawia wszystkie obiekty zaimplementowane w Microsoft XML DOM.</p> <p>Komputerowy 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%2Fpl%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">Dzielić.</span> </a> </div> <div class="bsb-item bsb-telegram bsb-no-count" data-id="telegram"> <a href="https://qipu.ru/pl/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">Dzielić.</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%2Fpl%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">Ćwierkać.</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">Lubić.</span> </a> </div> <div class="bsb-item bsb-fb-messenger bsb-no-count" data-id="fb-messenger"> <a href="https://qipu.ru/pl/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">Lubić.</span> </a> </div> </div> </div> </div> </div> </article> <section class="section-carousel"> <div class="post-carousel"> <h3 class="title-block">Przeczytaj także.</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="Jak Android blokuje niechcianą liczbę" / loading=lazy loading=lazy> <div class="post-more"><a href="https://qipu.ru/pl/mts/kak-zablokirovat-na-smartfone-nezhelatelnye-vhodyashchie-kak-na.html" class="btn-link" data-wpel-link="internal"><span>Czytać</span></a></div> <ul class="post-meta"></ul> <a href="https://qipu.ru/pl/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/pl/mts/kak-zablokirovat-na-smartfone-nezhelatelnye-vhodyashchie-kak-na.html" data-wpel-link="internal">Jak Android blokuje niechcianą liczbę</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="Dlaczego przerwa komórkowa?" / loading=lazy loading=lazy> <div class="post-more"><a href="https://qipu.ru/pl/yota/chasto-propadaet-svyaz-pochemu-obryvaetsya-sotovaya-svyaz.html" class="btn-link" data-wpel-link="internal"><span>Czytać</span></a></div> <ul class="post-meta"></ul> <a href="https://qipu.ru/pl/yota/chasto-propadaet-svyaz-pochemu-obryvaetsya-sotovaya-svyaz.html" data-wpel-link="internal"></a> </div> <h2 class="entry-title"><a href="https://qipu.ru/pl/yota/chasto-propadaet-svyaz-pochemu-obryvaetsya-sotovaya-svyaz.html" data-wpel-link="internal">Dlaczego przerwa komórkowa?</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="Jak całkowicie skonfigurować powiadomienia mobilne" / loading=lazy loading=lazy> <div class="post-more"><a href="https://qipu.ru/pl/tele2/kak-dobavit-uvedomleniya-v-windows-kak-nastroit-mobilnye-uvedomleniya.html" class="btn-link" data-wpel-link="internal"><span>Czytać</span></a></div> <ul class="post-meta"></ul> <a href="https://qipu.ru/pl/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/pl/tele2/kak-dobavit-uvedomleniya-v-windows-kak-nastroit-mobilnye-uvedomleniya.html" data-wpel-link="internal">Jak całkowicie skonfigurować powiadomienia mobilne</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/pl/category/megaphone/">Megafon</a></li> <li><a href="https://qipu.ru/pl/category/mts/">Mts.</a></li> <li><a href="https://qipu.ru/pl/category/beeline/">Linia powietrzna</a></li> <li><a href="https://qipu.ru/pl/category/tele2/">Tele 2.</a></li> </ul> <ul> <li><a href="https://qipu.ru/pl/category/megaphone/">Megafon</a></li> <li><a href="https://qipu.ru/pl/category/mts/">Mts.</a></li> <li><a href="https://qipu.ru/pl/category/beeline/">Linia powietrzna</a></li> <li><a href="https://qipu.ru/pl/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. Asystent osobisty w świecie komunikacji komórkowej <br> .</p> </div> </div> </div> </footer> </div> </div> <a href="https://qipu.ru/pl/#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">Szukaj:</label> <div class="input-group"> <input type="search" value="" name="s" class="search-field form-control" placeholder="Czego szukasz?" required> <span class="input-group-btn"> <button type="submit" class="search-submit btn btn-primary btn-effect"><span>Szukaj.</span><span><i class="icon icon-search"></i></span></button> </span> </div> </form> <p>Wpisz słowa kluczowe.</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>Dzwon.</h3> <div class="wpmchimpa_para"><div style="text-align: center;">Są ci, którzy przeczytali tę wiadomość przed tobą.</div><div style="text-align: center;">Subskrybuj odbieranie artykułów świeżych. <img src="http://" loading=lazy loading=lazy></div></div> <form wpmc_suc wpmc_msg="Спасибо! ПРОВЕРЬТЕ ПОЧТУ" action="" method="post"> <input type="hidden" name="action" value="wPMCHPA_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">Nazwa</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">Nazwisko</span><span class="inputicon"></span><div class="wpmcinfierr" wpmcerr="LNAME"></div></div><div class="wpmchimpa-field wpmchimpa-radio"><div class="wpmchimpa-itemh">Jak chcesz przeczytać dzwonek</div><div class="wpmchimpa-itemb"><label class="wpmchimpa-item"><input type="radio" name="group[f899931c09]" value="a22E2103B4." wpmctype="radio" wpmcfield="f899931c09" wpmcreq="true"><span>Dwa razy dziennie</span></label><label class="wpmchimpa-item"><input type="radio" name="group[f899931c09]" value="4AB55DE31A." wpmctype="radio" wpmcfield="f899931c09" wpmcreq="true"><span>Poranny biuletyn.</span></label><label class="wpmchimpa-item"><input type="radio" name="group[f899931c09]" value="e386C1935E." wpmctype="radio" wpmcfield="f899931c09" wpmcreq="true"><span>Wieczorny biuletyn</span></label></div><div class="wpmcinfierr" wpmcerr="f899931c09"></div></div> <div style="clear:both"></div> <div class="wpmchimpa-tag">Bez spamu</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>