XML Belge Nesne Modelini Kullanma. İnternet rehberi - internetteki tüm eğlence Bir delphi xml dosyası nasıl oluşturulur

XML, bilgileri depolamak ve uygulamalar ile Web siteleri arasında değiş tokuş etmek için giderek daha fazla kullanılmaktadır. Birçok uygulama bu dili veri depolamak için temel dil olarak kullanırken, diğerleri bunu XML verilerini dışa ve içe aktarmak için kullanır. Bu nedenle, geliştiricilerin XML verilerinin kendi uygulamalarında nasıl kullanılabileceğini düşünmelerinin zamanı geldi.

Bu yazıda, XML Belge Nesne Modeli (DOM) ve Microsoft'un XML DOM uygulamasını inceleyeceğiz.

XML DOM, bir geliştiriciye XML dosyalarını yüklemek ve işlemek için nesneler sağlayan bir nesne modelidir. Nesne modeli şu temel nesnelerden oluşur: XMLDOMDocument, XMLDOMNodeList, XMLDOMNode, XMLDOMNamedNodeMap ve XMLDOMParseError. Bu nesnelerin her biri (XMLDOMParseError hariç), nesne hakkında bilgi almanıza, nesnenin değerlerini ve yapısını değiştirmenize ve bir XML belgesinin yapısında gezinmenize izin veren özellikler ve yöntemler içerir.

Ana XML DOM nesnelerine bakalım ve Borland Delphi'deki kullanımlarına ilişkin bazı örnekler gösterelim.

Borland Delphi'de XML DOM Kullanımı

Delphi uygulamalarında Microsoft XML DOM kullanmak için projeye uygun tip kütüphanesini bağlamanız gerekmektedir. Bunu yapmak için Project | Tip Kitaplığını Al ve Tip Kitaplığını Al iletişim kutusunda, genellikle Windows \ System \ MSXML.DLL dosyasında bulunan Microsoft XML sürüm 2.0 (Sürüm 2.0) kitaplığını seçin.

Birim Oluştur düğmesine tıkladıktan sonra, XML DOM nesnelerini kullanmamıza izin verecek olan MSXML_TLB arabirim modülü oluşturulacaktır: DOMDocument, XMLDocument, XMLHTTPRequest ve MSXML.DLL kitaplığında uygulanan diğerleri. MSXML_TLB modülüne yapılan başvuru Kullanımlar listesinde olmalıdır.

XML DOM cihazı

Belge Nesne Modeli, dallardan oluşan bir ağaç yapısında bir XML belgesini temsil eder. XML DOM API'leri, uygulamaların belge ağacında gezinmesine ve dallarını değiştirmesine olanak tanır. Her dal, üst ve alt dalların belirlendiği belirli bir türe (DOMNodeType) sahip olabilir. Çoğu XML belgesi, tür öğesi, nitelik ve metin dalları içerir. Nitelikler özel bir dal türüdür ve alt dallar değildir. Nitelikleri yönetmek için şunu kullanın: özel yöntemler XML DOM nesneleri tarafından sağlanır.

Microsoft XML DOM, World Wide Web Consortium (W3C) tarafından önerilen arabirimleri uygulamaya ek olarak, XSL, XSL Modelleri, Ad Alanları ve veri türlerini destekleyen yöntemler içerir. Örneğin, SelectNodes yöntemi, belirli bir bağlamda dalları bulmak için XSL Model Sözdizimini kullanmanıza izin verir ve TransformNode yöntemi, dönüşümleri gerçekleştirmek için XSL kullanımını destekler.

XML Belgesini Test Et

Örnek bir XML belgesi olarak, aşağıdaki yapıya sahip bir müzik CD-ROM dizinini ele alalım:

imparatorluk burlesk Bob Dylan Amerika Birleşik Devletleri Kolombiya 10.90 1985 kalbini sakla bonnie tylor Birleşik Krallık CBS Kayıtları 9.90 1988 ... Kalbimi özgür bırak Joe cocker Amerika Birleşik Devletleri EMI 8.20 1987

Artık XMLDOMDocument nesnesinden başlayarak XML DOM nesne modeline bakmaya hazırız.

XML Belgesi - XMLDOMDocument Nesnesi

Bir XML belgesiyle çalışmak, onu yüklemekle başlar. Bunu yapmak için, yüklenen belgenin URL'sini belirten yalnızca bir parametreye sahip olan Load yöntemini kullanıyoruz. Dosyaları yerel bir diskten yüklerken, yalnızca tam dosya adı belirtilir (bu durumda dosya: /// protokolü atlanabilir). XML belgesi bir dize olarak saklanıyorsa, belgeyi yüklemek için LoadXML yöntemini kullanın.

Async özelliği, belgenin nasıl yüklendiğini (eşzamanlı veya eşzamansız) kontrol etmek için kullanılır. Varsayılan olarak bu özellik, belgenin eşzamansız olarak yüklendiğini ve belge tamamen yüklenmeden önce kontrolün uygulamaya döndürüldüğünü belirten True olarak ayarlanır. Aksi takdirde, belge eşzamanlı olarak yüklenir ve ardından belgenin yüklenip yüklenmediğini görmek için ReadyState özelliğinin değerini kontrol etmeniz gerekir. Ayrıca, ReadyState özelliğinin değeri değiştiğinde denetimi devralacak OnReadyStateChange olayı için bir olay işleyicisi de oluşturabilirsiniz.

Aşağıdakiler, Load yöntemi kullanılarak bir XML belgesinin nasıl yükleneceğini gösterir:

Kullanır ... MSXML_TLB ... prosedürü TForm1.Button1Click (Gönderen: TObject); var XMLDoc: IXMLDOMDocument; XMLDoc'u başlat: = CoDOMDocument.Create; XMLDoc.Async: = Yanlış; XMLDoc.Load ('C: \ DATA \ DATA.xml'); // // XML belgesini ve dallarını yöneten kodun // XMLDoc: = Nil; son;

Belge yüklendikten sonra özelliklerine erişebiliriz. Böylece, NodeName özelliği #document değerini içerecek, NodeTypeString özelliği belge değerini içerecek ve URL özelliği şu dosyayı içerecek: /// C: /DATA/DATA.xml değeri.

Hata yönetimi

Özellikle ilgi çekici olan, yükleme üzerine belge işleme ile ilgili özelliklerdir. Örneğin, ParseError özelliği, belge işlenirken oluşan bir hata hakkında bilgi içeren bir XMLDOMParseError nesnesi döndürür.

Bir hata işleyicisi yazmak için aşağıdaki kodu ekleyebilirsiniz:

Var XMLError: IXMLDOMParseError; ... XMLDoc.Load ('C: \ DATA \ DATA.xml'); XMLError: = XMLDoc.ParseError; XMLError.ErrorCode ise<>0 Sonra // // Burada hatayı işliyoruz // Else Memo1.Lines.Add (XMLDoc.XML); ... XMLDoc: = Sıfır;

Bir hata durumunda hangi bilgilerin döndürüldüğünü öğrenmek için aşağıdaki dizin girişini değiştirin:

imparatorluk burlesk Bob Dylan Amerika Birleşik Devletleri Kolombiya 10.90 1985

kapatma elemanının çıkarılması ikinci satırda:</p><p> <CD> <TITLE>imparatorluk burlesk <ARTIST>Bob Dylan</ARTIST> <COUNTRY>Amerika Birleşik Devletleri</COUNTRY> <COMPANY>Kolombiya</COMPANY> <PRICE>10.90</PRICE> <YEAR>1985</YEAR> </CD> </p><p>Şimdi XMLDOMParseError nesnesinin özellik değerlerini döndüren bir kod yazalım:</p><p>XMLError: = XMLDoc.ParseError; XMLError.ErrorCode ise<>0 Sonra XMLError ile, Memo1.Lines Ekle'ye başlar ('Dosya:' + URL); Ekle ('Kod:' + IntToStr (HataKodu)); Ekle ('Hata:' + Sebep); Ekle ('Metin:' + Kaynak Metin); Ekle ('Satır:' + IntToStr (Satır)); Ekle ('Konum:' + IntToStr (LinePos)); Else Memo1.Lines.Add'i sonlandırın (XMLDoc.XML); Son;</p><p>ve uygulamamızı çalıştırın. Sonuç olarak, hata hakkında aşağıdaki bilgileri alıyoruz.</p> <p>Yukarıdaki örnekten de görebileceğiniz gibi, XMLDOMParseError nesnesi tarafından döndürülen bilgiler, hatayı yerelleştirmek ve oluşma nedenini anlamak için oldukça yeterlidir.</p> <p>Şimdi kapatma elemanını geri yükleyeceğiz <TITLE>belgemizde ve XML DOM tartışmamıza devam edin.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2>Belge ağacına erişme</h2> <p>Belge ağacına erişmek için ya kök öğeyi alabilir ve ardından alt dalları üzerinde yineleyebilir ya da belirli bir dalı bulabilirsiniz. İlk durumda, XMLDOMNode türünde bir nesne döndüren DocumentElement özelliği aracılığıyla kök öğeyi alırız. Her alt öğenin içeriğini almak için DocumentElement özelliğini nasıl kullanacağınız aşağıda açıklanmıştır:</p><p>Var Düğüm: IXMLDOMNode; Kök: IXMLDOMElement; Ben: Tamsayı; ... Kök: = XMLDoc.DocumentElement; I için: = 0 - Root.ChildNodes.Length-1 do Begin Node: = Root.ChildNodes.Item [I]; Memo1.Lines.Add (Düğüm.Metin); Son;</p><p>XML belgemiz için aşağıdaki metni alıyoruz.</p> <p>Belirli bir dalla veya ilk alt dalın altındaki bir dalla ilgileniyorsak, XMLDOMDocument nesnesinin NodeFromID yöntemini veya GetElementByTagName yöntemini kullanabiliriz.</p> <p>NodeFromID yöntemi, XML Şemasında veya Belge Türü Tanımında (DTD) tanımlandığı gibi benzersiz bir tanımlayıcı gerektirir ve bu tanımlayıcıyla bir dal döndürür.</p> <p>GetElementByTagName yöntemi, belirli bir öğeye (etiket) sahip bir dize gerektirir ve bu öğeye sahip tüm dalları döndürür. CD-ROM dizinimizde bulunan tüm sanatçıları bulmak için bu yöntemi nasıl kullanacağınız aşağıda açıklanmıştır:</p><p>Düğümler: IXMLDOMNodeList; Düğüm: IXMLDOMNode; ... Düğümler: = XMLDoc.GetElementsByTagName ('ARTIST'); I için: = 0 - Nodes.Length-1 do Begin Node: = Nodes.Item [I]; Memo1.Lines.Add (Düğüm.Metin); Son;</p><p>XML belgemiz için aşağıdaki metni alacağız</p> <p>XMLDOMNode nesnesinin SelectNodes yönteminin, belge dallarına erişmek için daha esnek bir yol sağladığını unutmayın. Ama daha fazlası aşağıda.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2>Belge Dalı - XMLDOMNode Nesnesi</h2> <p>XMLDOMNode nesnesi bir belge dalını temsil eder. Belgenin kök öğesini aldığımızda bu nesneyle zaten karşılaştık:</p><p>Kök: = XMLDoc.DocumentElement;</p><p>Bir XML belgesinin bir dalı hakkında bilgi almak için XMLDOMNode nesnesinin özelliklerini kullanabilirsiniz (Tablo 1).</p> <p>Bir dalda depolanan verilere erişmek için, yaygın olarak ya NodeValue özelliği (öznitelikler, metin dalları, yorumlar, işleme talimatları ve CDATA bölümleri için kullanılabilir) ya da dalın metin içeriğini döndüren Text özelliği kullanılır. veya NodeTypedValue özelliği. Ancak ikincisi, yalnızca yazılan öğelere sahip dallar için kullanılabilir.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h3>Belge ağacında gezinme</h3> <p>XMLDOMNode nesnesi, belge ağacında gezinmek için birçok yol sağlar. Örneğin, üst dala erişmek için ParentNode özelliğini (XMLDOMNode türü) kullanın, alt dallara ChildNodes özellikleri (XMLDOMNodeList türü), FirstChild ve LastChild (XMLDOMNode türü) vb. aracılığıyla erişin. OwnerDocument özelliği, XML belgesinin kendisini tanımlayan bir XMLDOMDocument nesnesi döndürür. Yukarıda listelenen özellikler, belge ağacında gezinmeyi kolaylaştırır.</p> <p>Şimdi XML belgesinin tüm dalları arasında dolaşalım:</p><p>Kök: = XMLDoc.DocumentElement; I için: = 0 - Root.ChildNodes.Length-1 do Begin Node: = Root.ChildNodes.Item [I]; Node.HasChildNodes ise GetChilds (Node, 0); Son;</p><p>Yukarıda belirtildiği gibi, XMLDOMNode nesnesinin SelectNodes'u, belge dallarına erişmek için daha esnek bir yol sağlar. Ayrıca, belgenin yalnızca ilk dalını döndüren bir SelectSingleNode yöntemi vardır. Bu yöntemlerin her ikisi de şube aramaları için XSL şablonları tanımlamanıza olanak tanır.</p> <p>Bir CD dalı ve bir PRICE alt dalı olan tüm dalları getirmek için SelectNodes yöntemini kullanma sürecine bakalım:</p><p>Kök: = XMLDoc.DocumentElement; Düğümler: = Root.SelectNodes ('CD / FİYAT');</p><p>CD şubesinin tüm PRICE alt dalları Nodes koleksiyonuna yerleştirilecektir. XSL şablonlarını tartışmaya biraz sonra döneceğiz.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h3>Alt dalları manipüle etme</h3> <p>Alt dalları değiştirmek için XMLDOMNode nesnesinin yöntemlerini kullanabiliriz (Tablo 2).</p> <p>İlk diskle ilgili kaydı tamamen silmek için aşağıdaki kodu çalıştırmanız gerekir:</p><p>Var XMLDoc: IXMLDOMDocument; Kök: IXMLDOMNode; Düğüm: IXMLDOMNode; XMLDoc: = CoDOMDocument.Create; XMLDoc.Async: = Yanlış; XMLDoc.Load ('C: \ DATA \ DATA.xml'); // Kök elemanı al Root: = XMLDoc.DocumentElement; Düğüm: = Kök; // İlk alt dal Node.RemoveChild'i (Node.FirstChild) kaldırın;</p><p>Bu örnekte ilk alt dalı sildiğimizi unutmayın. İlk alt dalın ilk öğesinin nasıl kaldırılacağı aşağıda gösterilmiştir:</p><p>Var XMLDoc: IXMLDOMDocument; Kök: IXMLDOMNode; Düğüm: IXMLDOMNode; XMLDoc: = CoDOMDocument.Create; XMLDoc.Async: = Yanlış; XMLDoc.Load ('C: \ DATA \ DATA.xml'); // Kök elemanı al Root: = XMLDoc.DocumentElement; // ve ilk alt dal Node: = Root.FirstChild; // İlk alt dal Node.RemoveChild'i (Node.FirstChild) kaldırın;</p><p>Yukarıdaki örnekte ilk dalı değil sildik <CD>…</CD> ve dalın ilk elemanı <TITLE>….

