Using XML Document Object Model. Internet guide - all the most interesting online how to create an XML file Delphi

The XML language is increasingly used to store information, sharing it between applications and Web nodes. In many applications, this language is used as a basic storage of data in others - to export and import XML data. It follows from this that it is time for developers to think about how to use XML data in your own applications.

In this article we will look at XML Document Object Model (DOM) and its implementation by Microsoft - Microsoft XML DOM.

The XML DOM is an object model that provides the developer objects to download and process XML files. The object model consists of the following main objects: XMLDOMDocument, Xmldomnodelist, Xmldomnode, XmldomnamedNodeMap and XMLDOMPARSEERROR. Each of these objects (except XMLDOMPARSEERROR) contains properties and methods to obtain information about the object, manipulate the values \u200b\u200band structure of the object, as well as move along the XML document structure.

Consider the main objects of XML DOM and give several examples of their use in Borland Delphi.

Using XML DOM in Borland Delphi

In order to use Microsoft XML DOM in Delphi applications, you must connect the appropriate type library to the project. To do this, we execute the Project | Import Type Library and in the Import Type Library dialog panel, select the Microsoft XML Version 2.0 library (Version 2.0), which is usually located in the Windows \\ System \\ MSXML.DLL file

After pressing the CREATE UNIT button, the MSXML_TLB interface module will be created, which will allow us to use the XML DOM objects: DomDocument, XmlDocument, XmlHttpRequest and a number of others implemented in the MSXML.dll library. The link to the MSXML_TLB module must be listed in the list of Uses.

XML DOM device

Document Object Model represents an XML document in the form of a tree structure consisting of branches. XML DOM software interfaces allow applications to navigate the document tree and manipulate its branches. Each branch can have a specific type (DomnodeType), according to which parent and subsidiaries are determined. In most XML documents, you can find branches of the Element, Attribute and Text branches. Attributes (attribute) are a special type of branch and are not subsidiary branches. Attribute management uses special methodsprovided by XML DOM objects.

In addition to implementing the recommended World Wide Web Consortium (W3C) interfaces, Microsoft XML DOM contains methods that support XSL, XSL Patterns, Namespaces and data types. For example, the SelectNodes method allows you to use XSL templates syntax (XSL Pattern Syntax) to search for branches at a specific context, and the TRANSFORMNODE method supports the use of XSL to perform transformations.

Test XML document

As an example of an XML document, take the catalog of music CD-ROM, which has the following structure:

Empire Burlesque Bob Dylan. USA. Columbia. 10.90 1985 Hide Your Heart. Bonnie Tylor. Uk. CBS Records. 9.90 1988 ... Unchain My Heart. Joe Cocker. USA. EMI 8.20 1987

Now we are ready to start considering the object model XML DOM, familiarity with which will start with the XMLDOMDocument object.

XML document - XMLDOMDocument object