Şimdi yeni bir dal ekleyelim. Yeni bir müzik CD-ROM girişinin nasıl ekleneceğini gösteren kod aşağıdadır:

Var NewNode: IXMLDOMNode; Alt: IXMLDOMNode; ... // Yeni bir dal oluştur - NewNode: = XMLDoc.CreateNode (1, 'CD', ''); // eleman ekle Alt: = XMLDoc.CreateNode (1, 'TITLE', ''); // NewNode.AppendChild (Alt) öğesi ekleyin; // Ve değerini ayarlayın Child.Text: = 'Pink Floyd'; // Bir eleman ekle <ARTIST>Alt: = XMLDoc.CreateNode (1, 'ARTIST', ''); // NewNode.AppendChild (Alt) öğesi ekleyin; // Ve değerini ayarlayın Child.Text: = 'Division Bell'; // Bir eleman ekle <COUNTRY>Alt: = XMLDoc.CreateNode (1, 'ÜLKE', ''); // NewNode.AppendChild (Alt) öğesi ekleyin; // Ve değerini Child.Text: = 'UK'; // Bir eleman ekle <COMPANY>Alt: = XMLDoc.CreateNode (1, 'ŞİRKET', ''); // NewNode.AppendChild (Alt) öğesi ekleyin; // Ve değerini Child.Text: = 'EMI Records Ltd.'; // Bir eleman ekle <PRICE>Alt: = XMLDoc.CreateNode (1, 'PRICE', ''); // NewNode.AppendChild (Alt) öğesi ekleyin; // Ve değerini ayarlayın Child.Text: = '11 .99 "; // Bir eleman ekleyin <YEAR>Alt: = XMLDoc.CreateNode (1, 'YIL', ''); // NewNode.AppendChild (Alt) öğesi ekleyin; // Ve değerini Child.Text: = '1994'; // Ve bir Root.AppendChild (NewNode) şubesi ekleyin; ...</p><p>Yukarıdaki kod, yeni bir dal eklemek için aşağıdaki adımları gösterir:</p> <ul><li>CreateNode yöntemini kullanarak yeni bir dal oluşturma: <ul><li>CreateNode yöntemini kullanarak bir öğe oluşturma;</li> <li>AppendChild yöntemini kullanarak bir şubeye eleman ekleme;</li> <li>Text özelliği aracılığıyla bir öğenin değerini ayarlama;</li> <li>… Tüm öğeler için tekrarlayın.</li> </ul></li> <li>AppendChild yöntemini kullanarak belgeye yeni bir dal ekleme.</li> </ul><p>AppendChild yönteminin ağacın sonuna bir dal eklediğini hatırlayın. Ağaçta belirli bir yere dal eklemek için InsertBefore yöntemini kullanmanız gerekir.</p> <h2>Dal kümesi - XMLDOMNodeList nesnesi</h2> <p>XMLNodeList nesnesi, SelectNodes veya GetElementsByTagName yöntemleri kullanılarak oluşturulabilen ve ayrıca ChildNodes özelliğinden elde edilen dalların bir listesini içerir.</p> <p>Bu nesnenin kullanımını "Belge ağacında gezinme" bölümünde sağlanan örnekte zaten tartışmıştık. İşte bazı teorik yorumlar.</p> <p>Listedeki dal sayısı, Length özelliğinin değeri olarak alınabilir. Dallar 0'dan Uzunluk-1'e kadar indekslenir ve her bir dal, Item dizisindeki ilgili indekslenmiş öğe aracılığıyla erişilebilir.</p> <p>Dallar listesinde gezinme, listedeki bir sonraki dalı döndüren NextNode yöntemi veya geçerli dal son ise Nil kullanılarak da yapılabilir. Listenin başına dönmek için Sıfırlama yöntemini çağırın.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2>Belgeler oluşturun ve kaydedin</h2> <p>Bu nedenle, mevcut XML belgelerine nasıl dallar ve öğeler ekleyebileceğinizi ele aldık. Şimdi anında bir XML belgesi oluşturalım. Her şeyden önce, bir belgenin yalnızca bir URL'den değil, aynı zamanda normal bir dizeden de yüklenebileceğini unutmayın. Daha sonra öğelerin geri kalanını dinamik olarak oluşturmak için kullanılabilecek bir kök öğenin nasıl oluşturulacağı aşağıda açıklanmıştır (daha önce Alt Dalları Manipüle Etme bölümünde ele almıştık):</p><p>Var XMLDoc: IXMLDOMDocument; Kök: IXMLDOMNode; Düğüm: IXMLDOMNode; S: GenişDize; ... S: = ' <CATALOG></CATALOG>'; XMLDoc: = CoDOMDocument.Create; XMLDoc.Async: = Yanlış; XMLDoc.LoadXML (S); Kök: = XMLDoc.DocumentElement; Düğüm: = XMLDoc.CreateNode (1, 'CD', ''); Root.AppendChild (Düğüm); Memo1.Lines.Add (XMLDoc.XML); ... XMLDoc: = Sıfır;</p><p>XML belgesini oluşturduktan sonra Kaydet yöntemini kullanarak bir dosyaya kaydedin. Örneğin:</p> <p>XMLDoc.Save ('C: \ DATA \ NEWCD.XML');</p> <p>Kaydet yöntemi, bir dosyaya kaydetmeye ek olarak, bir XML belgesini yeni bir XMLDOMDocument nesnesine kaydetmenize olanak tanır. Bu durumda, belge tamamen işlenir ve sonuç olarak yapısı ve sözdizimi kontrol edilir. Bir belgeyi başka bir nesneye nasıl kaydedeceğiniz aşağıda açıklanmıştır:</p><p>Prosedür TForm1.Button2Click (Gönderen: TObject); var XMLDoc2: IXMLDOMDocument; XMLDoc2'yi başlat: = CoDOMDocument.Create; XMLDoc.Save (XMLDoc2); Memo2.Lines.Add (XMLDoc2.XML); ... XMLDoc2: = Sıfır; son;</p><p>Son olarak, Kaydet yönteminin, XML belgesini IStream, IPersistStream veya IPersistStreamInit arabirimlerini destekleyen diğer COM nesnelerine kaydetmenize de olanak tanıdığını unutmayın.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2>XSL Şablonlarını Kullanma</h2> <p>XMLDOMNode nesnesinin SelectNodes yöntemini tartışırken, belge dallarına erişmek için daha esnek bir yol sağladığından bahsetmiştik. Esneklik, dalları seçme kriteri olarak bir XSL şablonu belirtebilmenizdir. Bu tür şablonlar, XML belgelerinde bilgi bulmak için güçlü bir mekanizma sağlar. Örneğin, dizinimizde bulunan tüm müzik CD-ROM başlıklarının bir listesini almak için aşağıdaki sorguyu çalıştırabilirsiniz:</p><p>ABD'de hangi sanatçıların disklerinin yayınlandığını öğrenmek için talep şu şekilde oluşturulur:</p><p>Düğümler: = Root.SelectNodes ('CD / SANATÇI');</p><p>Bir dizindeki ilk sürücüyü nasıl bulacağınız aşağıda açıklanmıştır:</p><p>Düğümler: = Root.SelectNodes ('CD / TITLE');</p><p>Ve son olarak:</p><p>Düğümler: = Root.SelectNodes ('CD / TITLE');</p><p>Bob Dylan'ın disklerini bulmak için aşağıdaki sorguyu çalıştırabilirsiniz:</p><p>Düğümler: = Root.SelectNodes ('CD [$ herhangi bir $ SANATÇI =" Bob Dylan ”] / TITLE');</p><p>ve 1985'ten sonra yapılan disklerin bir listesini almak için aşağıdaki sorguyu çalıştırıyoruz:</p><p>Düğümler: = Root.SelectNodes ('CD / TITLE');</p><p>XSL sözdiziminin daha ayrıntılı bir tartışması ayrı bir yayın gerektirir. Okuyucuların ilgisini çekmek ve daha fazla araştırmayı teşvik etmek için, XSL'nin olası kullanımına dair sadece küçük bir örnek vereceğim. Diyelim ki dizinimizi normal bir HTML tablosuna dönüştürmemiz gerekiyor. Geleneksel yöntemleri kullanarak, ağacın tüm dallarını yinelemeliyiz ve alınan her eleman için karşılık gelen etiketleri oluşturmalıyız. <TD>…</TD>.</p> <p>XSL kullanarak, neyin ve nasıl dönüştürüleceğini belirten bir şablon (veya stil sayfası) oluşturuyoruz. Sonra bu şablonu kataloğumuza yerleştiriyoruz - işte bu kadar: kataloğu bir tabloya dönüştüren bir XSL şablonunun metnine sahibiz (Liste 2).</p> <p>Dizinimizde bir XSL şablonunu kaplayacak kod şuna benzer:</p><p>Prosedür TForm1.Button2Click (Gönderen: TObject); var XSLDoc: IXMLDOMDocument; XSLDoc'u başlat: = CoDOMDocument.Create; XSLDoc.Load ('C: \ DATA \ DATA.xsl'); Memo2.Text: = XMLDoc.TransformNode (XSLDoc); XSLDoc: = Sıfır; son;</p><p>XSL ile ilgili tartışmamızı sonlandırırken, şu anda bu dilin çeşitli XML belgeleri arasında dönüşüm için ve ayrıca belgeleri biçimlendirmek için aktif olarak kullanıldığı söylenmelidir.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2>Çözüm</h2> <p>Açık nedenlerden dolayı, tüm Microsoft XML DOM nesnelerini kapsamak ve bunların kullanım örneklerini tek bir makalede sağlamak imkansızdır. Burada, uygulamalarda XML DOM kullanmanın temel konularına değindik. Tablo 3, Microsoft XML DOM'de uygulanan tüm nesneleri gösterir.</p> <p>BilgisayarBasın 12 "2000</p> <p>DELPHI'YE ÇÖZÜM SİPARİŞ VERİN <br>Delphi, öğrencilerin öğrenme sürecinde en sık karşılaştığı ikinci en önemli programlama dilidir. Bu, nesne yönelimli programlamayı öğrenmenin başlangıcıdır. Bir öğrenci olarak, bir dil öğrenmenin içine hesap makinesi yazmaktan daha kolay bir yöntem olmadığı sonucuna vardım. İki sayı eklemek için ilkel bir işlev uygulasanız bile, birçok şeye ışık tutacaktır.</p> <p>CodeGaear, Delphi 7, Lazarus farklı derleyiciler, yazdığınız kodu makineye aktaracak, birlere ve birlere dönüştürecek programlardır. Bunların hepsi ayrı programlama dilleri değil, program oluşturmaya yönelik programlardır. Bu derleyiciler, sözdizimi açısından normal Pascal'a benzeyen, ancak işlevsel olarak önemli ölçüde farklı olan Delphi dilinin temeli olan Object Pascal programlama dilini kullanır. <br></p> <h2>Bir programlama dilinin sözdizimi nedir?</h2> <p>Bu, çeşitli operatörleri yazmak için kullanılan formattır. Örneğin, bir Pascal for döngüsü şu biçime sahiptir: for n: = 1 ila k do vb.</p><p>C++ programlama dilinde aynı döngü biraz farklı yazılır: for (n = 1; n Bir hesap makinesi yazıyoruz</p><p>Bu size nesnelerin program koduyla nasıl etkileşime girdiğini, "değişkenlerin" ne olduğunu ve matematiksel işlevlerin nasıl çalıştığını anlamanızı sağlayacaktır. Herhangi bir programlama her durumda bir hesaplama olacaktır. Oyun aynı zamanda sürekli bir şeyler hesaplayan, sayılarla ve sayısal fonksiyonlarla çalışan bir programdır. Programlama matematikten ayrılamaz.</p> <p>Yazmak için Lazarus geliştirme ortamını kullanalım. İşlevselliği, örneğin CodeGear kadar zengin değildir, ancak ücretsiz olarak kullanılabilir ve eğitim amaçlıdır.</p><p>Geliştirme ortamını açarak formu ve araç kutusunu görüyoruz. İşte 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>İşte araç kutusu.</p><p>Yapacağımız ilk şey, iki sayı eklemek için işlevi uygulamak için ihtiyacımız olan üç öğeyi eklemek. İhtiyacımız olan: "Tedit" üç parça ve "TBton". Aşağıdaki resimde panelde oklarla gösterilmiştir. Bir kez üzerlerine, ardından bir kez forma tıklıyoruz ve üzerinde görünüyorlar.</p><p>Bunlar, giriş için metin alanları ve normal bir düğmedir. Bu öğelere hemen hemen her Windows programını kullanarak rastlarsınız. Bir göz at.</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>Şimdi bu etiketleri temizleyelim. "Görünüm" sekmesine tıklayın. Ve "Nesne Denetçisi. Bunun gibi bir pencere görünecektir.</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>Formdaki "Button" öğemize bir kez tıklıyoruz ve denetçi penceresindeki "Caption" değerini başka bir değere değiştiriyoruz. Örneğin, "Tamam" kelimesi. Enter'a basıyoruz. Öğenin adını nasıl değiştirdiğini formda görüyoruz.</p><p>Aynısını Edit'ler için de yapalım, isimlerini değiştirmeyin, içeriksiz yapın. Bunları sırayla seçin ve denetçideki Metin değerini temizleyin. Enter'a basmayı unutmayın.</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>Sonuç olarak formumuz bu şekilde.</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>Şimdi hesap makinemizin çalışması için butonumuzun prosedürü için gerekli program kodunu yazmanız gerekiyor. Düğme öğesine iki kez tıklayın ve kaynak düzenleyiciyi açın.</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>Görmek? Prosedür Düğme1Tıklayın. Düğmeye bir kez tıkladığımızda olanlardan sorumlu olan prosedür budur. Ve aşağıdakiler gerçekleşmelidir: program, üçüncü Düzenlemede ilk iki alana girilen sayıların toplamını göstermelidir. Kodu yazıyoruz.</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>Bu kadar basit 5 satırlık bir kod yazmamız gerekiyor. Yorumlar ve açıklamalar yukarıdaki resimde görülebilir. Daha sonra bu butona basıyoruz.</p> <p>Projemiz derlenecek. Bir program haline getirilecek. İlk iki alana sayıları giriyoruz, butona tıklıyoruz ve toplamın değerini alıyoruz.</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>Çözüm</h2> <p>"Dosya" düğmesini, ardından "Tümünü Kaydet"i tıklayabilir, kaydetmek için bir klasör seçebilir ve masaüstünden başlatılabilen tam teşekküllü bir programa sahip olursunuz. Şimdi, programın iki sayıyı bölüp toplamaması için bu kodda neyi yeniden yazmanız gerektiğini kendiniz bulmaya çalışın. İpucu: veri türünü değiştirmeniz gerekir. Aşağıdaki video benzer bir örneği göstermektedir, ancak Delphi 7 ortamında Lazarus'ta değil.</p><p><span class="6qR5tjJKK3g"></span></p> <p>Birçok Delphi programcısı için, ayarların kaydedilmesi, <i>INI</i> programlarındaki dosyalar. Bu yöntemin az çok ciddi projelerde kullanılması, programın daha da genişletilmesini önleyen esnekliği sınırladığı için kaçınılmalıdır. Bu yaklaşımın, kullanım kolaylığı ve geliştirme ortamında yerleşik araçların bulunması nedeniyle oldukça popüler olduğu söylenmelidir. <br><br>Ancak yapılandırılmış <i>XML</i> Dosyalar. Avantajları, parametre sayısının sabitlenemeyebilmesidir. Bunu daha iyi anlamak için belirli bir örnek düşünün.</p><p>USearch programında, bir girdiye tıkladığınızda, bir öğe listesinin görüntülendiği bir bağlam menüsü belirir. Bu öğeler, sırayla ayarlar dosyasından yüklenen komutlardır. Ayarların saklanmış olması durumunda <i>INI</i> dosya, daha sonra program belirli sayıda komutu kaydedebilir ve yükleyebilir, örneğin 10 veya 50. Daha büyük bir değer gerektiğinde, kodu yeniden yazmanız ve buna göre yeniden derlemeniz gerekecektir.</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>kullanarak bir yaklaşım uygulamak <i>XML</i> dosyaları, tüm bölüm parametrelerini dinamik olarak yükleyebileceğiz. Ek olarak, konfigürasyon dosyası gereksiz parametre numaralandırması olmadan daha şık hale gelecektir. Bununla birlikte, çalışmak için standart araçlar <i>XML</i> Delphi'nin birçok dezavantajı var, bu yüzden standart kütüphaneyi kullanmanızı öneririm <b>MSXML</b>... Genellikle Windows ailesinin işletim sistemlerinde varsayılan olarak bulunur.</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>Bağlanmak <b>MSXML</b>, COM sunucusundan içe aktararak tüm fonksiyonların bir listesini içeren bir arayüz dosyası oluşturmamız gerekiyor. Arayüzün nasıl içe aktarılacağı ile ilgili birçok detaylı yazı yazılmış ama dosyayı indirmenizi öneririm. <b>MSXML2_TLB.PAS</b> kullanıma hazır. Dosya indirildikten sonra projenizin yanına yerleştirin veya Delphi ortamının lib klasörüne bırakın. Böylece oluşturulan tüm programlar modülü kullanabilecektir. <b>MSXML</b>, kullanımlara MSXML2_TLB satırını eklemeniz yeterlidir.</p><p>Netlik için, bu kitaplığı kullanmanın aşağıdaki örneğini göz önünde bulundurun:</p><p>Prosedür LoadData; var XMLDoc: DOMDocument; Kök: IXMLDOMElement; XMLDoc'u başlat: = CoDOMDocument.Create; XMLDoc.Load ("settings.xml"); Kök: = XMLDoc.DocumentElement; ShowMessage (Root.SelectSingleNode ("boyut / genişlik"). Metin); Kök: = sıfır; XMLDoc: = sıfır; son;</p><p>Önce DOMDocument sınıfının bir örneği oluşturulur ve ardından settings.xml dosyasının içeriği belleğe yüklenir. Standarda göre herhangi bir <i>XML</i> dosya kök etiketi içermelidir (bu durumda <i>yapılandırma</i>), o zaman işlevi kullanarak almamız gerekiyor <i>Belge Öğesi</i>... Ardından içerik, etiketler arasında görüntülenir. <width></width>, sırayla etiketler arasında <size></size>... Böylece settings.xml dosyasından, yöntemimiz metni MessageBox'ta görüntüleyecektir. <i>"100 piksel"</i>.</p><p> <?xml version="1.0" encoding="utf-8"?> <config> <size> <height>500 piksel</height> <width>100 piksel</width> </size> </config> </p><p>Burada parametre olarak bir dize alan SelectSingleNode yöntemi uygulanır.</p> <p>Hoş geldin! Bu blog internet ve bilgisayarlarla ilgili daha doğrusu onlara ithaf edilmiştir.</p> <p>Muhtemelen, sitede uzun yıllar boyunca yeni makalelerin görünmediği hemen açıktır. Evet, çoğu blogun kaderi bu. Bu proje bir zamanlar iddialı bir girişimdi ve yazar, o sırada yazan birçok kişi gibi, en iyi Rus blog yazarlarından biri olmak için iddialı planlara sahipti. Eh, şimdi bakarsanız, benimkiyle aynı anda oluşturulan blogların çoğu zaten sonsuzluğa kayboldu. Ve blog yazmak için yeterli zamanım olmadı. Yani evet, artık güncellenmiyor. Her ne kadar bir kez bu siteyle "Blog of Runet 2011" yarışmasını kazandık.</p> <p>Tüm bunları silmek için bir fikrim bile vardı, ama sonra eski malzemeleri gözden geçirdim ve okuyucular için hala yararlı olabileceğini fark ettim. Evet, bazı makaleler eskidir (yeterli gücüm varsa, uygun notlar alırlar), ancak örneğin site yeni başlayanlar için faydalı olabilir - burada İnternet'in temel kavramlarını okuyabilir, nasıl yapılandırılacağını öğrenebilirsiniz. İnternet, Windows, hatta Linux'a geçmeye karar verin. Bu yüzden değerlendirme listelerine bakın ve sizin için doğru olanı seçin.</p> <p>Yine de, umarım bu sadece bir blog olmaktan öte gerçek bir İnternet rehberidir. Site, mevcut tüm makalelerin kategoriye göre yapılandırıldığı dizin modunda görüntülenebilir. Ve kim bilir, belki bir gün burada yeni, yüksek kaliteli makaleler görünmeye başlar.</p> <p><i>zımpara</i></p> <p>Picodi.ru, tasarruf ve ucuz alışveriş konusunda Polonyalı bir uzman olan International Coupons'un bir indirim portalıdır. Polonyalılar dünyanın en ekonomik ülkelerinden biri olarak kabul ediliyorlar, bu nedenle bu tür bir projenin Polonyalı başlangıç ​​kodyrabatowe.pl'den çıkması şaşırtıcı değil. Bu portal Rusya'daki sıradan bir İnternet kullanıcısı için nasıl faydalı olabilir?</p> <p>Modern android telefonlar, telefonlardan daha fazlasıdır. Yüklü programlara, aramalarınızın ve kısa mesajlarınızın geçmişine, fotoğraf koleksiyonuna ve çok daha fazlasına alışırsınız. Ancak zaman geçiyor ve size tamamen uyan cihaz, kasadaki yongalar veya ekrandaki çizikler nedeniyle yavaşlamaya, arızalanmaya veya sadece prezentabl görünümünü kaybetmeye başlıyor. Soru, yeni bir telefon seçmek ve android telefonu değiştirmekten kaynaklanmaktadır. Ve şimdi seçim sorusunu atlarsak, yeni bir telefona "taşınmak" ciddi bir sorun olmaya devam ediyor - kesinlikle tüm verileri sıfırdan başlatmak istemiyoruz. Bugün konuşacağımız şey bu.</p> <p>Bu blogun okuyucularının çoğu, büyük olasılıkla, sürüm kontrol sistemleriyle hiç karşılaşmadı ve yakın gelecekte de karşılaşmayacak. Çok yazık. Bu son derece kullanışlı buluş, programcılar tarafından yaygın olarak kullanılmaktadır, ancak bence, metinlerle aktif olarak çalışanlar için çok yararlı olabilir. Ancak, muhtemelen, "ofis" (Microsoft Office) çalışması için kullanmaya başlaması kolay olacak tek bir sürüm kontrol sistemi yoktur. Yine de, makalede sunulan materyalin tüm okuyucular için ilginç olabileceğini düşünüyorum.</p> <p>Televizyonunuzdan ağdaki filmleri nasıl izleyeceğinizi ve çevrimiçi olmayı düşündüyseniz, bu makale tam size göre. Hayır, bazı TV'lerin zaten Smart TV işlevine sahip olduğunu biliyorum, ancak düzgün çalıştığını hiç görmedim. Görünüşe göre, bu nedenle, son zamanlarda Google şirketi, hemen bir sansasyon haline gelen kesinlikle çarpıcı bir cihaz gösterdi. Geçen yılki feci Nexus Q'nun daha gelişmiş ve uygun fiyatlı bir sürümü olan Chromecast medya aktarıcısından (Chromcast) bahsediyoruz.</p> <p>Boyutu 2 inçten daha küçük olan Chromcast Dongle, TV'nizin HDMI bağlantı noktasına bağlanır ve akışlı web içeriğinin keyfini çıkarmanızı sağlar. Yayıncıyı kontrol etmek için iOS, Windows, Android veya Mac OS işletim platformuna dayalı herhangi bir cihazı (tablet, PC, akıllı telefon) kullanabilirsiniz.</p> <p>Bu makale, android sistem belleğinin cihazına, eksikliğinden dolayı ortaya çıkabilecek sorunlara ve bunların nasıl çözüleceğine ayrılmıştır. Geçenlerde, bir uygulama yüklemeye çalışırken android telefonumun yetersiz bellek hakkında düzenli olarak mesajlar vermeye başladığı gerçeğiyle karşılaştım. Bu benim için çok garipti, piyasadaki açıklamaya göre yaklaşık 16GB olması gerekiyordu ve ben de bu hacmi ek bir hafıza kartı ile artırdım. Ancak, bir sorun vardı ve root erişimi gerektirmeyen veya telefonu fabrika durumuna tamamen geri yüklemeyen doğru çözümü bulmadan önce çok uğraşmam gerekti.</p> <p>Son zamanlarda, e-iş sistemlerinin veya aynı zamanda B2B (işletmeden işletmeye) olarak da adlandırılan yapıların inşasına çok dikkat edildi. İnternet teknolojilerinin eşgüdüm organı olan WWW Konsorsiyumu'nun değişim akış sistemlerinin inşası için tavsiyeler dikkate alındığında: XML teknolojileri ve XML belgelerinin değiş tokuşuna yönelik sistemlerin inşası üzerinde durulmuştur.</p> <p>E-ticarette XML kullanmanın avantajı, yapılandırılmış bilgilerin açık ve görsel bir sunumu, modern ağ protokollerini kullanma ve gerçek zamanlı iş sistemleri oluşturma yeteneği nedeniyle oluşturulması için düşük maliyetlerle B2B sistemlerinin yüksek verimliliğidir.</p> <p>Bilginin XML belgeleri biçiminde sunulmasının bağımsızlığı, e-işle uğraşan farklı şirketlerin birbirinden bağımsız olarak yazılım üretmesine olanak tanır.</p> <p>Tüm sistemlerde, değişim, kural olarak, HTTP istekleri kullanılarak aynı şemaya göre oluşturulur. Bilgi güvenliği protokolü olarak SSL protokolü kullanılmaktadır (ancak bu ayrı bir konudur).</p> <p>XML mesajlarını işlemek için olası seçeneklerden biri, XML belgeleri oluşturan veya işleyen BIN / CGI (ISAPI) uygulamaları veya COM (sunucu) bileşenleri oluşturmaktır.</p> <p>Uygulama bir yanda POST modunda HTTP isteği gönderen bir istemci görevi görür, diğer yanda isteğin işlendiği ve yanıtın verildiği bir WEB sunucusu vardır. Bilgi alışverişi XML belgelerini kullanır.</p> <p>En verimli uygulama seçeneklerinden biri, DOM modelini destekleyen mevcut bir XML ayrıştırıcısını kullanmaktır. Böyle bir ayrıştırıcı, Win'98'in bir dağıtım paketi veya IE 4.7 ve sonraki sürümlerin (Win'95 için) ayrılmaz bir parçasıdır ve msxml.dll kitaplığında bulunan bir COM sunucusunu temsil eder.</p> <p>Bileşen Nesne Modeli (COM) - kapsüllenmiş verileri ve yöntemleri tek bir varlıkta ve bunlara bir arabirim sistemi aracılığıyla erişmenin bir yolunu sunar. Delphi araçlarını kullanarak, bir COM nesnesinin sınıflarına erişmek oldukça kolaydır (bir COM sunucusuna birkaç sınıf dahil edilebilir). Nesnelere, arabirim sistemi aracılığıyla sınıfın bir örneğini başlatarak erişilir. Arayüzlerin tanımı, ortam aracılığıyla otomatik olarak gerçekleştirilebilen arayüz tanımlama dili (IDL) tarafından gerçekleştirilir.</p> <p>Delphi araçları, bir COM sunucusundan içe aktarmak için kullanılır <i>msxml.dll</i>, IDL arabiriminin açıklaması için dosyalar ve kitaplık türlerinin ikili açıklaması için dosya - TLB oluşturulur. Bu işlem sistem menüsü aracılığıyla gerçekleştirilir: <b>Proje | Tür Kitaplığı İçe Aktarma:</b>(resim 1). Ardından, bir COM nesnesi seçmeniz gereken (bizim durumumuzda nesne "Microsoft.XMLDom (Sürüm 2.0)" adı altında kayıtlıdır) ve bir TLB dosyası (düğmesi) oluşturmanız gereken bir iletişim kutusu görünür (Şekil 2) <b>Birim Oluştur</b>). TLB dosyasını kullanarak çerçeve bir Pascal COM sunucusu açıklama dosyası oluşturur - MSXML_TLB.pas</p> <p>MSXML_TLB.pas dosyası, COM sunucusunun tüm arabirimlerini, sabitlerini ve ortak sınıflarını açıklar.</p> <p>Bir COM öğesinin nesnelerine erişmek için yönergede <b>KULLANIMLAR</b> kitaplık açıklama dosyasının adını ekleyin (MSXML_TLB.pas). Aşağıda, bir XML belgesi yükleyen ve bunu bir Memo1 metin alanı öğesinde görüntüleyen standart DOM ayrıştırıcı msxml.dll'yi kullanan basit bir program bulunmaktadır.</p> <b>kullanır</b> Windows, Mesajlar, SysUtils, Sınıflar, Grafikler, Kontroller, Formlar, Diyaloglar, OleServer, MSXML_TLB, StdCtrls; <b>tip</b> TForm1 = <b>sınıf</b>(Form) Düğme1: T Düğme; Not1: TMemo; <b>prosedür</b> Button1Click (Gönderen: TObject); <b>son;</b> <b>var</b> Form1: TForm1; <b>uygulama</b>($ R * .DFM) <b>prosedür</b> TForm1.Button1Click (Gönderen: Tobject); <span>// DOMDocument nesnesinin sosınıfının bildirimi;</span> <b>var</b> coDoc: CoDOMDocument; <span>// IDOMDocument arabirimiyle tutarlı sınıf;</span> <b>var</b> Belge: IXMLDOMDocument; <b>başlamak</b> <span>// DOMDocument nesnesinin bir örneğini oluşturun;</span> Belge: = coDoc.Create; <span>// DOMDocument nesnesinin bir örneğinin Load yöntemini çağırın;</span> Doc.load ("veri.xml"); <span>// DOMDocument örneğinin xml özelliğine erişin;</span> Memo1.Text: = Doc.xml; <b>son;</b> <b>son.</b> <h2>DOM Concept - Belge Nesne Modeli</h2> <p>Her bir XML belgesi, yardımıyla bireysel öğelere (nesne alanları) erişmenin mümkün olduğu birçok nesne (sınıf) kümesi olarak temsil edilir. DOM - arabirim, hem DOMString veya CharacterData türündeki basit nesnelere hem de bir XML belgesinin bölümlerine veya tek tek öğelerine erişimi tanımlar: DOMFragmentElement, DOMNode, DOMElement.</p> <p>XMLDOMDocument, XMLDOMNode, XMLDOMNodeList nesnelerinin en önemli özellikleri ve yöntemleri aşağıdadır. Aşağıda sunulan DOM nesnelerinin (Belge Nesne Modeli) yöntem ve işlevlerinin Microsoft XML ayrıştırıcı msxml.dll tarafından kullanıldığına ve W3C DOM Konsorsiyumu tarafından onaylanan modelden biraz daha geniş olduğuna dikkat edilmelidir.</p> <p>DOM nesne arabiriminin daha eksiksiz bir açıklaması şu adreste bulunabilir:</p> <table cellspacing="0" cellpadding="4" width="500" border="1"><tbody><tr><td valign="top" colspan="2">XMLDOMDoment nesnesi</td> </tr><tr><td valign="top" colspan="2">Nesne hiyerarşisinin en üst düzeyini temsil eder ve bir belgeyle çalışma yöntemlerini içerir: belgeyi yükleme, analiz etme, öğeler, nitelikler, yorumlar oluşturma, vb. ...</td> </tr><tr><td valign="top" colspan="2"><b>Özellikleri</b> </td> </tr><tr><td valign="top" width="39%"><b>zaman uyumsuz</b> </td> <td valign="top" width="61%">Mevcut işleme modunu tanımlayan özellik</td> </tr><tr><td valign="top" width="39%" height="19"><b>Ayrıştırma hatası</b> </td> <td valign="top" width="61%" height="19">XMLDOMParseError hata işleme nesnesine bir başvuru döndürür</td> </tr><tr><td valign="top" width="39%"><b>Etkinleştir - belge doğrulamasını devre dışı bırakın.</b> </td> <td> </td> </tr><tr><td valign="top" width="39%"><b>url</b> </td> <td valign="top" width="61%">Belgenin URL'sini döndürür</td> </tr><tr><td valign="top" width="39%"><b>belge elemanı</b> </td> <td valign="top" width="61%">Belgenin kök öğesine bir XMLDOMElement nesnesi olarak bir başvuru içerir.</td> </tr><tr><td valign="top" colspan="2"><b>yöntemler</b> </td> </tr><tr><td valign="top" width="39%"><b>yükle (url) <br>loadXML (xmlString)</b> </td> <td valign="top" width="61%">Bir XML belgesi yükler,</td> </tr><tr><td valign="top" width="39%"><b>kaydet (objTarget)</b> </td> <td valign="top" width="61%">XML belgesini dosyaya kaydeder</td> </tr><tr><td valign="top" width="39%"><b>iptal etmek</b> </td> <td valign="top" width="61%">Belgeyi yükleme ve işleme sürecinin kesintiye uğraması.</td> </tr><tr><td valign="top" width="39%"><b>createAttribute (isim)</b> </td> <td valign="top" width="61%">Geçerli öğe için belirtilen adla yeni bir öznitelik oluşturur.</td> </tr><tr><td valign="top" width="39%"><b>createNode (Tür, ad, nameSpaceURI)</b> </td> <td valign="top" width="61%">Belirtilen türde ve adda bir düğüm oluşturur</td> </tr><tr><td valign="top" width="39%"><b>createElement (etiketAdı)</b> </td> <td valign="top" width="61%">Belirtilen ada sahip bir belge öğesi oluşturur.</td> </tr><tr><td valign="top" width="39%"><b>createTextNode (veri)</b> </td> <td valign="top" width="61%">Bir belge içinde metin oluşturur</td> </tr><tr><td valign="top" width="39%"><b>getElementsByTagName (etiket adı)</b> </td> <td valign="top" width="61%">Verilen ada sahip belge öğeleri koleksiyonuna bir başvuru döndürür</td> </tr><tr><td valign="top" width="39%"><b>nodeFromID (idString)</b> </td> <td valign="top" width="61%">Kimliğe göre bir öğe bulun</td> </tr></tbody></table><br><table cellspacing="0" cellpadding="4" width="500" border="1"><tbody><tr><td valign="top" colspan="2"> <b>XMLDOMNode nesnesi</b> </td> </tr><tr><td valign="top" colspan="2">Temel DOM arabirimini uygulayan XMLDOMNode nesnesi <b>düğüm</b>, belge ağacının ayrı bir düğümünü işlemek için tasarlanmıştır. Özellikleri ve yöntemleri, mevcut düğüm hakkında tam bilgi almanıza ve değiştirmenize izin verir - türü, adı, tam adı, içeriği, alt öğelerin listesi vb.</td> </tr><tr><td valign="top" colspan="2"><b>Özellikleri</b> </td> </tr><tr><td valign="top" width=" "><b>düğümAdı, temelAdı</b> </td> <td valign="top" width="65%">Geçerli düğümün adını döndürür.</td> </tr><tr><td valign="top" width="35%"><b>önek</b> </td> <td valign="top" width="65%">Ad Alanı önekini döndürür.</td> </tr><tr><td valign="top" width="35%"><b>veri tipi</b> </td> <td valign="top" width="65%">Geçerli düğümün içerik türünü belirtir</td> </tr><tr><td valign="top" width="35%"><b>nodeType, nodeTypeString</b> </td> <td valign="top" width="65%">Geçerli düğümün türünü döndürür:</td> </tr><tr><td valign="top" width="35%"><b>Öznitellikler</b> </td> <td valign="top" width="65%">Geçerli düğümün özniteliklerinin bir listesini bir XMLDOMNamedNodeMap koleksiyonu olarak alır.</td> </tr><tr><td valign="top" width="35%"><b>Metin</b> </td> <td valign="top" width="65%">Geçerli alt ağacın içeriğini metin olarak döndürür</td> </tr><tr><td valign="top" width="35%"><b>xml</b> </td> <td valign="top" width="65%">Geçerli alt ağacın bir XML temsilini döndürür.</td> </tr><tr><td valign="top" width="35%"><b>düğümDeğeri</b> </td> <td valign="top" width="65%">Geçerli düğümün içeriğini döndürür.</td> </tr><tr><td valign="top" width="35%"><b>alt düğümler</b> </td> <td valign="top" width="65%">Alt öğelerin listesini XMLDOMNodeList olarak döndürür.</td> </tr><tr><td valign="top" width="35%"><b>ilk Çocuk, son Çocuk</b> </td> <td valign="top" width="65%">İlk / son çocuğu döndürür</td> </tr><tr><td valign="top" width="35%"><b>öncekiKardeş, sonrakiKardeş</b> </td> <td valign="top" width="65%">Önceki / sonraki kardeş öğeyi döndürür.</td> </tr><tr><td valign="top" width="35%"><b>ebeveyn Düğümü</b> </td> <td valign="top" width="65%">Ana öğeye bir bağlantı içerir.</td> </tr><tr><td valign="top" width="35%"><b>sahibiBelge</b> </td> <td valign="top" width="65%">Geçerli düğümü içeren belgeye bir işaretçi döndürür.</td> </tr><tr><td valign="top" colspan="2"><b>yöntemler</b> </td> </tr><tr><td valign="top" width="35%"><b>appendChild (newChild)</b> </td> <td valign="top" width="65%">Geçerli düğüme yeni bir alt öğe ekler.</td> </tr><tr><td valign="top" width="35%"><b>insertBefore (newChild, refChild)</b> </td> <td valign="top" width="65%">refChild tarafından belirtilen düğümün "soldaki" geçerli alt ağacında konumlandırarak bir alt düğüm ekler.</td> </tr><tr><td valign="top" width="35%"><b>klonNode (derin)</b> </td> <td valign="top" width="65%">Geçerli öğenin bir kopyasını oluşturur.</td> </tr><tr><td valign="top" width="35%"><b>getAttribute</b><b>(isim) <br> </b><b>getAttributeNode</b><b><span>(isim) <br>setAttribute (ad, değer) <br>setAttributeNode (XMLDOMAttribute)</span> </b> </td> <td valign="top" width="65%">Nesnenin niteliklerine (oluşturma, okuma, yazma) erişim. Ad, niteliğin adıdır, değer ise değeridir. Bir XMLDOMAttribute nesnesi döndürür.</td> </tr><tr><td valign="top" width="35%"><b>replaceChild (newChild, oldChild) removeChild (oldChild)</b> </td> <td valign="top" width="65%">Geçerli alt nesneler listesinin oldChild nesnesini newChild ile değiştirmek. oldChild nesnesi siliniyor</td> </tr><tr><td valign="top" width="35%"><b>selectNodes (patternString) selectSingleNode (patternString)</b> </td> <td valign="top" width="65%">Arama modeli veya ilk düğüm tarafından seçilen bir XMLDOMNodeList nesnesini döndürür</td> </tr><tr><td valign="top" width="35%"><b>transformNode (stil sayfası) <br>transformNodeToObject (stil sayfası, outputObject)</b> </td> <td valign="top" width="65%">Geçerli düğümün alt ağacına bir stil sayfası atar ve işlemenin sonucu olan bir dize döndürür. Parametre, XSL deyimlerini içeren DOMDocument nesnesine bir başvurudur.</td> </tr></tbody></table><br><h2>İş Dünyasında XML Kullanımı.</h2> <p>Daha net bir resim için bir açıklamaya ihtiyaç var ve nasıl çalıştığını anlamak için tüm bunlara neden ihtiyaç duyuluyor:</p> <p>Bir B2B veya kurumsal ERP sistemi oluştururken, işletmeler veya pr-I şubeleri arasında XML belgelerinin bilgi alışverişini düzenlerken, HTTP protokolleri üzerinden mevcut WEB sunucularına dayanan verimli bir şekilde kanıtlanmış bir bilgi aktarımı sistemi kullanılır.</p> <p>Uygulama bir yanda POST modunda HTTP isteği gönderen bir istemci görevi görür, diğer yanda isteğin işlendiği ve yanıtın verildiği bir WEB sunucusu vardır. XML belgeleri bir değişim olarak kullanılır.</p> <p>Örneğin basit bir kurumsal ERP sisteminde, bir muhasebe programında (ACS Muhasebe), fatura talebi oluşturularak, antreposu olan bir şubeye (ACS Warehouse) gönderilmesi gerekir. AWP Bir B2B sistemi oluştururken, A Şirketi Tedarikçi B'den ürünlerin kullanılabilirliğini istediğinde (satın alma için sipariş verdiğinde) benzer bir sorun bildirimi.</p> <p>Enterprise A ve programı, müşteri olarak hareket eder. Depoya, bir SQL sunucusunda bir veri tabanına sahip bir depo kompleksine sahip olan Tedarikçi B tarafından hizmet verilmektedir. Değişim, Tedarikçi V'nin kurumsal WEB sunucusu aracılığıyla gerçekleştirilir.</p> <p>Aşağıdaki tipik değişim algoritması aşağıdadır:</p> <br>Figür 3. <ol><li><b>Kurumsal A</b> başlatır <b>süreç A</b>(ürün siparişi), bir WEB istemcisi gibi davranır.</li><li><b>İşlem A</b> bir XML belgesi (örneğin, bir fatura talebi) oluşturur ve bunu bir POST http talebi olarak Sağlayıcı B'nin WEB sunucusuna iletir. Bir URI olarak, işleme uygulamasının kaynak tanımlayıcısı kullanılır. URI, tüm belge türleri için aynı veya her tür için ayrı olabilir. Her şey B2B (WEB) sunucusunun yapısına bağlıdır.</li><li>WEB sunucusu isteği analiz eder ve bir sunucu oluşturur <b>Süreç B</b> XML belgesinin gövdesini parametre olarak geçirerek. <br>B Süreci, WEB sunucusu tarafından başlatılır ve bir ASP sayfası, CGI (ISAPI) - uygulama veya JAVA sunucusu (sunucu uygulaması) olarak işlenir.</li><li><b>Süreç B</b>- SQL veritabanı sunucusuna bir istek oluşturur.</li><li>SQL sunucusu, veritabanında gerekli işlemleri gerçekleştirir, bir yanıt oluşturur ve geri döndürür. <b>Süreç B</b>.</li><li>SQL sunucusundan gelen cevaba göre <b>Süreç B</b> bir XML belgesi (yanıt) oluşturur ve bunu istemci uygulamasına yapılan bir http isteğine yanıt olarak döndürür.</li><li>Ayrıca client tarafında duruma göre ya yeni bir http request oluşturulur ya da session sonlandırılır.</li> </ol><h2>Belge akışının organizasyonu hakkında birkaç söz.</h2> <p>XML belgelerini değiş tokuş etmek için bir sistem geliştirmenin genel kuralı şudur:</p><ul><li><b>İlk önce</b>- elektronik belgelerin akış şemasının ve yapılarının geliştirilmesi;</li><li><b>ikinci olarak</b>- süreç fonksiyonları (alt süreçler) tablolarının geliştirilmesi, yani. her işlemin hangi XML belgesine göre hangi işlevi uygulayacağı.</li> </ul><p>HTML belgesi gibi her XML belgesi, bir mesaj başlığından (etiketlerle çevrelenen bilgiler) ve bir mesaj gövdesinden (bir istek için, bu bilgiler bir isteğe yanıt vermek için etiketlerle çerçevelenir) oluşmalıdır. XML belgesinin iyi biçimlenebilmesi için, örneğin "Başlık" ve "Talep" adlı iki bileşen parçasını etiketlerle çerçevelemek gerekir. Tipik bir belgenin türü aşağıda sunulmuştur:</p> <p>Başlık (Şekil 4), bir HTML belgesinin aksine, iletilen belgenin türü ve işleme süreci hakkında bilgiler dahil olmak üzere çeşitli hizmet bilgilerini içermelidir. Belgenin gövdesi bilgi işlemeye girer, yani. etiketlerle çerçevelenmiş içerik. Başlıkların yapısının her tür belge için aynı olması gerektiğine dikkat edilmelidir.</p> <p>Sunucu tarafından başlatılan İşlem için, işleme algoritmasını aşağıdaki gibi oluşturmak tercih edilir (ancak gerekli değildir):</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>Şekil 6. <h2>İstemci tarafını oluştururken bazı temel noktalar</h2> <p>Daha önce açıklandığı gibi, bir XML belgesi oluştururken, bunun bir DOM modeli biçimindeki temsili kullanılır. Aşağıda, bir mesaj xml başlığı oluşturma programının bir Delphi metin bölümü örneği verilmiştir.</p> <b>prosedür</b> TThread1.HeaderCreate (Gönderen: Tobject); <b>var</b> <span>// sınıf bildirimi, oluşturmak için gerekli</span> coDoc: CoDomDocument; <span>// XMLDomDocument nesnesi</span> Belge: Belge Belgesi; r: IXMLDOME öğesi; Düğüm: IXMLDOME öğesi; // DOMText txt: IXMLDOMText; // DOMAttribute özniteliği: IXMLDOMAttribute; <b>başlamak</b> <span>// DOM belgesi oluştur</span> Belge: = coDoc.Create; Doc.Set_async (yanlış); <span>// DOM belgesinin ilk başlatılması</span> Doc.LoadXML (" <Header/>"); <span>// DOME öğesi oluştur (etiket<<b>Gönderen</b>>) </span> Düğüm: = Doc.createElement ("Gönderen"); <span>// bir metin düğümü oluştur " <b>Tayfun LLC</b>" </span> txt: = Doc.createTextNode ("Typhoon LLC"); <span>// düğüme atama<<b>Gönderen</b>> değer</span> <span>// metin düğümü " <b>Tayfun LLC</b>" </span> Node.appendChild (txt); <span>// eleman ekle<<b>Gönderen</b>> çocukken belge köküne</span> r.appendChild (Düğüm); <span> <<b>İtibaren</b>> </span> Düğüm: = Doc.createElement ("Kimden"); txt: = Doc.createTextNode ("http://tayfun.ru/xml/default.asp"); Node.appendChild (txt); r.appendChild (Düğüm); <span>// etiket için benzer işlemler<<b>NS</b>> </span> Düğüm: = Doc.createElement ("Kime"); txt: = Doc.createTextNode ("http://irbis.ru"); Node.appendChild (txt); r.appendChild (Düğüm); <span>// DOME öğesi oluştur ()</span> Düğüm: = Doc.createElement ("TypeDocument"); <span>// XMLDOMAttribute düğümü oluştur</span> Att: = Doc.createAttribute ("Id", "Sipariş"); <span> // <TypeDocument Id="Order"/> </span> Node.appendChild (Att); r.appendChild (Düğüm); <b>son;</b> <p>Unutulmamalıdır ki coDoc: CoDomDocument ve Doc: DomDocument değişkeninin bildirimi ve Create yöntemiyle (Doc: = coDoc.Create;) oluşturulması bir kez yapılır. Değişken bildirimi, bu örnekte netlik için gösterildiği gibi (yani, bir program modülü başına DomDocument türünün bir global değişkeni) yerel prosedürde değil, genel değişkenleri açıklayan bölümde bulunur.</p> <p>Yukarıdaki programın çalışmasının sonucu, örnek xml belgemize uygulanan oluşturulan başlık olacaktır: Şekil 5'te gösterilmiştir.</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>Şekil 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>Şekil 6.</p><p>XML belgeleri biçiminde bilgi aktarmanın temel avantajı, VTYS'de hem alıcı hem de verici taraflarda bağımsız tablo yapıları kullanılarak bir mesaj oluşturmanın mümkün olmasıdır. Örneğimizi kullanarak, Şekil 6'da gösterilen yapıya sahip DBMS'den Enterprise A'nın faturalarıyla ilgili bilgilerin aktarılması gerektiğini varsayalım.</p> <p>Bir fatura içeren bir xml belgesi oluşturmak için, başlangıçta faturanın kendisiyle ilgili bilgilerle bir SQL sorgusu (sorgu A) oluşturulur:</p> <b>SEÇME</b>* Fatura_Genel'den <b>NEREDE</b> FaturaNum =: num <b>SEÇME</b> Mal, Kalite, Fiyat, HZ_cod <b>İTİBAREN</b> Mal <b>NEREDE</b> FaturaNum =: num <span>//: num, fatura numarasını belirten bir parametredir.</span> <p>Aşağıda, xml belgesinin gövdesini oluşturan programın bir bölümü bulunmaktadır:</p> <b>prosedür</b> TThread1.DataBodyCreate (Gönderen: Tobject); <b>var</b> <span>// sınıfın ve XMLDomDocument nesnesinin bildirimi</span>// coDoc: CoDomDocument; <span>// tüm modül için global olmalıdır.</span>// Belge: Belge Belgesi; <span>// DOMElement nesnelerini bildir</span> r: IXMLDOME öğesi; // DOMEeleman; Düğüm, Düğüm2: IXMLDOME öğesi; Düğüm3, Düğüm4: IXMLDOMElement; // DOMText txt: IXMLDOMText; str: dize; <span>// Fatura numarası: <b>tamsayı;</b>- global değişken - // 987654 değerine sahip // sorguA, sorguB: <b>Sicim;</b>- global bir değişken, // isteğe karşılık gelen bir değere sahiptir // sorguA - fatura hakkında genel bilgiler içeren istek A // sorguB - faturada açıklanan mallar hakkında istek B bilgisi (metne bakın)</span> <b>başlamak</b> Sorgu.Kapat; <span>// "request A" metnine bakın</span> Query.Text: = sorguA; <span>// isteği yürüt</span> Query.ExecSQL; Sorgu.Aç; <span>// kök elemanın adresini al</span> r: = Doc.Get_documentElement; Düğüm2: = Doc.createElement ("İstek"); <span>// DOME öğesi (etiket) oluştur</span> Düğüm: = Doc.createElement ("Fatura"); <span>// köke bir eleman ekle</span> r.appendChild (Düğüm2); <span>// bir öğe ekle</span> Düğüm2. appendChild (Düğüm); <span>// DOME öğesi (etiket) oluştur</span> Düğüm3: = Doc.createElement ("Ayrılma"); <span>// bir öğe ekle</span> Düğüm. appendChild (Düğüm3); <span>// isteğin "Depurture" alanına çağrı</span> str: = Query.FieldByName ("Ayrılma").AsString; <span>// metin düğümü oluştur = alan değeri</span><span>// düğüme bir değer ata</span> <span>// metin düğümü, değişken str</span> Node.appendChild (txt); <span>// etiket için benzer işlemler <Destination>, <DataSend>, // <DataDepurture>, <Currency> // <DestinationCompany>(DB alanı "Alıcı")</span> Düğüm: = Doc.createElement ("Hedef"); <span>// veritabanı alanının adı, adla aynı olmayabilir</span> str: = Query.FieldByName ("Alıcı") .AsString; <span>// etiketi, kullanmanın avantajı budur</span> txt: = Doc.createTextNode (str); <span>// XML arabirimini destekleyen bir DBMS'nin önündeki arabirimin DOM'si, // ORACLE 8i veya Ms SQL 2000 gibi</span> Node.appendChild (txt); ... <span>// mallar için bir spesifikasyon talebi oluşturma</span> <span>// erişim isteğini kapat</span> Sorgu.Kapat; <span>// "request B" metnine bakın, bilgi. mallar hakkında</span> Query.Text: = sorguВ; <span>// parametre değerlerinin atanması</span> Query.Params.AsInteger: = FaturaNumarası; <span>// isteği yürüt</span> Query2.ExecSQL; <span>// istek verilerine açık erişim</span> Sorgu.Aç; <span>// DOME öğesi (etiket) oluştur</span> Düğüm3: = Doc.createElement ("Imemler"); <span>// bir öğe ekle</span> Düğüm. appendChild (Düğüm3); <span>// sorgunun tüm satırları arasında dolaş</span> <b>süre</b> <b>olumsuzluk</b> Eof.Sorgu <b>yapmak</b> start Node4: = Doc.createElement ("Imem"); <span>// bir öğe ekle</span> Node3.appendChild (Düğüm4); <span>// etiket için veri oluşturma</span> str: = Query.FieldByName ("Fiyat").AsString; txt: = Doc.createTextNode (str); Node.appendChild (txt); ... <span>// etiketler için benzer işlemler <HZ_Cod>, <Quality>, <GoodName> </span> <b>son;</b> <b>son;</b> <p>Bu prosedürün bir sonucu olarak, bir XML belgesinin aşağıdaki metni oluşturulur:</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>Bir istek oluşturmak için nesnenin Open yöntemi kullanılır. <b>IXMLHttpRequest</b>:</p> <b>prosedür</b> Aç (const bstrMethod, - yöntem türü = "POST" bstrUrl, - Sunucu url'si varAsync, - eşzamansız / eşzamanlı iletişim modu = true bstrUser, - kimlik doğrulaması için kullanıcı adı bstrPassword) - parola <h2>Belge işlemenin sunucu tarafını oluşturma</h2> <p>Daha önce belirtildiği gibi, bir HTTP isteğinin işlenmesi CGI uygulamaları veya Java sunucu uygulamaları tarafından gerçekleştirilebilir. ASP sayfaları yazma varyantı da mümkündür. Ancak bu durumda, sorgu dizesi üzerinden yalnızca "GET" yöntemiyle veri aktarımı mümkündür. Ancak, ASP sayfaları için bir HTTP isteğini işlemek, bir CGI uygulamasından daha verimlidir. Ancak, bence, nasıl işleneceği önemli değil, ancak soruyu çözmek daha önemlidir - bir işleme programının nasıl oluşturulacağı ve hangi yollarla değil.</p> <p>Önceki bölümden bir XML belgesi oluşturma seçeneklerini incelediysek, sunucu uygulamasının görevi tam tersi - XML ​​belgelerini ayrıştırmaktır. Aşağıda, bir xml belgesini ayrıştıran programın bir kısmı verilmiştir:</p> <b>prosedür</b> Tthread1.DataParser (Gönderen: Tobject); <b>var</b> <span>// DOMElement nesnelerini bildir</span> r, FNode: IXMLDOMElement; Str, Dosya Adı: Dize; parm: Dize; <span>// soclass bildirimi ve</span> CoDocXML, CoDocXSL, CoDocResult: CoDomDocument; <span>// XMLDomDocument nesnesi</span> XMLDoc, XSLDoc, ResultDoc: DomDocument; <span>// HttpStr: Dize; - HTTP istek dizesini içeren global bir değişken</span> <b>Başlamak</b> XMLDoc: = coDocXML.Create; XMLDoc.LoadXML (HttpStr); <span>// kök elemanın adresini al</span> r: = Doc.Get_documentElement; <span>// elemanın değerini al</span> FNode: = r.SelectSingleNode ("// TypeDocument"); <span>// id özniteliğinin değerini al = "Sipariş"</span> DosyaAdı: = FNode.GetAttibute ("id"); <span>// ve Order.xsl dosya adını oluşturuyoruz</span> DosyaAdı: = DosyaAdı + ".Xsl"; <span>// XSLDoc belgesi oluştur</span> XSLDoc: = coDocXSL.Create; XSLDoc.LoadXML (DosyaAdı); <span>// XMLDoc belgesi oluştur</span> ResultDoc: = coDocResult.Create; <span>// senkron işleme modunu ayarla</span> ResultDoc.Set_async (yanlış); <span>// ayrıştırma kontrolünü ayarla</span> ResultDoc.validateOnParse: = true; <span>// XSL şablonunu kullanarak XMLDoc'u ayrıştırma</span> XMLDoc.transformNodeToObject (XSLDoc, ResultDoc); <span>// Str değişkenine bir metin değeri atanır</span> <span>// ortaya çıkan belgenin.</span> Str: = ResultDoc.text; <span>// bir eleman bul</span> FNode: = r.SelectSingleNode ("// FaturaNumarası"); <span>// ve elemanın değerini alın</span> parm: = FNode.text; <span>// erişim isteğini kapat</span> Sorgu.Kapat; Query.Text: = Str; <span>// parametre değerinin atanması</span> Query.Params.AsString: = parm; <span>// isteği yürüt</span> Query.ExecSQL; <b>son;</b> <p>Ayrıştırmanın tüm vurgusu, her belge türü için ayrı ayrı oluşturulan bir XSL şablonunun kullanılmasında yatmaktadır. Ayrıştırmanın sonucu bir SQL sorgu dizesidir. Ardından, oluşturulan SQL sorgu dizesinin yürütülmesi, VTYS'deki verilerde gerekli değişiklikleri yapacaktır.</p> <p>Bir şablon aracılığıyla ayrıştırmanın kullanılmasının avantajı, aynı zamanda bir miktar veri esnekliğinin elde edilmesi ve algoritmanın program kodundan tam bağımsızlığının elde edilmesidir. Bir SİPARİŞ belgesini işlemek için kullanılan XSL şablonunun metni aşağıdadır:</p><p> <!-- файл Order.xsl --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <xsl:for-each select="//header">TABREG'E EKLE (FROM, TO, TYPEDOC, body) DEĞERLER (" <xsl:value-of select="from" />", "<xsl:value-of select="to" />", "<xsl:value-of select="TypeDocument/@id" />") </xsl:for-each> <xsl:for-each select="//item">MALLARINA EKLE (faturaNumarası, adı, fiyatı, kalitesi) DEĞERLER (": sayı", " <xsl:value-of select="name" />", "<xsl:value-of select="price" />", "<xsl:value-of select="quality" /> ") </xsl:for-each> </xsl:template> </xsl:stylesheet> </p><p>Yukarıdaki örneği açıklarken, bir çift etiket kullanımının doğası gereği resmi olduğuna dikkat edilmelidir, çünkü ayrıştırmadan sonra, ortaya çıkan XML belgesi resmi olarak en az bir düğüm içermelidir. ResultDoc.text yöntemi, XML belgesinin ayrıştırılması sırasında elde edilen ResultDoc'un metin değerini atar. Bu durumda değer, bir çift etiket tarafından çerçevelenen her şeydir ve yani. Oluşturduğumuz SQL sorgusu.</p> <p>Program yazmanın başka bir özelliği de SQL parametresini kullanma olasılığına dikkat edilmelidir. <b>: sayı.</b> Parametreyi kullanmak, xsl şablonunun metnini basitleştirir. XML belgesinin düğümlerinin karşılık gelen öğelerinin değerinin tanımı, başlangıçta ilgili düğümün adıyla yapılan seçimle belirlenir, örneğin:</p><h2>Bir bakışta XSL</h2> <p>XSL kısaltması, bir stil sayfası biçimlendirme dili (XML verileri) olan eXtensible Stylesheet Language'den gelir. Başlıktan da görebileceğiniz gibi, XML verilerini biçimlendirmek için eXtensible Stylesheet Language (XSL) kullanılır. Tanım olarak, W3C XSL iki bölümden oluşur:</p> <ul><li>XSLT - XSL Dönüşümü. XML belgelerini dönüştürmek veya biçimlendirmek (dönüştürmek) için kullanılan dil. Böylece, XSLT'nin yardımıyla, bir dizi verinin farklı kesimlerini ve veri sunum biçimlerini elde edebiliriz.</li><li>Biçimlendirme öğeleri. Bu öğeler, XSL ile işlendikten sonra verilerin tüm tipografik öğelerini içerir. Yalnızca HTML sayfaları oluşturmak için kullanılır.</li> </ul><p>XSLT yardımıyla bir XML dosyasından ihtiyacımız olan verileri seçip, kullanıcıya sunum için bir formda düzenleyebiliyoruz. Örneğin, bizim durumumuzda XML verilerini bir SQL sorgusu biçiminde dönüştürdük. XSL'nin klasik kullanımı, kural olarak, verileri HTML sayfaları biçiminde veya daha nadiren RTF dosyaları biçiminde biçimlendirmektir.</p> <p>XSL dosyası, XML verilerinin dönüştürülmesinin gerçekleştirileceği bir şablonu tanımlar. xsl şablonlarına dönersek, aşağıdaki öğeler (yönergeler) XSLT'de ayırt edilebilir:</p> <table cellspacing="0" cellpadding="4" width="500" border="1"><tbody><tr><td valign="top" width="31%"> <b>XSL direktifleri</b> </td><th align="middle" width="69%"> <b>tanım</b> </th> </tr><tr><td>xsl: uygulama şablonları</td> <td>Select özniteliği = "şablon adı" için eşleşen şablonların kullanımını gösteren bir yönerge</td> </tr><tr><td>xsl: nitelik</td> <td>bir öznitelik ağacı oluşturur ve bunu çıktı öğesine ekler, parametre adı = "öznitelik adı", ad alanı ad alanı URI'sidir (ad alanı öneki)</td> </tr><tr><td>xsl: çağrı şablonu</td> <td>bir şablonu çağırır, öznitelik adı = "Şablon için URI"</td> </tr><tr><td>xsl: seç <br>xsl: ne zaman <br>xsl: aksi halde</td> <td>xsl koşuluna göre seçim: ifade = "komut dosyasındaki ifadenin değerlendirilmesi" olduğunda, <br>dil = "dil-adı" <br>test = "değerlendirilmiş ifade"</td> </tr><tr><td>xsl: yorum</td> <td>çıktı belgesinde bir yorum oluşturur</td> </tr><tr><td>xsl: kopyala <br>xsl: kopyası</td> <td>geçerli düğümü çıktı kaynağına kopyalar veya bir düğüme bir belge parçası ekler, burada select özniteliği = "kaynak düğüm adı"</td> </tr><tr><td>xsl: eleman</td> <td>ada göre bir çıktı öğesi oluşturur, öznitelik adı = "öğe adı", ad alanı = "uri ad alanı referansı"</td> </tr><tr><td>xsl: her biri için</td> <td>şablonu düğüm listesinin tüm düğümlerine yeniden uygular, select niteliği düğümlerin listesini belirtir</td> </tr><tr><td>xsl: eğer</td> <td>test özelliği tarafından bir ifade olarak belirtilen koşul kontrolü</td> </tr><tr><td>xsl: dahil</td> <td>harici şablon içerir, öznitelik href = "URI referansı"</td> </tr><tr><td>xsl: çıktı</td> <td>çıktıyı belirtir, yöntem niteliği "xml", "html" veya "text" olabilir</td> </tr><tr><td>xsl: parametre</td> <td>parametrelerin değerini belirtir, öznitelik adı = "parametre adı", seç = "değer"</td> </tr><tr><td>xsl: işleme talimatı</td> <td>bir işleme talimatı oluşturur, nitelik adı = "talimat sürecinin adı"</td> </tr><tr><td>xsl: sıralama</td> <td>düğüm kümesini sıralar, nitelikler select = "düğüm adı", veri türü = veri türü ("metin" | "sayı" | Qname), düzen = sıralama yönü ("artan" | "azalan")</td> </tr><tr><td>xsl: stil sayfası</td> <td>bir xsl şablon belgesini tanımlar, XSLT için kök öğedir</td> </tr><tr><td>xsl: şablon</td> <td>bir xsl şablonu tanımlar, öznitelik adı = "şablon adının URI öneki", eşleşme = "şablonun uygulandığı düğümün bir göstergesi"</td> </tr><tr><td>xsl: metin</td> <td>çıktı akışına metin oluşturur, disable-output-escaping = "yes" veya "no" özniteliği, ESC karakterleri oluşturma yeteneğini gösterir</td> </tr><tr><td>xsl: değer-of</td> <td>seçilen düğümün değerini metin olarak ekler, öznitelik seçimi = değerin alındığı "noda işaretçisi"</td> </tr><tr><td>xsl: değişken</td> <td>değişken sınırlarının değerini belirtir, öznitelik adı = "değişken adı", select = "değişken değerinin hesaplanması"</td> </tr><tr><td>xsl: parametreli</td> <td>parametreyi şablona uygular, öznitelik adı = "parametre adı", geçerli bağlamı değerlendirmek için = ifadeyi seçin, varsayılan değer "."</td> </tr></tbody></table><h2>Çözüm</h2> <p>Son olarak, standart XML ayrıştırıcısının kullanılmasının <i>msxml.dll</i> XML belgelerini ayrıştırmak ve oluşturmak için tek araç değildir. Örneğin, XML belgeleri oluşturmak için bileşenleri etkin bir şekilde kullanın. <b>TPageProduser</b> ve <b>TabloÜretici</b>... Ancak bu makale yalnızca DOM modelinin pratikte genişliğini ve uygulanabilirliğini vurgulamaktadır.</p> <p>Yazar, konunun uygunluğu, genel içerik, sunum tarzı ve ayrıca bir makale koleksiyonu yazmanın kalitesini ve konuyu kapsayan bir kitabın yayınlanmasının kalitesini daha da artırmaya yardımcı olacak diğer tüm yorumlar hakkında geri bildirim için çok minnettar olacaktır. e-ticarette XML belgelerini kullanmanın pratik tarafı. Elektronik belgelerin kullanımının pratik yönü hakkında daha ayrıntılı bilgi yazarın www.eDocs.al.ru web sitesinde bulunabilir. Ayrıca kaynak metinlerin ve örneklerin yazarın sitesinde yer alması planlanmaktadır.</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>önceki makale</span><a href="https://obanracer.ru/tr/kak-nado-vesti-lichnyi-dnevnik-lichnyi-dnevnik-kak-sdelat-kak-oformit-dlya.html">Kişisel bir günlük nasıl yapılır: kızlar için nasıl düzenlenir, nasıl başlanır, neyi ve nasıl doldurulur, LD'nin içinde nasıl dekore edilir</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>Sonraki makale</span><a href="https://obanracer.ru/tr/zaryadnoe-kedr-4a-instrukciya-obzor-zaryadnyh-ustroistv-dlya.html">Araç aküsü serisi "Sedir" için şarj cihazlarının gözden geçirilmesi</a></div> <!-- /next_post --> </div> </div> <div class="td-author-name vcard author" style="display: none"><span class="fn"><a href="https://obanracer.ru/tr/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="#">BENZER MAKALELER</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/tr/ustanovka-i-nastroika-skanera-podklyuchenie-skanera-k-kompyuteru-i-sozdanie.html" rel="bookmark" title="Tarayıcıyı bir bilgisayara bağlama ve bir ofis ağı oluşturma Dizüstü bilgisayarda tarayıcı nasıl bulunur"><img width="218" height="150" class="entry-thumb" src="/uploads/e37d5edf116a85a299aec2f41057e730.jpg" alt="Tarayıcıyı bir bilgisayara bağlama ve bir ofis ağı oluşturma Dizüstü bilgisayarda tarayıcı nasıl bulunur" title="Tarayıcıyı bir bilgisayara bağlama ve bir ofis ağı oluşturma Dizüstü bilgisayarda tarayıcı nasıl bulunur"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/tr/category/power-supply/" class="td-post-category">Güç kaynakları</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/tr/ustanovka-i-nastroika-skanera-podklyuchenie-skanera-k-kompyuteru-i-sozdanie.html" rel="bookmark" title="Tarayıcıyı bir bilgisayara bağlama ve bir ofis ağı oluşturma Dizüstü bilgisayarda tarayıcı nasıl bulunur">Tarayıcıyı bir bilgisayara bağlama ve bir ofis ağı oluşturma Dizüstü bilgisayarda tarayıcı nasıl bulunur</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/tr/flirchi-znakomstva-bez-registracii-flirchi-znakomstva-bez.html" rel="bookmark" title="Kayıt olmadan flört flört Ciddi ilişki flört için gerçek flört"><img width="218" height="150" class="entry-thumb" src="/uploads/p1OfVmwo86Z1XSaqW2nuQub-218x150.jpg" alt="Kayıt olmadan flört flört Ciddi ilişki flört için gerçek flört" title="Kayıt olmadan flört flört Ciddi ilişki flört için gerçek flört"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/tr/category/motherboard/" class="td-post-category">anakartlar</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/tr/flirchi-znakomstva-bez-registracii-flirchi-znakomstva-bez.html" rel="bookmark" title="Kayıt olmadan flört flört Ciddi ilişki flört için gerçek flört">Kayıt olmadan flört flört Ciddi ilişki flört için gerçek flört</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/tr/voprosy-po-lekarstvam-zadat-vopros-farmacevtu-besplatno.html" rel="bookmark" title="Bir eczacıya ücretsiz soru sorun"><img width="218" height="150" class="entry-thumb" src="/uploads/736a2924bbbd04d192262522287ffd0c.jpg" alt="Bir eczacıya ücretsiz soru sorun" title="Bir eczacıya ücretsiz soru sorun"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/tr/category/ram/" class="td-post-category">Veri deposu</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/tr/voprosy-po-lekarstvam-zadat-vopros-farmacevtu-besplatno.html" rel="bookmark" title="Bir eczacıya ücretsiz soru sorun">Bir eczacıya ücretsiz soru sorun</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/tr/voprosy-po-lekarstvam-zadat-vopros-farmacevtu-besplatno.html" rel="bookmark" title="Bir eczacıya ücretsiz soru sorun"><img width="218" height="150" class="entry-thumb" src="/uploads/a0175ad1a38ef830a8deb02f1c5651d5.jpg" alt="Bir eczacıya ücretsiz soru sorun" title="Bir eczacıya ücretsiz soru sorun"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/tr/category/multimedia/" class="td-post-category">Multimedya</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/tr/voprosy-po-lekarstvam-zadat-vopros-farmacevtu-besplatno.html" rel="bookmark" title="Bir eczacıya ücretsiz soru sorun">Bir eczacıya ücretsiz soru sorun</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/tr/ne-menyaetsya-oblozhka-na-stranice-v-facebook-sam-sebe-dizainer-kak-sozdat.html" rel="bookmark" title="Facebook sayfasında kapak değişmiyor"><img width="218" height="150" class="entry-thumb" src="/uploads/a3688b92d3b908c73ea0753685b52489.jpg" alt="Facebook sayfasında kapak değişmiyor" title="Facebook sayfasında kapak değişmiyor"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/tr/category/case/" class="td-post-category">Konutlar</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/tr/ne-menyaetsya-oblozhka-na-stranice-v-facebook-sam-sebe-dizainer-kak-sozdat.html" rel="bookmark" title="Facebook sayfasında kapak değişmiyor">Facebook sayfasında kapak değişmiyor</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/tr/usloviya-predostavleniya-uslug-google-chrome-usloviya-predostavleniya-uslug-google-chrome-ustanovit-no.html" rel="bookmark" title="Google Chrome Hizmet Şartları Chrome'un yeni sürümünü yükleyin"><img width="218" height="150" class="entry-thumb" src="/uploads/19469901e83363b8f2049a57ea764c74.jpg" alt="Google Chrome Hizmet Şartları Chrome'un yeni sürümünü yükleyin" title="Google Chrome Hizmet Şartları Chrome'un yeni sürümünü yükleyin"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/tr/category/more/" class="td-post-category">Diğer</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/tr/usloviya-predostavleniya-uslug-google-chrome-usloviya-predostavleniya-uslug-google-chrome-ustanovit-no.html" rel="bookmark" title="Google Chrome Hizmet Şartları Chrome'un yeni sürümünü yükleyin">Google Chrome Hizmet Şartları Chrome'un yeni sürümünü yükleyin</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/tr/pochtovyi-klient-na-fleshku-zapuskaem-programmy-s-fleshki-bez-ustanovki.html" rel="bookmark" title="Programları kurulum yapmadan bir USB flash sürücüden çalıştırıyoruz!"><img width="218" height="150" class="entry-thumb" src="/uploads/41581d4a15f2e3776b23f08bf16b2fde.jpg" alt="Programları kurulum yapmadan bir USB flash sürücüden çalıştırıyoruz!" title="Programları kurulum yapmadan bir USB flash sürücüden çalıştırıyoruz!"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/tr/category/monitors/" class="td-post-category">monitörler</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/tr/pochtovyi-klient-na-fleshku-zapuskaem-programmy-s-fleshki-bez-ustanovki.html" rel="bookmark" title="Programları kurulum yapmadan bir USB flash sürücüden çalıştırıyoruz!">Programları kurulum yapmadan bir USB flash sürücüden çalıştırıyoruz!</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/tr/programmy-dlya-vosstanovleniya-sistemy-skachat-programmu-dlya-vosstanovleniya.html" rel="bookmark" title="Sistem kurtarma yazılımını indirin Windows sistem kurtarma için en iyi yazılım"><img width="218" height="150" class="entry-thumb" src="/uploads/c59fbfdd5e0e1dab5a7deb07b0bf280a.jpg" alt="Sistem kurtarma yazılımını indirin Windows sistem kurtarma için en iyi yazılım" title="Sistem kurtarma yazılımını indirin Windows sistem kurtarma için en iyi yazılım"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/tr/category/internet/" class="td-post-category">internet</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/tr/programmy-dlya-vosstanovleniya-sistemy-skachat-programmu-dlya-vosstanovleniya.html" rel="bookmark" title="Sistem kurtarma yazılımını indirin Windows sistem kurtarma için en iyi yazılım">Sistem kurtarma yazılımını indirin Windows sistem kurtarma için en iyi yazılım</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/tr/discord-kanaly-diskord-servera-i-kanaly-discord-igrovye-soobshchestva.html" rel="bookmark" title="Discord sunucuları ve Discord kanalları oyun toplulukları"><img width="218" height="150" class="entry-thumb" src="/uploads/d69abc18e33cee8014c26c55b4ed4b5e.jpg" alt="Discord sunucuları ve Discord kanalları oyun toplulukları" title="Discord sunucuları ve Discord kanalları oyun toplulukları"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/tr/category/internet/" class="td-post-category">internet</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/tr/discord-kanaly-diskord-servera-i-kanaly-discord-igrovye-soobshchestva.html" rel="bookmark" title="Discord sunucuları ve Discord kanalları oyun toplulukları">Discord sunucuları ve Discord kanalları oyun toplulukları</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">Önerilen</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/tr/rezervnoe-kopirovanie-i-vosstanovlenie-ot-paragon-software-paragon-backup.html" rel="bookmark" title="Paragon Yedekleme ve Kurtarma Ücretsiz: Yedekleme, Geri Yükleme Paragon Data Rescuer Ücretsiz"><img width="324" height="235" class="entry-thumb" src="/uploads/224d06c67f2ca7b6135ae8526f009c64.jpg" alt="Paragon Yedekleme ve Kurtarma Ücretsiz: Yedekleme, Geri Yükleme Paragon Data Rescuer Ücretsiz" title="Paragon Yedekleme ve Kurtarma Ücretsiz: Yedekleme, Geri Yükleme Paragon Data Rescuer Ücretsiz"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/tr/category/ram/" class="td-post-category">Veri deposu</a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/tr/rezervnoe-kopirovanie-i-vosstanovlenie-ot-paragon-software-paragon-backup.html" rel="bookmark" title="Paragon Yedekleme ve Kurtarma Ücretsiz: Yedekleme, Geri Yükleme Paragon Data Rescuer Ücretsiz">Paragon Yedekleme ve Kurtarma Ücretsiz: Yedekleme, Geri Yükleme Paragon Data Rescuer Ücretsiz</a></h3> <div class="td-module-meta-info"> </div> <div class="td-excerpt">Veri kurtarma, çeşitli nedenlerden dolayı gerekli olabilir: yanlış kullanıcı eylemleri, programların veya bir bütün olarak işletim sisteminin başarısızlığı, ...</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/tr/reiting-utilit-dlya-optimizacii-windows-7-podborka-luchshih-programm-dlya.html" rel="bookmark" title="Bilgisayarınızı çöplerden temizlemek için en iyi programlardan bir seçki"><img width="100" height="70" class="entry-thumb" src="/uploads/fc56182fe22a174c5428612e039773f8.jpg" alt="Bilgisayarınızı çöplerden temizlemek için en iyi programlardan bir seçki" title="Bilgisayarınızı çöplerden temizlemek için en iyi programlardan bir seçki"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/tr/reiting-utilit-dlya-optimizacii-windows-7-podborka-luchshih-programm-dlya.html" rel="bookmark" title="Bilgisayarınızı çöplerden temizlemek için en iyi programlardan bir seçki">Bilgisayarınızı çöplerden temizlemek için en iyi programlardan bir seçki</a></h3> <div class="td-module-meta-info"> <a href="https://obanracer.ru/tr/category/more/" class="td-post-category">Diğer</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/tr/kak-naiti-gde-nahoditsya-telefon-android-kak-naiti-telefon-esli-on-vyklyuchen-i.html" rel="bookmark" title="Telefonunuz kapalıysa ve kaybolursa nasıl bulunur"><img width="100" height="70" class="entry-thumb" src="/uploads/b457ac7b8504fa33b201ea7b6c959334.jpg" alt="Telefonunuz kapalıysa ve kaybolursa nasıl bulunur" title="Telefonunuz kapalıysa ve kaybolursa nasıl bulunur"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/tr/kak-naiti-gde-nahoditsya-telefon-android-kak-naiti-telefon-esli-on-vyklyuchen-i.html" rel="bookmark" title="Telefonunuz kapalıysa ve kaybolursa nasıl bulunur">Telefonunuz kapalıysa ve kaybolursa nasıl bulunur</a></h3> <div class="td-module-meta-info"> <a href="https://obanracer.ru/tr/category/multimedia/" class="td-post-category">Multimedya</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/tr/shifrovanie-ustroistva-android-shifrovanie-android-telefona-chto-znachit.html" rel="bookmark" title="Android telefon şifrelemesi Cihaz şifrelemesi ne anlama geliyor?"><img width="100" height="70" class="entry-thumb" src="/uploads/50b038feccb18c189913f1376706c996.jpg" alt="Android telefon şifrelemesi Cihaz şifrelemesi ne anlama geliyor?" title="Android telefon şifrelemesi Cihaz şifrelemesi ne anlama geliyor?"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/tr/shifrovanie-ustroistva-android-shifrovanie-android-telefona-chto-znachit.html" rel="bookmark" title="Android telefon şifrelemesi Cihaz şifrelemesi ne anlama geliyor?">Android telefon şifrelemesi Cihaz şifrelemesi ne anlama geliyor?</a></h3> <div class="td-module-meta-info"> <a href="https://obanracer.ru/tr/category/windows-8/" class="td-post-category">Windows 8</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/tr/mozhno-li-izmerit-osveshchennost-s-pomoshchyu-telefona-prilozheniya-dlya.html" rel="bookmark" title="Işık ölçümü uygulamaları VS Lux metre: Bir akıllı telefon ışığı ölçebilir mi?"><img width="100" height="70" class="entry-thumb" src="/uploads/fa6a3d20de0f47ff46f2f6b0ef7d7755.jpg" alt="Işık ölçümü uygulamaları VS Lux metre: Bir akıllı telefon ışığı ölçebilir mi?" title="Işık ölçümü uygulamaları VS Lux metre: Bir akıllı telefon ışığı ölçebilir mi?"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/tr/mozhno-li-izmerit-osveshchennost-s-pomoshchyu-telefona-prilozheniya-dlya.html" rel="bookmark" title="Işık ölçümü uygulamaları VS Lux metre: Bir akıllı telefon ışığı ölçebilir mi?">Işık ölçümü uygulamaları VS Lux metre: Bir akıllı telefon ışığı ölçebilir mi?</a></h3> <div class="td-module-meta-info"> <a href="https://obanracer.ru/tr/category/case/" class="td-post-category">Konutlar</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/tr/vklyuchit-ikonku-moi-komp-vin-10-samyi-prostoi-sposob.html" rel="bookmark" title="Bilgisayarım şarap 10 simgesini aç"><img width="100" height="70" class="entry-thumb" src="/uploads/054bb138d6342cacf2464646a06dc059.jpg" alt="Bilgisayarım şarap 10 simgesini aç" title="Bilgisayarım şarap 10 simgesini aç"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/tr/vklyuchit-ikonku-moi-komp-vin-10-samyi-prostoi-sposob.html" rel="bookmark" title="Bilgisayarım şarap 10 simgesini aç">Bilgisayarım şarap 10 simgesini aç</a></h3> <div class="td-module-meta-info"> <a href="https://obanracer.ru/tr/category/graphics-card/" class="td-post-category">ekran kartları</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/tr/pochemu-ne-rabotaet-pc-radio-osnovnye-prichiny-i-ih-reshenie-pochemu-ne-rabotaet-pc.html" rel="bookmark" title="Bilgisayar radyosu neden çalışmıyor Bilgisayar radyosu çalışmıyor çalışmıyor"><img width="100" height="70" class="entry-thumb" src="/uploads/702bbf457bfe3f3d28d61dc6975f2960.jpg" alt="Bilgisayar radyosu neden çalışmıyor Bilgisayar radyosu çalışmıyor çalışmıyor" title="Bilgisayar radyosu neden çalışmıyor Bilgisayar radyosu çalışmıyor çalışmıyor"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/tr/pochemu-ne-rabotaet-pc-radio-osnovnye-prichiny-i-ih-reshenie-pochemu-ne-rabotaet-pc.html" rel="bookmark" title="Bilgisayar radyosu neden çalışmıyor Bilgisayar radyosu çalışmıyor çalışmıyor">Bilgisayar radyosu neden çalışmıyor Bilgisayar radyosu çalışmıyor çalışmıyor</a></h3> <div class="td-module-meta-info"> <a href="https://obanracer.ru/tr/category/monitors/" class="td-post-category">monitörler</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/tr/pochemu-ne-rabotaet-pc-radio-osnovnye-prichiny-i-ih-reshenie-pc-radio.html" rel="bookmark" title="PC-RADIO (çevrimiçi radyo) PC radyosu kanal listesini göstermiyor"><img width="218" height="150" class="entry-thumb" src="/uploads/0be68720558f65005f567fa7875486de.jpg" alt="PC-RADIO (çevrimiçi radyo) PC radyosu kanal listesini göstermiyor" title="PC-RADIO (çevrimiçi radyo) PC radyosu kanal listesini göstermiyor"/ 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/tr/pochemu-ne-rabotaet-pc-radio-osnovnye-prichiny-i-ih-reshenie-pc-radio.html" rel="bookmark" title="PC-RADIO (çevrimiçi radyo) PC radyosu kanal listesini göstermiyor">PC-RADIO (çevrimiçi radyo) PC radyosu kanal listesini göstermiyor</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/tr/dergaetsya-okno-brauzera-dergaetsya-brauzer-pri-dvizheniyah-myshkoi.html" rel="bookmark" title="Fareyi hareket ettirdiğinizde tarayıcı sarsılıyor"><img width="218" height="150" class="entry-thumb" src="/uploads/97e32a30001cdb55b3dd22b64a35b4ab.jpg" alt="Fareyi hareket ettirdiğinizde tarayıcı sarsılıyor" title="Fareyi hareket ettirdiğinizde tarayıcı sarsılıyor"/ 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/tr/dergaetsya-okno-brauzera-dergaetsya-brauzer-pri-dvizheniyah-myshkoi.html" rel="bookmark" title="Fareyi hareket ettirdiğinizde tarayıcı sarsılıyor">Fareyi hareket ettirdiğinizde tarayıcı sarsılıyor</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/tr/metrika-kachestva-v-mashinnom-obuchenii-metriki-v-zadachah-mashinnogo.html" rel="bookmark" title="Makine Öğrenimi Problemlerinde Metrikler"><img width="218" height="150" class="entry-thumb" src="/uploads/d0d742766424de7ece9981746dcc4301.jpg" alt="Makine Öğrenimi Problemlerinde Metrikler" title="Makine Öğrenimi Problemlerinde Metrikler"/ 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/tr/metrika-kachestva-v-mashinnom-obuchenii-metriki-v-zadachah-mashinnogo.html" rel="bookmark" title="Makine Öğrenimi Problemlerinde Metrikler">Makine Öğrenimi Problemlerinde Metrikler</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/tr/chto-oznachaet-metrika-kachestva-v-mashinnom-obuchenii-obuchenie-ranzhirovaniyu.html" rel="bookmark" title="Makine öğreniminde kalite metriği ne anlama geliyor?"><img width="218" height="150" class="entry-thumb" src="/uploads/65315cc4a51b4a22680f7027364d16bc.jpg" alt="Makine öğreniminde kalite metriği ne anlama geliyor?" title="Makine öğreniminde kalite metriği ne anlama geliyor?"/ 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/tr/chto-oznachaet-metrika-kachestva-v-mashinnom-obuchenii-obuchenie-ranzhirovaniyu.html" rel="bookmark" title="Makine öğreniminde kalite metriği ne anlama geliyor?">Makine öğreniminde kalite metriği ne anlama geliyor?</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/tr/nechetkaya-logika-i-iskusstvennye-neironnye-seti-nechetkaya-logika-i-neironnye.html" rel="bookmark" title="Bulanık mantık ve sinir ağları"><img width="218" height="150" class="entry-thumb" src="/uploads/e7aa2292a3a6a86a26a4fbd40b72ca7d.jpg" alt="Bulanık mantık ve sinir ağları" title="Bulanık mantık ve sinir ağları"/ 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/tr/nechetkaya-logika-i-iskusstvennye-neironnye-seti-nechetkaya-logika-i-neironnye.html" rel="bookmark" title="Bulanık mantık ve sinir ağları">Bulanık mantık ve sinir ağları</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/tr/bazovye-algoritmy-obrabotki-izobrazheniya-algoritmy-predvaritelnoi-obrabotki-izobrazhenii-predvaritel.html" rel="bookmark" title="Görüntü ön işleme algoritmaları Görüntü ön işleme"><img width="218" height="150" class="entry-thumb" src="/uploads/9be9f7985473991dca4d3c62bbae68bd.jpg" alt="Görüntü ön işleme algoritmaları Görüntü ön işleme" title="Görüntü ön işleme algoritmaları Görüntü ön işleme"/ 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/tr/bazovye-algoritmy-obrabotki-izobrazheniya-algoritmy-predvaritelnoi-obrabotki-izobrazhenii-predvaritel.html" rel="bookmark" title="Görüntü ön işleme algoritmaları Görüntü ön işleme">Görüntü ön işleme algoritmaları Görüntü ön işleme</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/tr/kakie-byvayut-programmisty-vidy-vidy-yazykov-programmirovaniya-logicheskie.html" rel="bookmark" title="Programlama dilleri türleri"><img width="218" height="150" class="entry-thumb" src="/uploads/ef2aa0067e8afeecd856c01a9b7926e5.jpg" alt="Programlama dilleri türleri" title="Programlama dilleri türleri"/ 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/tr/kakie-byvayut-programmisty-vidy-vidy-yazykov-programmirovaniya-logicheskie.html" rel="bookmark" title="Programlama dilleri türleri">Programlama dilleri türleri</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/tr/informacionnye-tehnologii-v-muzykalnom-obrazovanii.html" rel="bookmark" title="Müzik eğitiminde bilgi teknolojisi"><img width="218" height="150" class="entry-thumb" src="/uploads/ea36abc690b67f93b4e63c92e47591e5.jpg" alt="Müzik eğitiminde bilgi teknolojisi" title="Müzik eğitiminde bilgi teknolojisi"/ 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/tr/informacionnye-tehnologii-v-muzykalnom-obrazovanii.html" rel="bookmark" title="Müzik eğitiminde bilgi teknolojisi">Müzik eğitiminde bilgi teknolojisi</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/tr/ultrazvukovoi-izluchatel-ultrazvukovoi-pezokeramicheskii-preobrazovatel-modeli-nizkogo-volnovogo.html" rel="bookmark" title="Ultrasonik piezoseramik dönüştürücü Düşük empedanslı modeller"><img width="218" height="150" class="entry-thumb" src="/uploads/4260c5b460b5eac4d602b52440c4dfa1.jpg" alt="Ultrasonik piezoseramik dönüştürücü Düşük empedanslı modeller" title="Ultrasonik piezoseramik dönüştürücü Düşük empedanslı modeller"/ 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/tr/ultrazvukovoi-izluchatel-ultrazvukovoi-pezokeramicheskii-preobrazovatel-modeli-nizkogo-volnovogo.html" rel="bookmark" title="Ultrasonik piezoseramik dönüştürücü Düşük empedanslı modeller">Ultrasonik piezoseramik dönüştürücü Düşük empedanslı modeller</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/tr/informacionnye-kompyuternye-tehnologii-i-informacionno-kommunikacionnye-tehnologii-informacionno-ko.html" rel="bookmark" title="Bilgi ve iletişim teknolojisi"><img width="218" height="150" class="entry-thumb" src="/uploads/398abd9e456a594362de96174a04327d.jpg" alt="Bilgi ve iletişim teknolojisi" title="Bilgi ve iletişim teknolojisi"/ 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/tr/informacionnye-kompyuternye-tehnologii-i-informacionno-kommunikacionnye-tehnologii-informacionno-ko.html" rel="bookmark" title="Bilgi ve iletişim teknolojisi">Bilgi ve iletişim teknolojisi</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/tr/sfera-primeneniya-informacionno-kommunikacionnyh-tehnologii-doklad.html" rel="bookmark" title="Rapor "Bilgi ve iletişim teknolojilerinin (BİT) teknoloji derslerinde uygulanması"><img width="218" height="150" class="entry-thumb" src="/uploads/add6caf7f4e5e01b09b2f941473971be.jpg" alt="Rapor "Bilgi ve iletişim teknolojilerinin (BİT) teknoloji derslerinde uygulanması" title="Rapor "Bilgi ve iletişim teknolojilerinin (BİT) teknoloji derslerinde uygulanması"/ 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/tr/sfera-primeneniya-informacionno-kommunikacionnyh-tehnologii-doklad.html" rel="bookmark" title="Rapor "Bilgi ve iletişim teknolojilerinin (BİT) teknoloji derslerinde uygulanması">Rapor "Bilgi ve iletişim teknolojilerinin (BİT) teknoloji derslerinde uygulanması</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/tr/vhodit-v-ikt-tehnologii-informacionno-kommunikativnye-tehnologii.html" rel="bookmark" title="Bilgi ve iletişim teknolojileri konuyla ilgili eğitim ve metodolojik materyal"><img width="218" height="150" class="entry-thumb" src="/uploads/8d76c8fa2b66f95e2bdb2b016e1fad31.jpg" alt="Bilgi ve iletişim teknolojileri konuyla ilgili eğitim ve metodolojik materyal" title="Bilgi ve iletişim teknolojileri konuyla ilgili eğitim ve metodolojik materyal"/ 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/tr/vhodit-v-ikt-tehnologii-informacionno-kommunikativnye-tehnologii.html" rel="bookmark" title="Bilgi ve iletişim teknolojileri konuyla ilgili eğitim ve metodolojik materyal">Bilgi ve iletişim teknolojileri konuyla ilgili eğitim ve metodolojik materyal</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/tr/ispolzovanie-filtra-kalmana-dlya-filtracii-znachenii-poluchaemyh-s.html" rel="bookmark" title="Kalman filtreleme Optimal Kalman filtresi"><img width="218" height="150" class="entry-thumb" src="/uploads/19ca34505e4dfd3c9d3390449390bb56.jpg" alt="Kalman filtreleme Optimal Kalman filtresi" title="Kalman filtreleme Optimal Kalman filtresi"/ 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/tr/ispolzovanie-filtra-kalmana-dlya-filtracii-znachenii-poluchaemyh-s.html" rel="bookmark" title="Kalman filtreleme Optimal Kalman filtresi">Kalman filtreleme Optimal Kalman filtresi</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/tr/kompyuternyi-eksperiment-s-interaktivnoi-fizicheskoi-modelyu.html" rel="bookmark" title="Bilgisayar deneyi Bilgisayar deneyi Yeni tasarım gelişmelerine hayat vermek, yeni teknik çözümleri üretime sokmak"><img width="218" height="150" class="entry-thumb" src="/uploads/438016c602a948146dd68b0932ab20cf.jpg" alt="Bilgisayar deneyi Bilgisayar deneyi Yeni tasarım gelişmelerine hayat vermek, yeni teknik çözümleri üretime sokmak" title="Bilgisayar deneyi Bilgisayar deneyi Yeni tasarım gelişmelerine hayat vermek, yeni teknik çözümleri üretime sokmak"/ 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/tr/kompyuternyi-eksperiment-s-interaktivnoi-fizicheskoi-modelyu.html" rel="bookmark" title="Bilgisayar deneyi Bilgisayar deneyi Yeni tasarım gelişmelerine hayat vermek, yeni teknik çözümleri üretime sokmak">Bilgisayar deneyi Bilgisayar deneyi Yeni tasarım gelişmelerine hayat vermek, yeni teknik çözümleri üretime sokmak</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/tr/ispolzovanie-ikt-tehnologii-informacionno-kommunikacionnye-tehnologii--.html" rel="bookmark" title="Bilgi ve iletişim teknolojileri - sanayi sonrası ekonominin temeli"><img width="218" height="150" class="entry-thumb" src="/uploads/add6caf7f4e5e01b09b2f941473971be.jpg" alt="Bilgi ve iletişim teknolojileri - sanayi sonrası ekonominin temeli" title="Bilgi ve iletişim teknolojileri - sanayi sonrası ekonominin temeli"/ 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/tr/ispolzovanie-ikt-tehnologii-informacionno-kommunikacionnye-tehnologii--.html" rel="bookmark" title="Bilgi ve iletişim teknolojileri - sanayi sonrası ekonominin temeli">Bilgi ve iletişim teknolojileri - sanayi sonrası ekonominin temeli</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/tr/kak-podklyuchit-i-otklyuchit-uslugu-belimitnoe-obshchenie-na-megafone-opciya.html" rel="bookmark" title="Megafon'dan "Sınırsız İnternet" seçeneği Sınırsız dakika Megafon promosyonu devre dışı"><img width="218" height="150" class="entry-thumb" src="/uploads/f5a2796b6f552330196e21a3bbed7d4b.jpg" alt="Megafon'dan "Sınırsız İnternet" seçeneği Sınırsız dakika Megafon promosyonu devre dışı" title="Megafon'dan "Sınırsız İnternet" seçeneği Sınırsız dakika Megafon promosyonu devre dışı"/ 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/tr/kak-podklyuchit-i-otklyuchit-uslugu-belimitnoe-obshchenie-na-megafone-opciya.html" rel="bookmark" title="Megafon'dan "Sınırsız İnternet" seçeneği Sınırsız dakika Megafon promosyonu devre dışı">Megafon'dan "Sınırsız İnternet" seçeneği Sınırsız dakika Megafon promosyonu devre dışı</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/tr/kak-otkryt-iso-fail-v-windows-kak-raspakovat-fail-iso-iso-arhiv.html" rel="bookmark" title="Bir ISO dosyası nasıl açılır?"><img width="218" height="150" class="entry-thumb" src="/uploads/259a0e50f115ea82d15899c527339489.jpg" alt="Bir ISO dosyası nasıl açılır?" title="Bir ISO dosyası nasıl açılır?"/ 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/tr/kak-otkryt-iso-fail-v-windows-kak-raspakovat-fail-iso-iso-arhiv.html" rel="bookmark" title="Bir ISO dosyası nasıl açılır?">Bir ISO dosyası nasıl açılır?</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/tr/i-helicopter-igrushechnyi-vertolet-upravlyaemyi-s-pomoshchyu-iphone-ihelicopter-aivertolet.html" rel="bookmark" title="I-Helicopter, iPhone tarafından kontrol edilen oyuncak bir helikopter"><img width="218" height="150" class="entry-thumb" src="/uploads/30f9b3b5b9db826087bcbf70bcc4aa89.jpg" alt="I-Helicopter, iPhone tarafından kontrol edilen oyuncak bir helikopter" title="I-Helicopter, iPhone tarafından kontrol edilen oyuncak bir helikopter"/ 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/tr/i-helicopter-igrushechnyi-vertolet-upravlyaemyi-s-pomoshchyu-iphone-ihelicopter-aivertolet.html" rel="bookmark" title="I-Helicopter, iPhone tarafından kontrol edilen oyuncak bir helikopter">I-Helicopter, iPhone tarafından kontrol edilen oyuncak bir helikopter</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 - Bilgisayar ve Dizüstü Bilgisayar Onarımı. Video kartları, sabit diskler, internet, monitörler.</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>