Working with the XML document begins with its download. To do this, we use the LOAD method that has only one parameter indicating the URL of the downloaded document. When downloading files from a local disk, only the full file name is specified (File: /// protocol in this case can be omitted). If the XML document is stored as a string, the LoadXML method should be used to download such a document.

To control the method of downloading a document (synchronous or asynchronous), the ASYNC property is used. By default, this property is true, indicating that the document is loaded asynchronously and control is returned to the application even until the document is fully loaded. Otherwise, the document is loaded synchronously, and then you have to check the value of the READYSTATE property to find out, the document loaded or not. You can also create an OnReadyStateChange event handler that will receive control when changing the value of the READYSTATE property.

Below is shown how to download an XML document using the LOAD method:

Users ... MSXML_TLB ... Procedure TFORM1.Button1Click (Sender: Togject); VAR XMLDOC: IXMLDOMDocument; Begin xmldoc: \u003d codomdocument.create; Xmldoc.async: \u003d false; Xmldoc.load ('C: \\ Data \\ Data.xml'); // // Here is the code that manipulates // XML document and its branches // XMLDOC: \u003d nil; end;

After the document is loaded, we can refer to its properties. Thus, the NodeName property will contain the #Document value, the NodeTypeString property is a Document value, the URL property is the File: /// C: /Data/Data.xml value.

Processing is mistake

Of particular interest are the properties associated with the processing of the document when it is loaded. Thus, the ParsEerror property returns an XMLDOMPARSEERROrror object containing error information that occurred during the processing process.

To write an error handler, you can add the following code:

VAR Xmlerror: IXMLDOMPARSEERROR; ... xmldoc.load ('C: \\ Data \\ Data.xml'); Xmlerror: \u003d xmldoc.parseerror; If xmlerror.errorcode.<> 0 THEN // // Here we process the error // Else Memo1.Lines.add (xmldoc.xml); ... xmldoc: \u003d nil;

To find out which information is returned in case of error, change the following directory item:

Empire Burlesque Bob Dylan. USA. Columbia. 10.90 1985

removing the closing element In the second line:</p><p> <CD> <TITLE>Empire Burlesque <ARTIST>Bob Dylan.</ARTIST> <COUNTRY>USA.</COUNTRY> <COMPANY>Columbia.</COMPANY> <PRICE>10.90</PRICE> <YEAR>1985</YEAR> </CD> </p><p>Now write the code that returns the properties of the XMLDOMPARSEERROrror object:</p><p>Xmlerror: \u003d xmldoc.parseerror; If xmlerror.errorcode.<> 0 THEN WITH XMLERROR, MEMO1.LINES DO BEGIN Add ('file:' + url); Add ('Code:' + INTTOSTR (ErrorCode)); Add ('Error:' + Reason); Add ('Text:' + SRCTEXT); Add ('Row:' + inttostr (line)); Add ('Position:' + INTTOSTR (LINEPOS)); End else memo1.lines.add (xmldoc.xml); End;</p><p>and fulfill our application. As a result, we obtain the following error information.</p> <p>As can be seen from the above example, the information returned by the XMLDomparseerror object is enough to localize the error and understand the reason for its occurrence.</p> <p>Now restore the closing element <TITLE> In our document and continue the discussion of XML DOM.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Access to the document tree</h2> <p>To access the document tree, you can either get the root element and then go through its subsidiaries, or find some specific branch. In the first case, we get the root element through the DocumentElement property, which returns an object of type XMLDOMNODE. Below is shown how to use the DocumentElement property in order to obtain the contents of each child element:</p><p>VAR NODE: ixmldomnode; Root: ixmldomelement; I: integer; ... root: \u003d xmldoc.documentElement; For i: \u003d 0 to root.childnodes.length-1 do begin node: \u003d root.childnodes.Item [i]; Memo1.Lines.add (Node.Text); End;</p><p>For our XML document, we get the following text.</p> <p>If we are interested in some kind of specific branch or branch level below the first subsidiary, we can use either the NodeFromid method or the GeTElementByTagName method of the XMLDOMDocument object.</p> <p>The nodefromid method requires specifying a unique identifier defined in XML Schema or Document Type Definition (DTD) and returns a branch with this identifier.</p> <p>The GetElementByTagName method requires an indication of a string with a specific element (tag) and returns all branches with this item. Below is shown how to use this method to find all performers in our CD-ROM directory:</p><p>Nodes: ixmldomnodelist; Node: IXMLDOMNODE; ... nodes: \u003d xmldoc.getelementsbytagname ('artist'); For i: \u003d 0 to nodes.length-1 do begin node: \u003d nodes.Item [i]; Memo1.Lines.add (Node.Text); End;</p><p>For our XML document, we will get the following text.</p> <p>Note that the XMLDOMNODE selectnodes method provides a more flexible way to access the branches of the document. But about it is slightly lower.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Document branch - XMLDOMNODE object</h2> <p>The XMLDOMNODE object is a document branch. We have already encountered this object when the root element of the document was obtained:</p><p>Root: \u003d xmldoc.documentElement;</p><p>To obtain information on the branch of the XML document, you can use the properties of the XMLDOMNODE object (Table 1).</p> <p>To access data stored in the branch, usually use the NodeValue property (available for attributes, text branches, comments, instructions for processing and CDATA sections), or the Text property that returns the text content of the branch, or the NodeTypeDValue property. The latter, however, can only be used for branches with typed elements.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h3> Moving on the document tree</h3> <p>The XMLDOMNode object provides a variety of ways to move through the document tree. For example, to access the parent branch, the ParentNode property is used, access to child branches is carried out through the Childnodes properties (XMLDCHILD type), FirstChild and Lastchild (type XMLDOMNODE), etc. The OwnerDocument property returns an XMLDOCUMENT object that identifies the XML document itself. The above properties make it easy to move through the document tree.</p> <p>Now I will overcome all the branches of the XML document:</p><p>Root: \u003d xmldoc.documentElement; For i: \u003d 0 to root.childnodes.length-1 do begin node: \u003d root.childnodes.Item [i]; If node.haschildnodes then getchilds (node, 0); End;</p><p>As noted above, the selectnodes object XMLDOMNODE provides a more flexible way to access the branches of the document. In addition, there is a SELECTSINGLENDE method that returns only the first branch of the document. Both of these methods allow you to specify XSL templates to search for branches.</p> <p>Consider the process of using the SELECTNODES method to extract all branches that have a CD branch and inflation.</p><p>Root: \u003d xmldoc.documentElement; Nodes: \u003d root.selectnodes ('CD / Price');</p><p>The NODES collection will be placed all switter Price CD branches. The discussion of XSL templates will return a little later.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h3> Manipulation by daughter branches</h3> <p>For manipulation of subsidiaries, we can use the methods of the XMLDOMNode object (Table 2).</p> <p>In order to completely delete the record of the first disk, you need to perform the following code:</p><p>VAR XMLDOC: IXMLDOMDocument; Root: ixmldomnode; Node: IXMLDOMNODE; Xmldoc: \u003d codomdocument.create; Xmldoc.async: \u003d false; Xmldoc.load ('C: \\ Data \\ Data.xml'); // Get the root element root: \u003d xmldoc.documentElement; Node: \u003d root; // Remove the first subsidiary node.Removechild (Node.firstchild);</p><p>Please note that in this example we remove the first subsidiary. How to remove the first element of the first subsidiary, is shown below:</p><p>VAR XMLDOC: IXMLDOMDocument; Root: ixmldomnode; Node: IXMLDOMNODE; Xmldoc: \u003d codomdocument.create; Xmldoc.async: \u003d false; Xmldoc.load ('C: \\ Data \\ Data.xml'); // Get the root element root: \u003d xmldoc.documentElement; // And the first subsidiary node: \u003d root.firstchild; // Remove the first subsidiary node.Removechild (Node.firstchild);</p><p>In the example above, we did not remove the first branch. <CD>…</CD>, and the first element of the branch - <TITLE>….

Now add a new branch. Below is a code showing how to add a new record of music CD-ROM:

Var Newnode: ixmldomnode; Child: ixmldomnode; ... // Create a new branch - Newnode: \u003d xmldoc.createnode (1, 'CD', ''); // Add element Child: \u003d xmldoc.createnode (1, 'title', ''); // Add a newnode.appendchild (Child) element; // and set its value of child.text: \u003d 'Pink Floyd'; // Add element <ARTIST> Child: \u003d xmldoc.createnode (1, 'artist', ''); // Add a newnode.appendchild (Child) element; // and establish its value of Child.Text: \u003d 'Division Bell'; // Add element <COUNTRY> Child: \u003d xmldoc.createnode (1, 'Country', ''); // Add a newnode.appendchild (Child) element; // and set its value of child.text: \u003d 'UK'; // Add element <COMPANY> Child: \u003d xmldoc.createnode (1, 'Company', ''); // Add a newnode.appendchild (Child) element; // and set its value Child.Text: \u003d 'EMI Records Ltd.'; // Add element <PRICE>Child: \u003d xmldoc.createnode (1, 'Price', ''); // Add a newnode.appendchild (Child) element; // and establish its value of Child.Text: \u003d '11 .99 "; // Add an element <YEAR> Child: \u003d xmldoc.createnode (1, 'year', ''); // Add a newnode.appendchild (Child) element; // and establish its value of Child.Text: \u003d '1994'; // and add the root.appendchild branch (newnode); ...</p><p>The above code shows the following sequence of actions to add a new branch:</p> <ul><li>Creating a new branch using CreateNode: <ul><li>creating an item using the CreateNode method;</li> <li>adding an element to the branch by the APPENDCHILD method;</li> <li>setting the value of the element through the TEXT property;</li> <li>... repeat for all items.</li> </ul></li> <li>Adding a new branch to the document by AppendChild.</li> </ul><p>Recall that the AppendChild method adds a branch at the end of a tree. To add a branch to a specific place of the tree, you need to use the InsertBefore method.</p> <h2> Set of branches - XMLDOMNODELIST object</h2> <p>The XMLNodelist object contains a list of branches that can be built using the SelectNodes or GetElementsByTagname methods, and is also obtained from the Childnodes property.</p> <p>We have already considered the use of this object in the example given in the section "Moving on the document tree". Here we also give some theoretical comments.</p> <p>The number of branches in the list can be obtained as the value of the Length property. The branches have indices from 0 to Length-1, and each individual branch is available through an Item array element with the corresponding index.</p> <p>Moving on the list of branches can also be carried out using the NEXTNODE method returning the next branch in the list, or Nil, if the current branch is the latter. To return to the top of the list, you should call the Reset method.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Creating and saving documents</h2> <p>So, we looked at how you can add branches and elements to existing XML documents. Now create an XML document "on the fly". First of all, we will remind you that the document can be loaded not only from the URL, but also from the usual string. Below is shown how to create a root element, which can then be used to dynamically build the remaining elements (which we have already considered in the section "Manipulation of subsidiaries"):</p><p>VAR XMLDOC: IXMLDOMDocument; Root: ixmldomnode; Node: IXMLDOMNODE; S: WideString; ... S: \u003d ' <CATALOG></CATALOG>'; Xmldoc: \u003d codomdocument.create; Xmldoc.async: \u003d false; Xmldoc.loadXML (S); Root: \u003d xmldoc.documentElement; Node: \u003d xmldoc.createnode (1, 'CD', ''); Root.appendchild (Node); Memo1.lines.add (xmldoc.xml); ... xmldoc: \u003d nil;</p><p>After building an XML document, save it in the file using the SAVE method. For example:</p> <p>Xmldoc.save ('C: \\ Data \\ NewCd.xml');</p> <p>In addition to saving in the file, the SAVE method allows you to save an XML document in a new XMLDomDocument object. In this case, the document is full processing and, as a result, checking its structure and syntax. Below is shown how to save a document in another object:</p><p>Procedure TFORM1.Button2Click (Sender: Togject); VAR XMLDOC2: IXMLDOMDocument; Begin xmldoc2: \u003d codomdocument.create; Xmldoc.save (xmldoc2); Memo2.lines.add (xmldoc2.xml); ... xmldoc2: \u003d nil; end;</p><p>In conclusion, we note that the SAVE method also allows you to save an XML document to other COM objects that support iStream, IsetStream or IpescistStreaminit interfaces.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Using XSL templates</h2> <p>Discussing the XMLDOMNODE object selectnodes method, we mentioned that it provides a more flexible way to access the branches of the document. Flexibility lies in the fact that as a criterion to select branches, you can specify an XSL template. Such templates provide a powerful mechanism to search for information in XML documents. For example, in order to get a list of all the names of music CD-ROM in our directory, you can follow the following query:</p><p>To find out whether discs of which performers are released in the United States, the request is formed as follows:</p><p>Nodes: \u003d root.selectnodes ('CD / ARTIST');</p><p>Below is shown how to find the first disk in the directory:</p><p>Nodes: \u003d root.selectnodes ('CD / TITLE');</p><p>and last:</p><p>Nodes: \u003d root.selectnodes ('CD / TITLE');</p><p>To find the discs of Bob Dilan, you can perform the following query:</p><p>Nodes: \u003d root.selectnodes ('CD [$ any $ arst \u003d "bob dylan"] / title');</p><p>and to get a list of disks released after 1985, we carry out the following query:</p><p>Nodes: \u003d root.selectnodes ('CD / TITLE');</p><p>A more detailed discussion of XSL syntax requires a separate publication. To intrigue readers and push further research, I will give only one small example of the possible use of XSL. Suppose we need to convert our directory to the usual HTML table. Taking advantage of traditional ways, we must sort out all tree branches and for each item obtained to form the corresponding tags <TD>…</TD>.</p> <p>Using XSL, we simply create a template (or style table), in which we indicate what and how to convert. Then we impose this template to our catalog - and ready: before us the text of the XSL template, which converts the directory in the table (Listing 2).</p> <p>The code for overlaying the XSL template to our catalog looks like this:</p><p>Procedure TFORM1.Button2Click (Sender: Togject); VAR XSLDOC: IXMLDOMDocument; Begin Xsldoc: \u003d codomdocument.create; Xsldoc.load ('C: \\ Data \\ Data.xsl'); Memo2.Text: \u003d XMLDOC.TransFormNode (XSLDOC); Xsldoc: \u003d nil; end;</p><p>By completing our discussion of XSL, it should be said that currently this language is actively used for transformation between different XML documents, as well as for formatting documents.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Conclusion</h2> <p>For quite understandable reasons, in one article it is impossible to consider all Microsoft XML DOM objects and bring examples of their use. Here we only touched on the main issues of using XML DOM in applications. In tab. 3 shows all objects implemented in Microsoft XML DOM.</p> <p>ComputerPress 12 "2000</p> <p>Order Solving Tasks on Delphi <br> Delphi is the second programming language with which the students most often get acquainted in the learning process. This is the beginning of learning object-oriented programming. I, as a student, made for myself the conclusion that there is no easier method to master the language than to write a calculator on it. Even if you realize the elementary function of the addition of two numbers, this is already on a lot of light.</p> <p>Codegaear, Delphi 7, Lazarus is different compilers, programs that will be transferred to the machine code written by you, converting it into zoliki and one. These are all programs for creating programs, and not separate programming languages. These compilers use the Object Pascal programming language underlying the Delphi language, which is similar to the syntax similar to the usual Pascal, but is functional significantly different. <br></p> <h2>What is programming language syntax?</h2> <p>This is a format for writing various operators. For example, the "For" cycle on the Pascal has the following format: "For n: \u003d 1 to k do", etc.</p><p>In the C ++ programming language, the same cycle is written somewhat differently: for (n \u003d 1; n We write a calculator</p><p>This will give you to understand how objects with the program code are interacting, what is "variables", how mathematical functions work. All programming in any case will be a calculation. The game is also a program that constantly considers something, works with numbers and numeric functions. Programming is inseparable from mathematics.</p> <p>We use to write the Lazarus development environment. Its functionality is not as rich as, say, Codegear, but it is free access and is designed to study.</p><p>Opening the development environment, we see the shape and panel of the elements. Here is a form.</p> <p><img src='https://i2.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-24.jpg' width="100%" loading=lazy loading=lazy></p><p>Here is the element panel.</p><p>The first thing we will do is add the three items you need to implement the addition function of two numbers. We need: "Tedit" in the number of three pieces and "tbutton". In the picture below, they are shown in the Arrows panel. Click on them once, and then once in shape, and they appear on it.</p><p>These are text fields for input and a regular button. You encounter these elements using almost any Windows program. Take a look.</p><p><img src='https://i1.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-27.jpg' width="100%" loading=lazy loading=lazy><br></p> <p>Now clean these inscriptions. Click the View tab. And click on the "Inspector of Objects. This window will appear.</p><p><img src='https://i0.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-28.jpg' width="100%" loading=lazy loading=lazy></p><p>Click once on our element "Button" on the form and change the value "Caption" in the inspector window to any other. For example, on the word "OK". Click Enter. We see on the form, as the element has changed the name.</p><p>Just do it with Edit, just do not rename, but we will make them without any content. We highlight them in turn and clean the TEXT value in the inspector. Do not forget to press ENTER.</p><p><img src='https://i2.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-29.jpg' width="100%" loading=lazy loading=lazy></p><p>According to the result, our form looks like this.</p><p><img src='https://i2.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-30.jpg' width="100%" loading=lazy loading=lazy><br></p> <p>Now that our calculator earned, you need to register the necessary software code for the procedure of our button. Click on the Button element twice and open the source editor.</p><p><img src='https://i2.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-31.jpg' width="100%" loading=lazy loading=lazy></p><p>See? Button1Click procedure. This is a procedure that is responsible for what happens when we click on the button once. And the following must occur: the program is needed in the third edit to bring us the sum of the numbers introduced in the first two fields. We write the code.</p><p><img src='https://i1.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-32.jpg' width="100%" loading=lazy loading=lazy></p><p>Such simple 5 lines of code we need to write. Comments and explanations are visible in the picture above. After that, click this button.</p> <p>A compilation of our project will be compiled. It will be assembled in the program. We enter the numbers in the first two fields, click on the button and get the value of the amount.</p><p><img src='https://i2.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-34-2.jpg' width="100%" loading=lazy loading=lazy></p> <h2>Conclusion</h2> <p>You can click the "File" button, then "Save everything", select the folder to save and you will have a full-fledged program, the start of which can be done from the desktop. Now try to figure it out on your own that you need to rewrite in this code so that the program shall be divided by two numbers, and not folded. Tip: You need to change the data type. The video below shows a similar example, but in Delphi 7, not Lazarus.</p><p><span class="6qR5tjJKK3g"></span></p> <p>Many Delphi programmers, Saving settings are associated using <i>INI.</i> Files in their programs. The use of this method, in less serious projects, it is necessary to avoid, as it limits in flexibility, which prevents further expansion of the program. It is worth saying that such an approach is quite popular, due to its ease of use and the presence of built-in funds on the development environment. <br><br> However, the ideal option for storing the program settings are structured <i>Xml</i> Files. Their advantage is that the number of parameters may not be fixed. To better understand this, consider a specific example.</p><p>In the USEarch program, when you click on recording, a context menu appears, which displays the list of points. These items are commands that in turn are downloaded from the settings file. In the event that the settings were stored in <i>INI.</i> The file, the program could save and load a certain number of commands, for example 10 or 50. As soon as you need more important, you will need to rewrite the code and, accordingly, re-compile it.</p><p><img src='https://i1.wp.com/zoo-mania.ru/wp-content/uploads/2011/08/settings.ini_.jpg' height="145" width="247" loading=lazy loading=lazy><br> Applying an approach using <i>Xml</i> Files, we will have the ability to download all the parameters of the section dynamically. To all this, the configuration file will become more elegant, without excessive numbering of parameters. However, standard tools for working with <i>Xml</i> Delphi has many drawbacks, so I recommend using the standard library <b>MSXML.</b>. Usually it is the default part of the Windows family systems.</p><p><img src='https://i2.wp.com/zoo-mania.ru/wp-content/uploads/2011/08/settings.xml_.jpg' align="center" width="100%" loading=lazy loading=lazy><br> For connecting <b>MSXML.</b>We need to form an interface file with a list of all functions by importing it from the COM server. How to import the interface is written not enough detailed articles, I suggest you download the file <b>MSXML2_TLB.PAS.</b> Already ready to use. After the file is downloaded, place it next to your project, or throw to the Delphi Lib LIB folder. Thus, all programs created will be able to use the module. <b>MSXML.</b>, It is enough to add msxml2_tlb to the USEs.</p><p>For clarity, consider the following example of the application of this library:</p><p>Procedure Loaddata; VAR XMLDOC: DomDocument; Root: ixmldomelement; Begin xmldoc: \u003d codomdocument.create; XMLDOC.LOAD ("settins.xml"); Root: \u003d xmldoc.documentElement; ShowMessage ("Size / Width"). Text); Root: \u003d nil; Xmldoc: \u003d nil; end;</p><p>First, an instance of the DomDocument class is created, after which the contents of the settings.xml file is loaded into the memory. As according to the standard any <i>Xml</i> The file must contain the root tag (in this case <i>config</i>), then we need to get it using the function <i>DocumentElement</i>. Then the contents of the content between tags <width></width> which in turn are between tags <size></size> . Thus, from the settings.xml file, our method will deploy text in MessageBox <i>"100px"</i>.</p><p> <?xml version="1.0" encoding="utf-8"?> <config> <size> <height>500px</height> <width>100px.</width> </size> </config> </p><p>Here the SELECTSINGLENDE method is applied, which takes the string as a parameter.</p> <p>Welcome! This blog is devoted to the Internet and computers, and, more precisely, they were dedicated to them.</p> <p>Probably it is immediately seen that many years have not appeared on the site for many years. Yes, this is the fate of most blogs. Once this project was an ambitious undertaking, and the author, as in many others who wrote at the time, were large-scale plans to become one of the best Russian bloggers. Well, if you look now, then from those blogs that were created simultaneously with mine, most had already dissolved in eternity. And I tritely became missing time blog. So yes, it is no longer updated. Although I once won in this site in the 2011 Blog Competition.</p> <p>I even had the idea to remove all this, but then I revised the old materials, and realized that they could still be useful to readers. Yes, some articles are outdated (if I have enough strength, they will receive the appropriate marks), but the site, for example, can be useful to beginners - here you can read about the basic concepts of the Internet, learn to customize the Internet, Windows or even decide to go to Linux. So look at the headings and select the one that is suitable for you.</p> <p>And, after all, I hope it is more than just a blog, but a real Internet guide. The site can be found in the directory mode, where all available articles are structured by categories. And who knows maybe, new quality articles will begin to appear here.</p> <p><i>Sander</i></p> <p>Picodi.ru is a discount portal from International Coupons, a Polish expert in saving and cheap purchases. Poles are considered one of the most economical nations in the world, therefore it is not surprising that this type of project has grown from the Polish startup KODYRABATOWE.PL. What can be useful to this portal to an ordinary Internet user in Russia?</p> <p>Modern android telephones are more than phones. You get used to the set of installed programs, to the history of your calls and text messages, collections of photos and a lot. But the time goes, and the fully arranged device starts to slow down, bug, or simply loses a presentable view because of the chipping on the body or scratches on the screen. There is a question of choosing a new phone and changing the Android phone. And if the question of choice, we will now bypass the party now, then "moving" to a new phone remains a serious problem - I absolutely do not want to start all the data from scratch. Here we will talk about this today.</p> <p>Most of the readers of this blog, most likely, never faced versions of version control and will not come up in the near future. And sorry. This extremely user-friendly invention is widely used by programmers, but, in my opinion, it could be very useful and to those who actively work with the texts. But, probably, there is no version control system now, which it would be easy to start using for the "office" (Microsoft Office) of work. Nevertheless, I think that the material set forth in the article may be interesting for all readers.</p> <p>If you thought about how from your TV watch movies over the network and access the Internet, this article is for you. No, I know that some TVs have the functionality of Smart TV, but I have never seen it work fine. Apparently, therefore, Google's recently demonstrated a completely stunning device, immediately ended with a sensation. We are talking about the media streamer Chromecast (chromkast), a more perfect and affordable version of last year's favored player Nexus Q.</p> <p>Dongle Chromkast, the dimensions of which do not exceed 2 inches, connects to the HDMI port of the TV and allows you to enjoy watching streaming web content. To control the streamer, you can use any device (tablet, PC, smartphone) based on the IOS, Windows, Android or Mac OS operating platform.</p> <p>This article is devoted to the Android system memory device, problems that may arise due to its lack and how to solve them. I myself did not have so long ago that my Android phone began to regularly issue messages about a shortage of memory when trying to establish a particular application. What was very strange for me despite the fact that on the description on the market there should have been about 16GB, and I also increased this volume using an additional memory card. However, the problem was, and I had to thoroughly tinker before I found the right solution that does not require the receipt of root access or the full recovery of the phone to the factory state.</p> <p>Recently, much attention is paid to building e-business systems, or as they are also called - B2B (Business to Business). Given the recommendations on the construction of exchange streaming systems of coordinating Internet technologies of the body - WWW Consortium: emphasis is made towards XML technologies and building XML document exchange systems.</p> <p>The advantage of using XML in e-business is the high efficiency of B2B systems at low costs for its creation due to a clear and visual representation of structured information, the ability to use modern network protocols and creating real-time business systems.</p> <p>Independence of the presentation of information in the form of XML documents allows different, participating in the electronic business, to produce independent from each other by.</p> <p>In all systems, the exchange is usually built by the same scheme using HTTP requests. The SSL protocol is applied as the SSL protocol (but this is a separate topic).</p> <p>One of the possible options for processing XML messages is to build BIN / CGI (ISAPI) -News or COM (server) components forming or processing XML documents.</p> <p>On the one hand, the application acts as a client, which in POST mode issues an HTTP query, on the other hand, is a WEB server on the side of which the query processing and an answer is processed. The information exchange uses XML documents.</p> <p>One of the most effective implementation options is the use of an existing XML parser supporting the DOM model. Such a parser is a distributive supply of Win`98 or an integral part of IE 4.7 and above (for Win`95) and represents the COM server located in the msxml.dll library.</p> <p>The component object model (COM) is encapsulated data and methods into a single essence and a way to access them through the interface system. Delphi is simply accessible to access to the COM object classes (several classes may be included in one COM server). Access to objects is carried out by initializing the class instance through the interface system. Description of the interfaces is carried out by the interface definition language (IDL), which is possible to carry out the means of the medium automatically.</p> <p>Delphi means Imports from the COM server <i>msxml.dll.</i>The IDL interface description files are built and the binary description file of the library type is TLB. This operation is carried out through the system menu: <b>Project | Type Library Import:</b>(picture 1). The following dialog box appears (Figure 2), in which you want to select a COM object (in our case, the object is registered as "Microsoft.xmldom (Version 2.0)") and create a TLB file (button <b>Create Unit.</b>). Using the TLB file, the environment generates "Paskalevsky" file description of the COM server - MSXML_TLB.PAS</p> <p>The MSXML_TLB.PAS file describes all interfaces, constants and COM servers.</p> <p>For access to the objects of the COM element, it is necessary in the directive <b>Uses.</b>add the name of the library description file (msxml_tlb.pas). Below is the simplest program that uses the DOM standard MSXML.dll analyzer, which downloads the XML document and displays it in the Memo1 text box element.</p> <b>uses.</b> Windows, Messages, Sysutils, Classes, Graphics, Controls, Forms, Dialogs, Oleserver, MSXML_TLB, STDCTRLS; <b>type</b> TForm1 \u003d. <b>class</b>(TForm) Button1: Tbutton; Memo1: TMemo; <b>procedure.</b> Button1Click (Sender: Togject); <b> end;</b> <b>var.</b> Form1: TForm1; <b>implementation</b> ($ R * .dfm) <b>Procedure.</b>TForm1.Button1Click (Sender: Togject); <span> // Declaration of Soklass object DomDocument;</span> <b>var.</b>codoc: Codomdocument; <span> // class, consistent with the iDomDocument interface;</span> <b>var.</b>Doc: IXMLDOCUMENT; <b>begin.</b> <span> // Creating an instance of the DomDocument object;</span> Doc: \u003d Codoc.create; <span> // call a mode method of an instance of the domdocument object;</span> Doc.Load ("data.xml"); <span> // Access to the XML property instance of the domdocument object;</span> Memo1.Text: \u003d doc.xml; <b>end;</b> <b>end.</b> <h2>DOM Concept - Object Document Model</h2> <p>Each XML document is represented as a set of a plurality of objects (classes), with which access to individual elements (object fields) is possible. DOM - interface describes access to both simple domstring or characterdata objects and parts or separate XML elements of the document: DomfragmentElement, Domnode, Domelement.</p> <p>The following are the most important properties and methods of XMLDomDocument, XMLDOMNODE, XMLDOMNODELIST. It should be noted that the MODEL MSXML.DLL XML analyzer, the MSXML.DLL XML analyzer, presented below, are used by the MSXML.DLL XML analyzer than the DOM Consortium approved by the W3C model.</p> <p>A more complete description of the interface DOM objects can be found on</p> <table cellspacing="0" cellpadding="4" width="500" border="1"><tbody><tr><td valign="top" colspan="2"> Xmldomdocument object</td> </tr><tr><td valign="top" colspan="2">Represents the top level of the object hierarchy and contains methods for working with a document: its downloads, analysis, creating elements, attributes, comments in it, etc. .</td> </tr><tr><td valign="top" colspan="2"><b>Properties</b> </td> </tr><tr><td valign="top" width="39%"><b>Async.</b> </td> <td valign="top" width="61%">Property Identifying Current Processing Mode</td> </tr><tr><td valign="top" width="39%" height="19"><b>Parseerror</b> </td> <td valign="top" width="61%" height="19">Returns a reference to the XMLDOMPARSEERROR error processing object</td> </tr><tr><td valign="top" width="39%"><b>Enable - Disable document verification.</b> </td> <td> </td> </tr><tr><td valign="top" width="39%"><b>uRL</b> </td> <td valign="top" width="61%">Returns the URL of the document</td> </tr><tr><td valign="top" width="39%"><b>documentElement</b> </td> <td valign="top" width="61%">Contains a reference to the root element of the document as an XMLDOMEMEMENT object.</td> </tr><tr><td valign="top" colspan="2"><b>Methods</b> </td> </tr><tr><td valign="top" width="39%"><b>load (URL) <br>loadXML (XMLString)</b> </td> <td valign="top" width="61%">Loads an XML document</td> </tr><tr><td valign="top" width="39%"><b>save (Objtarget)</b> </td> <td valign="top" width="61%">Saves the XML document in the file</td> </tr><tr><td valign="top" width="39%"><b>aBORT.</b> </td> <td valign="top" width="61%">Interrupting the process of downloading and processing the document.</td> </tr><tr><td valign="top" width="39%"><b>createAttribute (Name)</b> </td> <td valign="top" width="61%">Creates a new attribute with the specified name for the current item.</td> </tr><tr><td valign="top" width="39%"><b>createNode (Type, Name, Namespaceuri)</b> </td> <td valign="top" width="61%">Creates a node of the specified type and title</td> </tr><tr><td valign="top" width="39%"><b>createElement (TagName)</b> </td> <td valign="top" width="61%">Creates a document element with the specified name.</td> </tr><tr><td valign="top" width="39%"><b>createTextNode (DATA)</b> </td> <td valign="top" width="61%">Creates text inside the document</td> </tr><tr><td valign="top" width="39%"><b>getElementsBytagname (TagName)</b> </td> <td valign="top" width="61%">Returns a link to the collection of document items with the specified name</td> </tr><tr><td valign="top" width="39%"><b>nodeFromid (idstring)</b> </td> <td valign="top" width="61%">Search element by identifier</td> </tr></tbody></table><br><table cellspacing="0" cellpadding="4" width="500" border="1"><tbody><tr><td valign="top" colspan="2"> <b>XMLDOMNODE object</b> </td> </tr><tr><td valign="top" colspan="2">XMLDOMNODE object that implements the basic DOM interface <b>Node.</b>, Designed to manipulate with a separate knot of a document tree. Its properties and methods allow you to receive and change full information about the current node - its type, name, full name, its contents, a list of child elements, etc.</td> </tr><tr><td valign="top" colspan="2"><b>Properties</b> </td> </tr><tr><td valign="top" width=" "><b>nodeName, Basename.</b> </td> <td valign="top" width="65%">Returns the name of the current node.</td> </tr><tr><td valign="top" width="35%"><b>prefix.</b> </td> <td valign="top" width="65%">Returns the namespace prefix.</td> </tr><tr><td valign="top" width="35%"><b>datatype.</b> </td> <td valign="top" width="65%">Defines the content type of the current node</td> </tr><tr><td valign="top" width="35%"><b>nodeType, NodeTypestring</b> </td> <td valign="top" width="65%">Returns the type of the current node:</td> </tr><tr><td valign="top" width="35%"><b>attributes.</b> </td> <td valign="top" width="65%">Returns a list of attributes of the current node as the XMLDOMNAMENDEMAP collection.</td> </tr><tr><td valign="top" width="35%"><b>tEXT.</b> </td> <td valign="top" width="65%">Returns the contents of the current support in the form of text.</td> </tr><tr><td valign="top" width="35%"><b>xml</b> </td> <td valign="top" width="65%">Returns the XML representation of the current support.</td> </tr><tr><td valign="top" width="35%"><b>nodeValue.</b> </td> <td valign="top" width="65%">Returns the contents of the current node.</td> </tr><tr><td valign="top" width="35%"><b>childnodes.</b> </td> <td valign="top" width="65%">Returns a list of child elements as xmldomnodelist.</td> </tr><tr><td valign="top" width="35%"><b>fIRSTILD, LASTCHILD.</b> </td> <td valign="top" width="65%">Returns the first / last child element</td> </tr><tr><td valign="top" width="35%"><b>previousSibling, NextSibling</b> </td> <td valign="top" width="65%">Returns the previous / next nursing element.</td> </tr><tr><td valign="top" width="35%"><b>parentnode.</b> </td> <td valign="top" width="65%">Contains a reference to the parent element.</td> </tr><tr><td valign="top" width="35%"><b>ownerdocument</b> </td> <td valign="top" width="65%">Returns the pointer to the document in which the current node is located.</td> </tr><tr><td valign="top" colspan="2"><b>Methods</b> </td> </tr><tr><td valign="top" width="35%"><b>aPPENDCHILD (NEWCHILD)</b> </td> <td valign="top" width="65%">Adds a new child element to the current node.</td> </tr><tr><td valign="top" width="35%"><b>iNSERTBEFORE (NEWCHILD, REFCHILD)</b> </td> <td valign="top" width="65%">Inserts a child node, having it in the current subtree "left" of the node specified by the Refchild parameter.</td> </tr><tr><td valign="top" width="35%"><b>cloneNode (Deep)</b> </td> <td valign="top" width="65%">Create a copy of the current element.</td> </tr><tr><td valign="top" width="35%"><b>getAttribute.</b><b>(Name) <br> </b><b>getAttributeNode.</b><b><span> (Name) <br>setAttribute (Name, Value) <br>setAttributeNode (XMLDOMAttribute)</span> </b> </td> <td valign="top" width="65%">Access to attributes (creating, reading, writing) object. Name - Attribute Name, Value - its value. Returns the value of the XMLDOMAttribute object.</td> </tr><tr><td valign="top" width="35%"><b>replacechild (Newchild, OldChild) Removechild (OldChild)</b> </td> <td valign="top" width="65%">Replacing the OLDCHILD object of the current list of subsidiaries on NewChild. Removing the OLDCHILD object</td> </tr><tr><td valign="top" width="35%"><b>selectNodes SELECTSINGLENDE (PATTERNSTRING)</b> </td> <td valign="top" width="65%">Returns the XMLDOMNODELIST object selected by search pattern or first node</td> </tr><tr><td valign="top" width="35%"><b>tRANSFORMNODE (STYESHEET) <br>transformNodetoBject (StyleSheet, OutputObject)</b> </td> <td valign="top" width="65%">Assigns a style table to support the current node and returns the string - the result of processing. A reference to the DomDocument object is transmitted as a parameter, in which the XSL instructions are located.</td> </tr></tbody></table><br><h2>Using XML in business.</h2> <p>For a clearer picture, an explanation is necessary, and why all this is necessary with what to understand how it works:</p> <p>When building a B2B or corporate ERP system, when organizing an information exchange of XML documents between enterprises or branches of the Prom-I, an effectively proven information system is used on the basis of available Web servers on HTTP protocols.</p> <p>On the one hand, the application acts as a client, which in POST mode issues an HTTP query, on the other hand, the WEB server is on the side of which the request is processed and the response. XML documents are used as exchanging.</p> <p>For example, in a simple corporate ERP system of the accounting program (ACS accounting), it is necessary to form a certain request for an invoice and transfer it to a branch that has a warehouse (ACS Warehouse). ART is a similar setting of the problem when creating a B2B of the system, when an enterprise A requests the availability of products (makes an order for the purchase) from the supplier V.</p> <p>Enterprise A and his program acts as a client. The warehouse serves the supplier in who has a warehouse bd complex on the SQL server. Exchange is carried out through a corporate web server supplier V.</p> <p>Below is the following typical exchange algorithm:</p> <br>Figure 3. <ol><li><b>Enterprise A.</b>initiates <b>process A.</b>(Product order), which acts as a Web client.</li><li><b>Process A.</b>generates an XML document (for example, an invoice) and transmits it as a POST HTTP query to a Web Supplier Server V. As an URI - a processing application identifier is used. URI may be the same as for all types of documents or individual for each type. It all depends on the structure of the B2B (Web) server.</li><li>WEB server analyzes the request and generates the server <b>Process B.</b>By passing an XML document as a parameter. <br>The process in the web server is started and processed either as ASP page, CGI (ISAPI) - application or java Sevrlet (server application)</li><li><b>Process B.</b>- Generates a request to the SQL database server.</li><li>The SQL server makes the necessary operations in the database, forms the answer and returns it. <b>Process B.</b>.</li><li>On the answer from the SQL server <b>Process B.</b> Generates an XML document (answer) and lets it as an answer to the HTTP request to the client application.</li><li>Further, depending on the situation on the client side, either a new HTTP query is formed, or the session ends.</li> </ol><h2>A few words about the organization of document management.</h2> <p>The general rule of development of the XML exchange system is:</p><ul><li><b>firstly</b>- development of the circuit of the flow of electronic documents and their structure;</li><li><b>secondly</b>- development of tables of functions of processes (subprocesses) i.e. What function in relation to which XML document will implement each process.</li> </ul><p>Each XML document, like an HTML document, should consist of a message header (information prisoner) and a message body (for the query this information framed by tagging to respond to the request). In order for the XML document to be correctly formed, it is necessary for its two components of the "header" and "request" to framed tags, for example. The view of the standard document is presented below:</p> <p>The title (Figure 4), in contrast to the HTML of the document, should contain different kind of service information, including information about the type of document transmitted and processing process. The informational processing of the document is received, i.e. The meaningful part is framed by tag. It should be noted that the header structure should be united for all types of documents.</p> <p>For the process running by the server, the processing algorithm is preferably (but not necessary) to build as follows:</p> <img src='https://i1.wp.com/codenet.ru/np-includes/upload/2005/01/05/128666.jpg' height="500" width="408" loading=lazy loading=lazy><br>Figure 6. <h2>Some principal moments when creating a client part</h2> <p>As already explained, when creating an XML document uses its presentation in the form of a DOM model. Below is an example of the text of the Delphi text of the XML message header program.</p> <b>procedure.</b>Tthread1.HeaderCreate (Sender: Togject); <b>var.</b> <span> // Classes Announcement is needed to create</span> Codoc: Codomdocument; <span> // XmldomDocument object</span> Doc: DomDocument; R: ixmldomelement; Node: ixmldomelement; // Domtext TXT: IXMLDOMTEXT; // Domattribute ATTR: ixmldomattribute; <b>begin.</b> <span> // Creating Dom Document</span> Doc: \u003d Codoc.create; Doc.set_async (false); <span> // initial initiation DOM document</span> Doc.Loadxml (" <Header/>"); <span> // Creating Domelement (Tag<<b>Sender.</b>>) </span> Node: \u003d doc.createElement ("Sender"); <span> // Creating a Text Node " <b>LLC "Typhoon"</b>" </span> TXT: \u003d doc.createTextNode ("LLC" Typhoon "); <span> // Assigning a node<<b>Sender.</b>\u003e Value</span> <span> // Text Node " <b>LLC "Typhoon"</b>" </span> Node.appendchild (TXT); <span> // Adding an item<<b>Sender.</b>\u003e in the root of the document as a subsidiary</span> R.APPENDCHILD (Node); <span> <<b>From.</b>> </span> Node: \u003d doc.createElement ("From"); TXT: \u003d Doc.CreateTextNode ("http://tayfun.ru/xml/default.asp"); Node.appendchild (TXT); R.APPENDCHILD (Node); <span> // Similar operations for Tag<<b>To.</b>> </span> Node: \u003d doc.createElement ("To"); TXT: \u003d Doc.CreateTextNode ("http://irbis.ru"); Node.appendchild (TXT); R.APPENDCHILD (Node); <span> // Create Domelement ()</span> Node: \u003d doc.createElement ("TypeDocument"); <span> // Creating an XMLDOMATTRIBUTE node</span> ATT: \u003d doc.createAttribute ("ID", "Order"); <span> // <TypeDocument Id="Order"/> </span> Node.APPendchild (ATT); R.APPENDCHILD (Node); <b>end;</b> <p>It should be noted that the announcement of the CODOC: CodomDocument and Doc: DomDocument variable, as well as the creation of the Create method (doc: \u003d codoc.create;) is carried out once. The declaration of the variable is in the section of the description of global variables, and not in the local procedure, as demonstrated for visibility in this example (i.e. one global variable of the DomDocument type one program module).</p> <p>The result of the above program will be the created header, in relation to our example of the XML document: depicted in Figure 5.</p> <img src='https://i0.wp.com/codenet.ru/np-includes/upload/2005/01/05/128662.gif' height="116" width="298" loading=lazy loading=lazy><br>Figure 5. <p><img src='https://i0.wp.com/codenet.ru/np-includes/upload/2005/01/05/128664.gif' height="179" width="385" loading=lazy loading=lazy><br>Figure 6.</p><p>The main advantage of transmitting information in the form of XML documents is that it is possible to form a message using the independent structure of the tables in the DBMS both on the received and on the transmitted side. Using our example, let it be required to transfer information about the invoices of the enterprise A, from the DBMS of the structure shown in Figure 6</p> <p>To form an XML document containing an invoice, an initially built SQL request (query a) with information about the Invoice:</p> <b>SELECT</b> * From invoice_general <b>Where.</b> InvoicEnum \u003d: Num <b>SELECT</b>Goods, quulity, Price, hz_cod <b>From.</b>Goods <b>Where.</b> InvoicEnum \u003d: Num <span> //: Num - the parameter that specifies the invoice number.</span> <p>Below is part of the program forming the body of the XML document:</p> <b>procedure.</b> Tthread1.databodycreate (sender: tobject); <b>var.</b> <span> // Classes and XmldomDocument</span> // Codoc: Codomdocument; <span> // must be global, for the entire module.</span> // Doc: DomDocument; <span> // Announcement of Domelement Objects</span> R: ixmldomelement; // Domelement; Node, Node2: ixmldomelement; Node3, node4: ixmldomelement; // Domtext TXT: IXMLDOMTEXT; Str: String; <span> // InvoicEnumber: <b>integer;</b> - Global variable - // Masching 987654 // Querya, QueryB: <b>String;</b> - Global variable, // Maintaining a request to request // Querya - request and general information on invoice // QueryB - Query B Information about the goods described in // Invoice (see Text)</span> <b>begin.</b> Query.close; <span> // See on the text "Request A"</span> Query.Text: \u003d Querya; <span> // Request execution</span> Query.execsql; Query.open; <span> // Get the address of the root element</span> R: \u003d doc.get_documentElement; Node2: \u003d doc.createElement ("Request"); <span> // Create Domelement (TAG)</span> Node: \u003d Doc.CreateElement ("Invoice"); <span> // Adding an item to the root</span> R.APPENDCHILD (Node2); <span> // Adding an item in</span> Node2. AppendChild (Node); <span> // Create Domelement (TAG)</span> Node3: \u003d doc.createElement ("Depurture"); <span> // Adding an item in</span> Node. AppendChild (Node3); <span> // Appeal to the "Depurture" field</span> Str: \u003d Query.fieldByname ("Depurture"). Asstring; <span> // Creating a text node \u003d field value</span><span> // node assignment value</span> <span> // Text node, variable str</span> Node.appendchild (TXT); <span> // Similar operations for Tag <Destination>, <DataSend>, // <DataDepurture>, <Currency> // <DestinationCompany> (field db "Consignee")</span> Node: \u003d doc.createElement ("DESTINATION"); <span> // The name of the database field may not coincide with the name</span> STR: \u003d Query.fieldByname ("Consignee") .Asstring; <span> // Taga, in this advantage of use</span> TXT: \u003d Doc.CreateTextNode (STR); <span> // DOM interface before DBMS having the support of the XML interface, // type Oracle 8i or MS SQL 2000</span> Node.appendchild (TXT); ... <span> // Formation of a request for goods specification</span> <span> // Closes access request</span> Query.close; <span> // See on the text "Request in", Info. About products</span> Query.Text: \u003d QueryB; <span> // Assigning parameter values</span> Query.params.asinteger: \u003d InvoicEnumber; <span> // Request execution</span> Query2.execsql; <span> // Opening access to request data</span> Query.open; <span> // Create Domelement (TAG)</span> Node3: \u003d Doc.CreateElement ("IMEMS"); <span> // Adding an item in</span> Node. AppendChild (Node3); <span> // Cycle on all requests</span> <b>while</b> <b>not.</b> Eof.Query. <b>do.</b> Begin node4: \u003d doc.createElement ("IMEM"); <span> // Adding an item in</span> Node3.APPendchild (Node4); <span> // Data generation for Tag</span> Str: \u003d Query.fieldByname ("Price"). Asstring; TXT: \u003d Doc.CreateTextNode (STR); Node.appendchild (TXT); ... <span>// Similar operations for tags <HZ_Cod>, <Quality>, <GoodName> </span> <b>end;</b> <b>end;</b> <p>As a result of this procedure, the following text of the XML document is formed:</p> <table width="100%"><tbody><tr><td align="middle"><br><img src='https://i2.wp.com/codenet.ru/np-includes/upload/2005/01/05/128661.gif' width="100%" loading=lazy loading=lazy></td> </tr></tbody></table><p>The Open method is used to form a query. <b>Ixmlhttprequest</b>:</p> <b>procedure.</b> Open (Const Bstrmethod, - Method Type \u003d "POST" BSTRURL, - URL VARASYNC Server Address, - Asynchronous / Synchronous Communication Mode \u003d True Bstruser, - Username for BSTRPASSWORD authentication) - Password <h2>Creating a server part of document processing</h2> <p>As noted earlier, the processing of HTTP request can be carried out either CGI applications or Java servlets. Possible options for writing ASP pages. But in this case, data transmission is possible only by the "Get" using the query string. Although, the HTTP processing of the ASP page request works more efficiently than the CGI application. However, in my opinion, without any difference, how to process, and more importantly to solve the question - how to build a processing program, and not with what means.</p> <p>If we reviewed an XML document formation options from the previous chapter, then the task of the server application is the opposite of XML documents. Below is part of the program that analyzes the XML document:</p> <b>procedure.</b>Tthread1.dataparser (sender: tobject); <b>var.</b> <span>// Announcement of Domelement Objects</span> R, Fnode: ixmldomelement; Str, FileName: String; Parm: String; <span>// Soklass announcement and</span> CodocXML, CodocxSl, Codocresult: Codomdocument; <span>// XmldomDocument object</span> XMLDOC, XSLDOC, ResultDoc: DomDocument; <span>// httpstr: string; - A global variable containing the HTTP query string</span> <b>Begin.</b> Xmldoc: \u003d codocxml.create; Xmldoc.Loadxml (httpstr); <span> // Get the address of the root element</span> R: \u003d doc.get_documentElement; <span> // Obtaining the value of the element</span> Fnode: \u003d R.SelectSinglenode ("// TypeDocument"); <span> // Get an attribute value id \u003d "Order"</span> FileName: \u003d Fnode.getAttiBute ("id"); <span> // And forming the file name Order.xsl</span> FileName: \u003d FileName + ". XSL"; <span> // Creating a document XSLDOC</span> Xsldoc: \u003d codocxsl.create; Xsldoc.loadXML (FileName); <span> // Creating an XMLDOC document</span> Resultdoc: \u003d codocresult.create; <span> // Setting the synchronous processing mode</span> Resultdoc.set_async (false); <span> // Installing Debuting Check</span> Resultdoc.validateonparase: \u003d true; <span> // Collapse XMLDOC by XSL template</span> XMLDOC.TransFormNoC, ResultDoc (XSLDOC, ResultDoc); <span> // variable STR is assigned to text value</span> <span> // Resulting Document.</span> STR: \u003d resultdoc.text; <span> // Search element</span> Fnode: \u003d R.Selectsinglenode ("// InvoicEnumber"); <span> // and getting the value of the element</span> Parm: \u003d Fnode.Text; <span> // Closes access request</span> Query.close; Query.Text: \u003d STR; <span> // Assigning the value of the parameter</span> Query.params.asstring: \u003d PARM; <span> // Request execution</span> Query.execsql; <b>end;</b> <p>The entire range of parsing is to apply the XSL template, which is formed for each type of document individually. The analysis result is the SQL query string. In consequence, the execution of the generated SQL query string will make the necessary changes in the DBMS.</p> <p>The advantage of using parsing through the template is also in the fact that it turns out some data flexibility, and the complete independence of the operation of the algorithm from the program code is obtained. Below is the text of the XSL template as used for processing document type.</p><p> <!-- файл Order.xsl --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <xsl:for-each select="//header"> INSERT INTO TABREG (from, to, typedoc, body) Values \u200b\u200b(" <xsl:value-of select="from" />", "<xsl:value-of select="to" />", "<xsl:value-of select="TypeDocument/@id" />") </xsl:for-each> <xsl:for-each select="//item"> INSERT INTO GOODS (InvoicEnumber, Name, Price, Quality) Values \u200b\u200b(": Num", " <xsl:value-of select="name" />", "<xsl:value-of select="price" />", "<xsl:value-of select="quality" /> ") </xsl:for-each> </xsl:template> </xsl:stylesheet> </p><p>Explaning the above example, it should be noted that the use of pairs of tags and is formal, because After parsing, at least one node should be present in the resulting XML document. The resultdoc.Text method assigns the text value obtained during the analysis of the XML document ResultDoc. In this case, the value is all that the pairs of tags are framed and, i.e. We have formed a SQL request.</p> <p>Another feature of writing the program should be noted the possibility of using the SQL parameter <b>: num.</b> Using the parameter allows you to simplify the text of the XSL template. Definition The value of the corresponding elements of the XML document nodes is determined initially selecting the name of the corresponding node, for example:</p><h2>Briefly about xsl</h2> <p>XSL abbreviation comes from Extensible Stylesheet Language - style table formatting language (XML data). As it is clear from the Extensible StyleSheet Language (XSL) header (XSL) is used to format XML data. By definition of W3C XSL consists of two parts:</p> <ul><li>XSLT - XSL Transformation. The language used to convert or format (transform) XML documents. Thus, using XSLT, we can get different sections of multiple data and data presentation forms.</li><li>Formatting elements. These elements include all elements of typographical data design, after they are processed using XSL. Used only to form HTML pages.</li> </ul><p>Using XSLT, we can select the data from the XML file you need, and arrange them in the form to provide the user. For example, in our case, we transformed XML data as a SQL query. The classic XSL application is usually formatting data as an HTML pages or a rare representation in the form of RTF files.</p> <p>XSL file describes the template (Template), according to which the XML data conversion will be performed. Returning to XSL templates, the following elements can be allocated in XSLT (directives):</p> <table cellspacing="0" cellpadding="4" width="500" border="1"><tbody><tr><td valign="top" width="31%"> <b>XSL directive</b> </td><th align="middle" width="69%"> <b>description</b> </th> </tr><tr><td>xSL: Apply-Templates</td> <td>Directive, indicating the application of the appropriate templates attribute SELECT \u003d "Template name"</td> </tr><tr><td>xSL: attribute.</td> <td>creates the attribute tree and adds it to the output element, the Name \u003d "attribute name" parameter, namespace - URI on the namespace (namespace prefix)</td> </tr><tr><td>xSL: Call-Template</td> <td>causes a template, attribute Name \u003d "URI on the template"</td> </tr><tr><td>xSL: Choose. <br>xSL: WHEN. <br>xSL: Otherwise.</td> <td>making a selection by condition XSL: WHEN EXPR \u003d "Calculating expression on Script", <br>language \u003d "Language-Name" <br>test \u003d "Calculated expression"</td> </tr><tr><td>xSL: comment</td> <td>generates a comment on the output document</td> </tr><tr><td>xSL: Copy. <br>xSL: Copy-of</td> <td>copies the current node in the output source or inserts the document fragment to the node where the select \u003d "Name of the source node" attribute</td> </tr><tr><td>xSL: Element.</td> <td>creates an output element by name, attribute Name \u003d "element name", namespace \u003d "URI reference to the namespace"</td> </tr><tr><td>xsl: for-each</td> <td>re-apply template to all nodes list nodes, SELECT attribute sets a list of nodes.</td> </tr><tr><td>xSL: if.</td> <td>conditions check is set by the TEST attribute as an expression</td> </tr><tr><td>xSL: include</td> <td>includes an external template, attribute HREF \u003d "URI REFERENCE"</td> </tr><tr><td>xSL: Output</td> <td>specifies the output result, the Method attribute may have "XML", "HTML" or "Text"</td> </tr><tr><td>xSL: Param</td> <td>specifies the parameter value, the name \u003d "parameter name" attribute, select \u003d "value"</td> </tr><tr><td>xSL: PROCESSING-INSTRUCTION</td> <td>creates instructions for processing, attribute Name \u003d "Name Process Instructions"</td> </tr><tr><td>xSL: Sort.</td> <td>sorts many nodes, attributes select \u003d "node name", data-type \u003d data type ("text" | "Number" | qname), Order \u003d Sort direction ("Ascending" | "Descending")</td> </tr><tr><td>xSL: StyleSheet.</td> <td>defines the XSL template document, is the root element for XSLT</td> </tr><tr><td>xSL: Template.</td> <td>specifies the XSL template, the Name \u003d "URI prefix attribute to the template name", match \u003d "Note to the node to which the template applies"</td> </tr><tr><td>xSL: TEXT.</td> <td>generates text to output stream, the disable-output-escaping \u003d "yes" or "no" attribute indicates the ability to generate ESC characters</td> </tr><tr><td>xSL: Value-of</td> <td>inserts the value of the selected node as the text, the SELECT \u003d "pointer to the node" attribute from which the value is taken</td> </tr><tr><td>xSL: variable</td> <td>specifies the value of the variable boundaries, the Name attribute \u003d "variable name", SELECT \u003d "Calculate the value of the variable"</td> </tr><tr><td>xSL: WITH-PARAM</td> <td>applies the parameter to the template, the name attribute \u003d "parameter name", SELECT \u003d expression to calculate the current context, the default value "."</td> </tr></tbody></table><h2>Conclusion</h2> <p>In conclusion, it should be noted that using the standard XML parser <i>msxml.dll.</i>it is not the only means of parsing and creating XML documents. For example, to create XML documents to effectively use components <b>TPageProduser.</b>and <b>TTableProduser.</b>. But this article only emphasizes the breadth and possibility of applying a DOM model in practice.</p> <p>The author will be very grateful for feedback on the relevance of the topic, the overall content, style of presentation, as well as all the other comments that will help further improve the quality of writing a collection of articles and the release of books that covers the subject of the practical side of the use of XML documents in e-commerce. For more information on the practical side of the application of electronic documents, you can learn from www.edocs.al.ru on the author's website, it is also planned to place source texts and examples.</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 style="font-size:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both"></div> </div> <footer> <div class="td-block-row td-post-next-prev"> <div class="td-block-span6 td-post-prev-post"> <div class="td-post-next-prev-content"><span>Previous article</span><a href="https://obanracer.ru/en/mozhno-li-otsledit-aifon-bez-simki-pochemu-ne-rabotaet-funkciya-naiti-iphone.html">Why doesn't the "Find iPhone" function work?</a></div> </div> <!-- /next_post --> <div class="td-next-prev-separator"></div> <div class="td-block-span6 td-post-next-post"> <div class="td-post-next-prev-content"><span>Next article</span><a href="https://obanracer.ru/en/pochemu-itools-ne-vidit-iphone-prichina-i-reshenie-kak-nastroit-i.html">How to set up and use the ITools program: ITools application instructions do not see iPhone</a></div> <!-- /next_post --> </div> </div> <div class="td-author-name vcard author" style="display: none"><span class="fn"><a href="https://obanracer.ru/en/author/iulia">Yulia</a></span></div> <span style="display: none;" itemprop="author" itemscope itemtype="https://schema.org/Person"><meta itemprop="name" content="Юлия"></span> <meta itemprop="datePublished" content="2016-05-16T15:47:37+00:00"> <meta itemprop="dateModified" content="2016-10-25T16:54:41+00:00"> <meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="/other/kak-zavyazat-galstuk-foto-poshagovo.html" /><span style="display: none;" itemprop="publisher" itemscope itemtype="https://schema.org/Organization"><span style="display: none;" itemprop="logo" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="//obanracer.ru/wp-content/uploads/2017/01/logo-300x100.png"></span> <meta itemprop="name" content="Мой секрет"> </span> <meta itemprop="headline " content="Как завязать галстук пошагово фото"><span style="display: none;" itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="/wp-content/uploads/2016/05/1-19.jpg"><meta itemprop="width" content="640"><meta itemprop="height" content="450"></span> </footer> </article> <div class="td_block_wrap td_block_related_posts td_uid_3_5a236fb03c961_rand td_with_ajax_pagination td-pb-border-top td_block_template_1" data-td-block-uid="td_uid_3_5a236fb03c961" ><script>var block_td_uid_3_5a236fb03c961 = new tdBlock(); block_td_uid_3_5a236fb03c961.id = "td_uid_3_5a236fb03c961"; block_td_uid_3_5a236fb03c961.atts = '{ "limit":9,"sort":"","post_ids":"","tag_slug":"","autors_id":"","installed_post_types":"","category_id":"","category_ids":"","custom_title":"","custom_url":"","show_child_cat":"","sub_cat_ajax":"","ajax_pagination":"next_prev","header_color":"","header_text_color":"","ajax_pagination_infinite_stop":"","td_column_number":3,"td_ajax_preloading":"","td_ajax_filter_type":"td_custom_related","td_ajax_filter_ids":"","td_filter_default_txt":"\u0412\u0441\u0435","color_preset":"","border_top":"","class":"td_uid_3_5a236fb03c961_rand","el_class":"","offset":"","css":"","tdc_css":"","tdc_css_class":"td_uid_3_5a236fb03c961_rand","live_filter":"cur_post_same_categories","live_filter_cur_post_id":10046,"live_filter_cur_post_author":"694350","block_template_id":""} '; block_td_uid_3_5a236fb03c961.td_column_number = "3"; block_td_uid_3_5a236fb03c961.block_type = "td_block_related_posts"; block_td_uid_3_5a236fb03c961.post_count = "9"; block_td_uid_3_5a236fb03c961.found_posts = "26"; block_td_uid_3_5a236fb03c961.header_color = ""; block_td_uid_3_5a236fb03c961.ajax_pagination_infinite_stop = ""; block_td_uid_3_5a236fb03c961.max_num_pages = "3"; tdBlocksArray.push(block_td_uid_3_5a236fb03c961); </script><h4 class="td-related-title td-block-title"><a id="td_uid_4_5a236fb03e35d" class="td-related-left td-cur-simple-item" data-td_filter_value="" data-td_block_id="td_uid_3_5a236fb03c961" href="#">Similar articles</a></h4><div id=td_uid_3_5a236fb03c961 class="td_block_inner"> <div class="td-related-row"> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/perenos-nastroek-iphone-na-novyi-sposoby-perenosa-dannyh-s.html" rel="bookmark" title="Methods for transferring data from one iPhone to another iPhone"><img width="218" height="150" class="entry-thumb" src="/uploads/50a0b5480336144be0f1d1ecdfa15a5b.jpg" alt="Methods for transferring data from one iPhone to another iPhone" title="Methods for transferring data from one iPhone to another iPhone"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/en/category/processors/" class="td-post-category">Processors</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/perenos-nastroek-iphone-na-novyi-sposoby-perenosa-dannyh-s.html" rel="bookmark" title="Methods for transferring data from one iPhone to another iPhone">Methods for transferring data from one iPhone to another iPhone</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/blokirovka-aktivacii-iphone-5-kak-snyat-parol-bystryi-obhod.html" rel="bookmark" title="Quick Crawling IPad Activation"><img width="218" height="150" class="entry-thumb" src="/uploads/18838ec1f91e48279ac1947120c453e7.jpg" alt="Quick Crawling IPad Activation" title="Quick Crawling IPad Activation"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/en/category/the-winchesters/" class="td-post-category">Winchester</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/blokirovka-aktivacii-iphone-5-kak-snyat-parol-bystryi-obhod.html" rel="bookmark" title="Quick Crawling IPad Activation">Quick Crawling IPad Activation</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/kak-ochistit-istoriyu-na-aipad-kak-ochistit-istoriyu-v-safari-na-iphone-ipad-i-mac-kak.html" rel="bookmark" title="How to Clean Stories in Safari on iPhone, iPad and Mac"><img width="218" height="150" class="entry-thumb" src="/uploads/c35843ede0fa4d8127b9d98e79b6ac3b.jpg" alt="How to Clean Stories in Safari on iPhone, iPad and Mac" title="How to Clean Stories in Safari on iPhone, iPad and Mac"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/en/category/monitors/" class="td-post-category">Monitors</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/kak-ochistit-istoriyu-na-aipad-kak-ochistit-istoriyu-v-safari-na-iphone-ipad-i-mac-kak.html" rel="bookmark" title="How to Clean Stories in Safari on iPhone, iPad and Mac">How to Clean Stories in Safari on iPhone, iPad and Mac</a></h3> </div> </div> </div> </div> <div class="td-related-row"> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/kak-otklyuchit-faily-cookie-chto-takoe-faily-cookie-i-kak-s-nimi-rabotat-mogut-li.html" rel="bookmark" title="What are cookies and how to work with them?"><img width="218" height="150" class="entry-thumb" src="/uploads/cc75d1865f5980133f34840d2caf5ca4.jpg" alt="What are cookies and how to work with them?" title="What are cookies and how to work with them?"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/en/category/monitors/" class="td-post-category">Monitors</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/kak-otklyuchit-faily-cookie-chto-takoe-faily-cookie-i-kak-s-nimi-rabotat-mogut-li.html" rel="bookmark" title="What are cookies and how to work with them?">What are cookies and how to work with them?</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/sboi-aktivacii-iphone-nedostupen-server-ili-chto-to-pohuzhe.html" rel="bookmark" title="IPhone activation failure is an unavailable server or something worse?"><img width="218" height="150" class="entry-thumb" src="/uploads/6d97e44c5b70f1dee2f20e93cd34266c.jpg" alt="IPhone activation failure is an unavailable server or something worse?" title="IPhone activation failure is an unavailable server or something worse?"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/en/category/the-winchesters/" class="td-post-category">Winchester</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/sboi-aktivacii-iphone-nedostupen-server-ili-chto-to-pohuzhe.html" rel="bookmark" title="IPhone activation failure is an unavailable server or something worse?">IPhone activation failure is an unavailable server or something worse?</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/lineiki-napravlyayushchie-i-setka-v-fotoshope-osnovy-photoshop-ispolzovanie.html" rel="bookmark" title="Photoshop Basics: Using Mesh (Grid) in Photoshop How to make a grid in photoshop CS6"><img width="218" height="150" class="entry-thumb" src="/uploads/f26b20924c99d93d3ab44ec683de8053.jpg" alt="Photoshop Basics: Using Mesh (Grid) in Photoshop How to make a grid in photoshop CS6" title="Photoshop Basics: Using Mesh (Grid) in Photoshop How to make a grid in photoshop CS6"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/en/category/windows-7/" class="td-post-category">Windows 7.</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/lineiki-napravlyayushchie-i-setka-v-fotoshope-osnovy-photoshop-ispolzovanie.html" rel="bookmark" title="Photoshop Basics: Using Mesh (Grid) in Photoshop How to make a grid in photoshop CS6">Photoshop Basics: Using Mesh (Grid) in Photoshop How to make a grid in photoshop CS6</a></h3> </div> </div> </div> </div> <div class="td-related-row"> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/mediateka-icloud-ne-vklyuchaetsya-chto-takoe-mediateka-icloud-kak.html" rel="bookmark" title="What is the ICLOUD media library?"><img width="218" height="150" class="entry-thumb" src="/uploads/c4a9a21f6487cdd84cf6e87d5a030919.jpg" alt="What is the ICLOUD media library?" title="What is the ICLOUD media library?"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/en/category/processors/" class="td-post-category">Processors</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/mediateka-icloud-ne-vklyuchaetsya-chto-takoe-mediateka-icloud-kak.html" rel="bookmark" title="What is the ICLOUD media library?">What is the ICLOUD media library?</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/povorachivaetsya-ekran-iphone-5s-ne-povorachivaetsya-ekran-iphone-chto.html" rel="bookmark" title="The iPhone screen does not rotate, what to do?"><img width="218" height="150" class="entry-thumb" src="/uploads/2a6a73cd892c552df6a9069b3cd6dff5.jpg" alt="The iPhone screen does not rotate, what to do?" title="The iPhone screen does not rotate, what to do?"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/en/category/power-supply/" class="td-post-category">Power supplies</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/povorachivaetsya-ekran-iphone-5s-ne-povorachivaetsya-ekran-iphone-chto.html" rel="bookmark" title="The iPhone screen does not rotate, what to do?">The iPhone screen does not rotate, what to do?</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/kak-zaryazhat-nesertificirovannym-kabelem-vazhno-dannyi-kabel-ili.html" rel="bookmark" title="IMPORTANT This cable or accessory is not certified or not supported."><img width="218" height="150" class="entry-thumb" src="/uploads/9fcf7a35719c3615538760373497465f.jpg" alt="IMPORTANT This cable or accessory is not certified or not supported." title="IMPORTANT This cable or accessory is not certified or not supported."/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/en/category/internet/" class="td-post-category">the Internet</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/kak-zaryazhat-nesertificirovannym-kabelem-vazhno-dannyi-kabel-ili.html" rel="bookmark" title="IMPORTANT This cable or accessory is not certified or not supported.">IMPORTANT This cable or accessory is not certified or not supported.</a></h3> </div> </div> </div> </div></div></div> </div> </div> <div class="td-pb-span4 td-main-sidebar"> <div class="td-ss-main-sidebar"> <aside class="widget �lambda_169101"> <div style="margin:10px 0"> </div> </aside> <div class="td_block_wrap td_block_1 td_block_widget td_uid_2_5a23c04f0cdc0_rand td-pb-border-top td_block_template_1 td-column-1" data-td-block-uid="td_uid_2_5a23c04f0cdc0"> <div class="td-block-title-wrap"> <h4 class="block-title"><span class="td-pulldown-size">Recommended</span></h4> </div> <div id=td_uid_2_5a23c04f0cdc0 class="td_block_inner"> <div class="td-block-span12"> <div class="td_module_4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/postoyannyi-poisk-seti-iphone-5s-chto-delat-aifon-ne-lovit-set-sbroste.html" rel="bookmark" title="Constant search for iPhone 5S network what to do"><img width="324" height="235" class="entry-thumb" src="/uploads/435c71c094885371e74a89a9cb16148b.jpg" alt="Constant search for iPhone 5S network what to do" title="Constant search for iPhone 5S network what to do"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/en/category/monitors/" class="td-post-category">Monitors</a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/postoyannyi-poisk-seti-iphone-5s-chto-delat-aifon-ne-lovit-set-sbroste.html" rel="bookmark" title="Constant search for iPhone 5S network what to do">Constant search for iPhone 5S network what to do</a></h3> <div class="td-module-meta-info"> </div> <div class="td-excerpt"> Often, the Apple brand's smartphone does not connect to the Internet. There are different reasons for this problem, from the fault of the insides to the inaccurate ...</div> </div> <!-- /next_post --> </div> <div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/vosstanovit-parol-ot-icloud-bez-pochty-kak-vosstanovit-parol.html" rel="bookmark" title="How to recover password icloud - full procedure"><img width="100" height="70" class="entry-thumb" src="/uploads/cc0bdec1f5df546bb0984ef454380016.jpg" alt="How to recover password icloud - full procedure" title="How to recover password icloud - full procedure"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/vosstanovit-parol-ot-icloud-bez-pochty-kak-vosstanovit-parol.html" rel="bookmark" title="How to recover password icloud - full procedure">How to recover password icloud - full procedure</a></h3> <div class="td-module-meta-info"> <a href="https://obanracer.ru/en/category/security/" class="td-post-category">Safety</a> </div> </div> </div> </div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/istoriya-lineiki-smartfonov-apple-iphone-kak-razlichit-pokoleniya-iphone-est-li-aifon-1-i.html" rel="bookmark" title="How to distinguish generation iPhone Is there an iPhone 1 and 2"><img width="100" height="70" class="entry-thumb" src="/uploads/a13eaf26b4610103602c454699bec112.jpg" alt="How to distinguish generation iPhone Is there an iPhone 1 and 2" title="How to distinguish generation iPhone Is there an iPhone 1 and 2"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/istoriya-lineiki-smartfonov-apple-iphone-kak-razlichit-pokoleniya-iphone-est-li-aifon-1-i.html" rel="bookmark" title="How to distinguish generation iPhone Is there an iPhone 1 and 2">How to distinguish generation iPhone Is there an iPhone 1 and 2</a></h3> <div class="td-module-meta-info"> <a href="https://obanracer.ru/en/category/power-supply/" class="td-post-category">Power supplies</a> </div> </div> </div> </div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/telefon-iphone-6-bez-otpechatka-palca-chto-znachit-aifon-bez-touch-id-nerabochaya.html" rel="bookmark" title="What does iPhone mean without touch id"><img width="100" height="70" class="entry-thumb" src="/uploads/57a4a2015ce25e7fb6c746a51494d825.jpg" alt="What does iPhone mean without touch id" title="What does iPhone mean without touch id"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/telefon-iphone-6-bez-otpechatka-palca-chto-znachit-aifon-bez-touch-id-nerabochaya.html" rel="bookmark" title="What does iPhone mean without touch id">What does iPhone mean without touch id</a></h3> <div class="td-module-meta-info"> <a href="https://obanracer.ru/en/category/power-supply/" class="td-post-category">Power supplies</a> </div> </div> </div> </div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/ustanovka-tach-aidi-na-aifone-6-chto-delat-esli-touch-id-ne-rabotaet-v-app-store-prostoi.html" rel="bookmark" title="What if the Touch ID does not work in the App Store?"><img width="100" height="70" class="entry-thumb" src="/uploads/5d0ac8f7390323bf98825d36383f6459.jpg" alt="What if the Touch ID does not work in the App Store?" title="What if the Touch ID does not work in the App Store?"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/ustanovka-tach-aidi-na-aifone-6-chto-delat-esli-touch-id-ne-rabotaet-v-app-store-prostoi.html" rel="bookmark" title="What if the Touch ID does not work in the App Store?">What if the Touch ID does not work in the App Store?</a></h3> <div class="td-module-meta-info"> <a href="https://obanracer.ru/en/category/ram/" class="td-post-category">RAM</a> </div> </div> </div> </div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/zabyli-svoi-identifikator-ili-parol-uznaem-zabytyi-apple-id-otvechaem-na.html" rel="bookmark" title="Forgot your identifier or password"><img width="100" height="70" class="entry-thumb" src="/uploads/894d819f1f6975e91f06e4f0d4657f59.jpg" alt="Forgot your identifier or password" title="Forgot your identifier or password"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/zabyli-svoi-identifikator-ili-parol-uznaem-zabytyi-apple-id-otvechaem-na.html" rel="bookmark" title="Forgot your identifier or password">Forgot your identifier or password</a></h3> <div class="td-module-meta-info"> <a href="https://obanracer.ru/en/category/power-supply/" class="td-post-category">Power supplies</a> </div> </div> </div> </div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/kornei-chukovskii-telefon-u-menya-zazvonil-telefon-stih-stihotvorenie.html" rel="bookmark" title="Poem"телефон" чуковский корней иванович Загадки про мобильный телефон"><img width="100" height="70" class="entry-thumb" src="/uploads/2edc2cfdca1b56efbd1f9d526a925bd8.jpg" alt="Poem"телефон" чуковский корней иванович Загадки про мобильный телефон" title="Poem"телефон" чуковский корней иванович Загадки про мобильный телефон"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/kornei-chukovskii-telefon-u-menya-zazvonil-telefon-stih-stihotvorenie.html" rel="bookmark" title="Poem"телефон" чуковский корней иванович Загадки про мобильный телефон">Poem "Phone" Chukovsky Korean Ivanovich Riddles about Mobile Phone</a></h3> <div class="td-module-meta-info"> <a href="https://obanracer.ru/en/category/windows-8/" class="td-post-category">Windows 8.</a> </div> </div> </div> </div> </div> </div> </div> <aside class="widget_text td_block_template_1 widget widget_custom_html"> <div class="textwidget custom-html-widget"> </div> </aside> </div> </div> </div> </div> </div> <div class="td-footer-wrapper td-container-wrap "> <div class="td-container"> <div class="td-pb-row"> <div class="td-pb-span12"> </div> </div> <div class="td-pb-row"> <div class="td-pb-span4"> <div class="td_block_wrap td_block_15 td_block_widget td_uid_11_5a23980e76adb_rand td-pb-border-top td_block_template_1 td-column-1 td_block_padding" data-td-block-uid="td_uid_11_5a23980e76adb" > <div class="td-block-title-wrap"></div><div id=td_uid_11_5a23980e76adb class="td_block_inner td-column-1"><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/kak-vklyuchaetsya-wifi-na-noutbukah-kak-vklyuchit-vai-fai-na-noutbuke-knopka.html" rel="bookmark" title="How to enable Wi Fi on a laptop Wi-Fi Connection Button on a DNS Laptop"><img width="218" height="150" class="entry-thumb" src="/uploads/6bf674fa0e1f5e722386b4c61d92ca0b.jpg" alt="How to enable Wi Fi on a laptop Wi-Fi Connection Button on a DNS Laptop" title="How to enable Wi Fi on a laptop Wi-Fi Connection Button on a DNS Laptop"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/kak-vklyuchaetsya-wifi-na-noutbukah-kak-vklyuchit-vai-fai-na-noutbuke-knopka.html" rel="bookmark" title="How to enable Wi Fi on a laptop Wi-Fi Connection Button on a DNS Laptop">How to enable Wi Fi on a laptop Wi-Fi Connection Button on a DNS Laptop</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/skazka-i-ego-nazvanie-pro-robota-skazka-pro-robota-barri--.html" rel="bookmark" title="Tale about Robot Barry - Cruise"><img width="218" height="150" class="entry-thumb" src="/uploads/35cf1310029e7e8e3a27bf39e7526b49.jpg" alt="Tale about Robot Barry - Cruise" title="Tale about Robot Barry - Cruise"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/skazka-i-ego-nazvanie-pro-robota-skazka-pro-robota-barri--.html" rel="bookmark" title="Tale about Robot Barry - Cruise">Tale about Robot Barry - Cruise</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/sozdanie-obraza-windows-8-rezervnaya-kopiya-obraza-sistemy.html" rel="bookmark" title="Backup System Image"><img width="218" height="150" class="entry-thumb" src="/uploads/8eecd3a2456d5f2ac7ae805a99874633.jpg" alt="Backup System Image" title="Backup System Image"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/sozdanie-obraza-windows-8-rezervnaya-kopiya-obraza-sistemy.html" rel="bookmark" title="Backup System Image">Backup System Image</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/versii-fotoshop-opisanie-i-osobennosti-obshchaya-harakteristika-i-funkcionalnye-vozmozhnosti-programmy.html" rel="bookmark" title="General Characteristics and Functional Features Adobe Photoshop Photoshop Photoshop Software Description"><img width="218" height="150" class="entry-thumb" src="/uploads/d0abdf82c0cbf80398ab94ed5e2fc762.jpg" alt="General Characteristics and Functional Features Adobe Photoshop Photoshop Photoshop Software Description" title="General Characteristics and Functional Features Adobe Photoshop Photoshop Photoshop Software Description"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/versii-fotoshop-opisanie-i-osobennosti-obshchaya-harakteristika-i-funkcionalnye-vozmozhnosti-programmy.html" rel="bookmark" title="General Characteristics and Functional Features Adobe Photoshop Photoshop Photoshop Software Description">General Characteristics and Functional Features Adobe Photoshop Photoshop Photoshop Software Description</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/sozdat-disk-vosstanovleniya-dlya-windows-8-1-sozdanie-obraza.html" rel="bookmark" title="Create a recovery disc for Windows 8"><img width="218" height="150" class="entry-thumb" src="/uploads/1ebb5cad83283edf5756386d5d9773ae.jpg" alt="Create a recovery disc for Windows 8" title="Create a recovery disc for Windows 8"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/sozdat-disk-vosstanovleniya-dlya-windows-8-1-sozdanie-obraza.html" rel="bookmark" title="Create a recovery disc for Windows 8">Create a recovery disc for Windows 8</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/kak-sdelat-skrinshot-ekrana-programmoi-nozhnicy-kak-obrezat-skrinshoty.html" rel="bookmark" title="How to make screen screenshot scissors"><img width="218" height="150" class="entry-thumb" src="/uploads/4c6864016d0685f336895a89f0d2d70f.jpg" alt="How to make screen screenshot scissors" title="How to make screen screenshot scissors"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/kak-sdelat-skrinshot-ekrana-programmoi-nozhnicy-kak-obrezat-skrinshoty.html" rel="bookmark" title="How to make screen screenshot scissors">How to make screen screenshot scissors</a></h3> </div> </div> </div></div></div> <div class="clearfix"></div> </div> <div class="td-pb-span4"> <div class="td_block_wrap td_block_15 td_block_widget td_uid_12_5a23980e79990_rand td-pb-border-top td_block_template_1 td-column-1 td_block_padding" data-td-block-uid="td_uid_12_5a23980e79990" > <div class="td-block-title-wrap"></div><div id=td_uid_12_5a23980e79990 class="td_block_inner td-column-1"><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/kak-sdelat-nadstrochnyi-znak-v-vorde-dobavlenie-indeksov-i-stepenei-v.html" rel="bookmark" title="Adding indexes and degrees in Word"><img width="218" height="150" class="entry-thumb" src="/uploads/5a6d1108c022829f15ff7b50340bbdcc.jpg" alt="Adding indexes and degrees in Word" title="Adding indexes and degrees in Word"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/kak-sdelat-nadstrochnyi-znak-v-vorde-dobavlenie-indeksov-i-stepenei-v.html" rel="bookmark" title="Adding indexes and degrees in Word">Adding indexes and degrees in Word</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/kaspersky-klyuchi-na-mesyac-svezhie-klyuchi-i-kody-aktivacii-dlya-kasperskogo-kts-kav-kis.html" rel="bookmark" title="Fresh keys and activation codes for Kaspersky (KTS KAV KEY)"><img width="218" height="150" class="entry-thumb" src="/uploads/181dfd1ba96ddb743918272663f3c494.jpg" alt="Fresh keys and activation codes for Kaspersky (KTS KAV KEY)" title="Fresh keys and activation codes for Kaspersky (KTS KAV KEY)"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/kaspersky-klyuchi-na-mesyac-svezhie-klyuchi-i-kody-aktivacii-dlya-kasperskogo-kts-kav-kis.html" rel="bookmark" title="Fresh keys and activation codes for Kaspersky (KTS KAV KEY)">Fresh keys and activation codes for Kaspersky (KTS KAV KEY)</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/vyklyuchenie-zvuka-pri-vklyuchenii-kompyutera-otklyuchit-privetstvie.html" rel="bookmark" title="Disable Windows greeting how to turn off a music greeting when you turn on"><img width="218" height="150" class="entry-thumb" src="/uploads/7c620fcf8306b5cedea591d60865fbf0.jpg" alt="Disable Windows greeting how to turn off a music greeting when you turn on" title="Disable Windows greeting how to turn off a music greeting when you turn on"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/vyklyuchenie-zvuka-pri-vklyuchenii-kompyutera-otklyuchit-privetstvie.html" rel="bookmark" title="Disable Windows greeting how to turn off a music greeting when you turn on">Disable Windows greeting how to turn off a music greeting when you turn on</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/kak-otkryt-fail-zip-rar-iso-raspakovyvaem-arhivatorom-i-bez-nego-kak.html" rel="bookmark" title="How to open a zip file, rar, ISO - unpack the archiver and without it"><img width="218" height="150" class="entry-thumb" src="/uploads/fb001f49da210b3abbd6ad404c65d9cc.jpg" alt="How to open a zip file, rar, ISO - unpack the archiver and without it" title="How to open a zip file, rar, ISO - unpack the archiver and without it"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/kak-otkryt-fail-zip-rar-iso-raspakovyvaem-arhivatorom-i-bez-nego-kak.html" rel="bookmark" title="How to open a zip file, rar, ISO - unpack the archiver and without it">How to open a zip file, rar, ISO - unpack the archiver and without it</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/kak-uvelichit-gromkost-na-soni-iksperiya-z-kak-uvelichit.html" rel="bookmark" title="How to increase the speaker volume on android?"><img width="218" height="150" class="entry-thumb" src="/uploads/168d112a11b7db11e9c6dc43b8c6240e.jpg" alt="How to increase the speaker volume on android?" title="How to increase the speaker volume on android?"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/kak-uvelichit-gromkost-na-soni-iksperiya-z-kak-uvelichit.html" rel="bookmark" title="How to increase the speaker volume on android?">How to increase the speaker volume on android?</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/ustanovka-storonnih-prilozhenii-na-windows-phone-8-1-kak-ustanovit-igry-i.html" rel="bookmark" title="Installing third-party applications on Windows Phone 8"><img width="218" height="150" class="entry-thumb" src="/uploads/9832e7ea5a32e85cc79a23716b0b8f96.jpg" alt="Installing third-party applications on Windows Phone 8" title="Installing third-party applications on Windows Phone 8"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/ustanovka-storonnih-prilozhenii-na-windows-phone-8-1-kak-ustanovit-igry-i.html" rel="bookmark" title="Installing third-party applications on Windows Phone 8">Installing third-party applications on Windows Phone 8</a></h3> </div> </div> </div></div></div> <div class="clearfix"></div> </div> <div class="td-pb-span4"> <div class="td_block_wrap td_block_15 td_block_widget td_uid_13_5a23980e7caa8_rand td-pb-border-top td_block_template_1 td-column-1 td_block_padding" data-td-block-uid="td_uid_13_5a23980e7caa8" > <div class="td-block-title-wrap"></div><div id=td_uid_13_5a23980e7caa8 class="td_block_inner td-column-1"><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/chto-takoe-centr-soobshchenii-tele2-nomer-sms-centra-tele2-opredelenie.html" rel="bookmark" title="What is a telephone message center2"><img width="218" height="150" class="entry-thumb" src="/uploads/1747c946b6509bd87818f51ab456fb4d.jpg" alt="What is a telephone message center2" title="What is a telephone message center2"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/chto-takoe-centr-soobshchenii-tele2-nomer-sms-centra-tele2-opredelenie.html" rel="bookmark" title="What is a telephone message center2">What is a telephone message center2</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/kak-udalit-v-telefone-kontakty-alcatel-mozhno-li-vostanovit-propavshie.html" rel="bookmark" title="Is it possible to restore missing or remote contacts on Alcatel and similar android devices"><img width="218" height="150" class="entry-thumb" src="/uploads/e8118dcb48d187503731a0e56c203e8b.jpg" alt="Is it possible to restore missing or remote contacts on Alcatel and similar android devices" title="Is it possible to restore missing or remote contacts on Alcatel and similar android devices"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/kak-udalit-v-telefone-kontakty-alcatel-mozhno-li-vostanovit-propavshie.html" rel="bookmark" title="Is it possible to restore missing or remote contacts on Alcatel and similar android devices">Is it possible to restore missing or remote contacts on Alcatel and similar android devices</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/sony-xperia-z5-oficialnaya-proshivka-process-sozdaniya-proshivki-s.html" rel="bookmark" title="The process of creating the firmware using FlashTool"><img width="218" height="150" class="entry-thumb" src="/uploads/4c237cb6039b9c073c45ffd6f783dee3.jpg" alt="The process of creating the firmware using FlashTool" title="The process of creating the firmware using FlashTool"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/sony-xperia-z5-oficialnaya-proshivka-process-sozdaniya-proshivki-s.html" rel="bookmark" title="The process of creating the firmware using FlashTool">The process of creating the firmware using FlashTool</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/mobilnyi-telefon-sony-xperia-e4-dual-obzor-obzor-sony-xperia-e4-dostupnaya-model-v.html" rel="bookmark" title="Sony Xperia E4 Review: Available Model in New Design"><img width="218" height="150" class="entry-thumb" src="/uploads/471d2c1c970a09f24477aec9c5ccb420.jpg" alt="Sony Xperia E4 Review: Available Model in New Design" title="Sony Xperia E4 Review: Available Model in New Design"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/mobilnyi-telefon-sony-xperia-e4-dual-obzor-obzor-sony-xperia-e4-dostupnaya-model-v.html" rel="bookmark" title="Sony Xperia E4 Review: Available Model in New Design">Sony Xperia E4 Review: Available Model in New Design</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/proshivka-zte-v815w-proshivka-telefona-smartfona-i-plansheta-zte-kakie.html" rel="bookmark" title="Phone Firmware, Smartphone and ZTE Tablet Which Components are needed for the ZTE V815W firmware"><img width="218" height="150" class="entry-thumb" src="/uploads/05361326af4ec1adcf167448b07abc2d.jpg" alt="Phone Firmware, Smartphone and ZTE Tablet Which Components are needed for the ZTE V815W firmware" title="Phone Firmware, Smartphone and ZTE Tablet Which Components are needed for the ZTE V815W firmware"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/proshivka-zte-v815w-proshivka-telefona-smartfona-i-plansheta-zte-kakie.html" rel="bookmark" title="Phone Firmware, Smartphone and ZTE Tablet Which Components are needed for the ZTE V815W firmware">Phone Firmware, Smartphone and ZTE Tablet Which Components are needed for the ZTE V815W firmware</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/en/ne-vklyuchaetsya-telefon-lenovo-telefon-lenovo-ne-vklyuchaetsya-lenovo-vaib.html" rel="bookmark" title="Lenovo phone does not turn on Lenovo Waib Shot does not turn on what to do"><img width="218" height="150" class="entry-thumb" src="/uploads/97624fc3e2ace641c6d79beb06ab72a4.jpg" alt="Lenovo phone does not turn on Lenovo Waib Shot does not turn on what to do" title="Lenovo phone does not turn on Lenovo Waib Shot does not turn on what to do"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/en/ne-vklyuchaetsya-telefon-lenovo-telefon-lenovo-ne-vklyuchaetsya-lenovo-vaib.html" rel="bookmark" title="Lenovo phone does not turn on Lenovo Waib Shot does not turn on what to do">Lenovo phone does not turn on Lenovo Waib Shot does not turn on what to do</a></h3> </div> </div> </div></div></div> <div class="clearfix"></div><aside class="td_block_template_1 widget widget_text"> <div class="textwidget"> </div> </aside><aside class="td_block_template_1 widget widget_text"> <div class="textwidget"> </div> </aside> </div> </div> </div> </div> <div class="td-sub-footer-container td-container-wrap "> <div class="td-container"> <div class="td-pb-row"> <div class="td-pb-span td-sub-footer-menu"> </div> <div class="td-pb-span td-sub-footer-copy"> Copyright 2021 - repair of computers and laptops. Video cards, hard drives, internet, monitors.</div> </div> </div> </div> </div> <style type="text/css" media="screen"> /* custom css theme panel */ .td-post-header .entry-title { font-weight: normal !important; } h1.entry-title { font-weight: normal !important; border-bottom:#c44c4c 2px dotted; } h1.entry-title:before { content: "\f184"; font-family: "FontAwesome"; margin-right:10px; color:#c44c4c; } .sf-menu ul .td-menu-item > a:hover, .sf-menu ul .sfHover > a, .sf-menu ul .current-menu-ancestor > a, .sf-menu ul .current-category-ancestor > a, .sf-menu ul .current-menu-item > a { color: #edf3f7; } .td-post-content h2 { border-bottom:#c44c4c 2px dotted;} .td-post-content h2:before { content: "\f184"; font-family: "FontAwesome"; margin-right:10px; color:#c44c4c; } .td-post-content h3 { border-bottom:#c44c4c 2px dotted;} .td-post-content h3:before { content: "\f103"; font-family: "FontAwesome"; margin-right:10px; color:#c44c4c; } .category-my .td-page-title { color:#c44c4c; font-weight: 400; font-size: 36px; } .post header .entry-title { line-height: 40px; } .td-category-description h2, .td-category-description h3 { color:#c44c4c;} .td-category-description h2 { border-bottom:#c44c4c 2px solid;} .td-category-description h2:before { content: "\f055"; font-family: "FontAwesome"; margin-right:10px; color:#c44c4c; } .td-category-description h3 { border-bottom:#c44c4c 2px solid;} .td-category-description h3:before { content: "\f103"; font-family: "FontAwesome"; margin-right:10px; color:#c44c4c; } .td-category-description ol, .td-category-description ul { margin-top:20px !important; margin-bottom:20px !important;} .td-category-description ul, .td-post-content ul { padding:0; margin:0; list-style:none; clear:both;} .td-category-description ul li, .td-post-content ul li { padding:0 0 0 15px; margin:0 0 10px 35px; position:relative;} .td-category-description ul li:before, .td-post-content ul li:before { content: "\f192"; font-family: "FontAwesome"; color:#c44c4c; position:absolute; left:-10px;} .td-category-description ol, .td-post-content ol { padding:0; margin:0 0 0 5px; list-style:none; counter-reset: lipoint; clear:both;} .td-category-description ol li, .td-post-content ol li { padding:0 0 0 15px; margin:0 0 10px 35px; position:relative;} .td-category-description ol li:before, .td-post-content ol li:before { content: counter(lipoint); counter-increment: lipoint; color:#fff; position:absolute; left:-16px; background:#c44c4c; width:20px; height:20px; line-height:20px; text-align:center; -webkit-border-radius: 20px;border-radius: 20px; font-size:12px; top:3px;} .toc_list li:before { display:none} .td-header-style-9 .td-header-menu-wrap-full { /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#c44c4c+0,c10000+100 */ background: #c44c4c; /* Old browsers */ background: -moz-linear-gradient(top, #c44c4c 0%, #c10000 100%); /* FF3.6-15 */ background: -webkit-linear-gradient(top, #c44c4c 0%,#c10000 100%); /* Chrome10-25,Safari5.1-6 */ background: linear-gradient(to bottom, #c44c4c 0%,#c10000 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#c44c4c', endColorstr='#c10000',GradientType=0 ); /* IE6-9 */ } .sf-menu > li > a { color: #fff; } .td-header-style-9 .header-search-wrap .td-icon-search { color: #fff; } .td-affix a { color:#000 !important;} </style> <script type='text/javascript'> /* <![CDATA[ */ var tocplus = { "smooth_scroll":"1"} ; /* ]]> */ </script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/table-of-contents-plus/front.min.js'></script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/wp-postratings/js/postratings-js.js'></script> <script type='text/javascript' src='https://obanracer.ru/wp-content/themes/Newspaper/js/tagdiv_theme.js'></script> <script type='text/javascript' src='/wp-includes/js/comment-reply.min.js'></script> <script type='text/javascript'> /* <![CDATA[ */ var boxzilla_options = { "testMode":"","boxes":[]} ; /* ]]> */ </script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/boxzilla/assets/js/script.min.js'></script> <script type='text/javascript' src='/wp-includes/js/wp-embed.min.js'></script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/simple-lightbox/client/js/prod/lib.core.js'></script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/simple-lightbox/client/js/prod/lib.view.js'></script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/simple-lightbox/themes/baseline/js/prod/client.js'></script> <script type='text/javascript' src='/assets/client1.js'></script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/simple-lightbox/template-tags/item/js/prod/tag.item.js'></script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/simple-lightbox/template-tags/ui/js/prod/tag.ui.js'></script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/simple-lightbox/content-handlers/image/js/prod/handler.image.js'></script> <script> (function(){ var html_jquery_obj = jQuery('html'); if (html_jquery_obj.length && (html_jquery_obj.is('.ie8') || html_jquery_obj.is('.ie9'))) { var path = '/wp-content/themes/Newspaper/style.css'; jQuery.get(path, function(data) { var str_split_separator = '#td_css_split_separator'; var arr_splits = data.split(str_split_separator); var arr_length = arr_splits.length; if (arr_length > 1) { var dir_path = '/wp-content/themes/Newspaper'; var splited_css = ''; for (var i = 0; i < arr_length; i++) { if (i > 0) { arr_splits[i] = str_split_separator + ' ' + arr_splits[i]; } //jQuery('head').append('<style>' + arr_splits[i] + '</style>'); var formated_str = arr_splits[i].replace(/\surl\(\'(?!data\:)/gi, function regex_function(str) { return ' url(\'' + dir_path + '/' + str.replace(/url\(\'/gi, '').replace(/^\s+|\s+$/gm,''); } ); splited_css += "<style>" + formated_str + "</style>"; } var td_theme_css = jQuery('link#td-theme-css'); if (td_theme_css.length) { td_theme_css.after(splited_css); } } } ); } } )(); </script> </body> </html>