XHTML: HTML Merges With XML

eb developers awake! XHTML (Extensible HyperText Markup Language) is coming to a server near you. It’ll change everything you ever knew about Web design, give you untold power on the client and the server, and solve one of the great nagging problems of how to create a Web site without spending billions of dollars on versions for Internet Explorer, Mozilla, AOL, Palm Pilot, your telephone…well, you get the idea. On January 26th, the World Wide Web Consortium (W3C) released the first upgrade of the HTML 4.0 standards in more than a year. Surprisingly, this upgrade wasn’t intended to add a few more tags or incorporate a couple of CSS extensions into the language. Instead, the XHTML 1.0 standard (located at www.w3.org/TR/xhtml1) ceased being HTML (see the sidebar, “History of HTML”).

An XHTML document, in the main, doesn’t appear all that radically different from a “normal” HTML element (see Listing 1). The root of such a document is still an node, the document is divided into a and section, and the tag usage is consistent with what has been produced in HTML editors or by hand for the last decade.

However, you will notice some differences. The first has to do with the fact that this is an XML document. It contains the processing instruction , which both tells the parser that it is an XML document and that it uses the standard 8-bit encoding schema of most typical English documents.

The document’s DOCTYPE declaration is likewise a little different from the norm; it points to the XHTML DTD rather than the HTML 4.0 DTD. One of the big controversies surrounding the XHTML specification had to do with a fight between two distinct factions in the W3C. One group wanted to define only one DTD for the specification, arguing that it would help keep the language simple. The other group felt that there should be three distinct DTDs for three different types of XHTML:

  • Strict. The core HTML within the document followed clearly delineated constraints, and any non-HTML code added to it would need to be added under a separate namespace.
  • Transitional.While the HTML contained in the document has to be XML conformant, the requirements about which elements can be contained where are much less strict?you don’t need a namespace to declare specific non-HTML-based tags. This is primarily a way to start moving other tag-based formatting standards, such as ColdFusion or ASP, into the domain of XML. As its name implies, it is generally considered a transitional state, and should be used principally for older HTML documents being converted into XHTML.
  • Frameset. Frames are for the most part independent of the content that they contain. Because they’re essentially meta-structures, the W3C decided to pull frames out of the base XHTML format and create a distinct namespace for it.

The XHTML document recommended in January 2000 took this latter approach, with three distinct namespaces that you could potentially specify. In practice, unless you work heavily with frames, you will probably only need to worry about the strict DTD.

Namespaces have become fairly common in XML circles lately, but if you’re working in a strictly HTML environment, chances are you’ve not encountered them before. Namespaces serve a simple purpose?they identify a set of tags as belonging to one particular object description. It’s entirely possible that two XML structures might be used together (in XHTML, it’s almost certain) and you need to have some way of distinguishing between a as used to describe the title of an HTML document in the title bar and <title> when used to indicate someone’s job title. </P><P>A namespace associates a specific prefix, a short name or even letter, with an associated URI (Uniform Resource Identifier), as a way of identifying the namespace uniquely. It is not required that the namespace actually point to anything (indeed, most of the common ones don’t)?only that you uniquely identify the namespace relative to other namespaces in the document. For example, this declaration identifies the default namespace (xmlns=”http://www.w3.org…”) for the document, which specifies that unprefixed tags will use the XHTML standard for display:</P><PRE><CODE><html xmlns ="http://www.w3.org/1999/xhtml" xmlns:emp = "http://www.yourCompany.com/employee"></CODE></PRE><P>The default namespace is one where the tags don’t require a prefix to identify them. The declaration then defines a second namespace (xmlns:emp=”http://www.myCompany.com/ ..”‘), which indicates that any element that begins with the prefix “emp:” should be considered to be part of the employee namespace for your company. Thus, you may have an XML structure much like <A href="javascript:showSupportItem('listing2');">Listing 2</A>, where an XHTML document contains an embedded XML island.</P><P>This ability to separate namespaces is an important aspect of XHTML, although to really appreciate its significance, it is worth shifting your viewpoint about HTML from that of a markup language to one where HTML provides the definition of a document object that is in turn made up of paragraph objects, list objects, header objects, form objects, and so forth. The XHTML namespace describes a collection of document objects. A different namespace describes a different object model?a different view of reality that’s focused on objects such as employees and addresses. When you combine two such namespaces together, you define relationships between the two object collections?for example, this section of the document focuses on employees, that HTML table is linked to this other site of financial information, and so forth. This has benefits for both creating sophisticated server-side code for displaying such information, as well as for creating modular output that contains subsets of HTML for different platforms.</P><P>Modularization plays a big part in XHTML, and will play an even bigger part as the specification evolves. One of the chief problems that affects traditional HTML is that it is fundamentally monolithic?as a browser manufacturer, you either implement all of it, or you are non-conformant (which almost all browsers are, with a few mostly academic exceptions). The primary consequence is that, with the advent of Internet-aware PDAs (personal digital assistants) and dedicated WebTV-like devices, you are seeing any number of devices that simply don’t have the bandwidth to support the full specification, and so miss critical pieces of it. </P><P>Recognizing that this consequence is unavoidable, the XHTML recommendation is moving into a modular approach for the specification. Rather than defining a single standard, the XHTML specification defines a core set of “basic” tags that should be considered the minimal level of support (primarily for PDAs and hand-held Internet devices), then adds modules which can be used to expand upon this core set. The principle set of modules that defined XHTML 1.0 is summarized in <A href="javascript:showSupportItem('table1');">Table 1</A>.</P><P>One thing that may become more evident after a few minutes studying the modules is that, for the most part, they don’t make any major changes to the HTML 4.0 specification. This was deliberate?XHTML 1.0 is a means to convert HTML 4.0 (actually HTML 4.1, but the differences there are subtle) into an XML specification.</P><P>However, the modularization that forms the basis for XHTML 1.1 was done because the W3C realized that HTML 4.0 in and of itself isn’t sufficient to handle expanding the language. A browser manufacturer could create a proprietary extension module, for example, that would enable specialized support for that browser. For example, mobile phone companies may want to include an extension to the XHTML specification that would make voice-specific elements available?elements (or attributes) for specifying tonal qualities in synthetic speech agents, language attributes for handling dialectic differences between speakers, and so forth. This extension would be incorporated into a namespace that could generally be filtered out by non-audio clients?they simply wouldn’t recognize the namespace extension for voice interactions, or would be stripped by XSL scripts in servers depending upon client. Similarly, such servers could work in the other direction, encoding XHTML code with VoxML (Voice Markup Language, a voice transcription and recognition format) or similar extensions when “talking” to a voice-enabled client.</P><P>So when can you run an XHTML document? Well, with a few minor constraints, right now. Most browsers that are currently in use are non-validating; they don’t check to see that HTML is completely valid or not, and for the most part will let wildly non-compliant HTML pass through unhindered because the rendering engine (the part of the browser that interprets and displays the HTML) is given some extremely wide latitude in handling output.</P><P>Ironically, this leniency shouldn’t be true of XHTML. XHTML works upon the assumption that the code is pure XML, and an XML parser should complain if the XHTML being passed in isn’t completely valid. Fortunately, the laws for turning “normal” HTML into XHTML are quite simple.</P><P>First, all elements are containers, and must be closed. Any time you create a tag (such as </p> <p>, for paragraph), you must make sure to have a closing tag </p> <p> that closes the current tag. If a tag contains no text or inner elements, it can be terminated with a />. For example, in HTML, the image tag is expressed as <img decoding="async" src="myURL">, while in XML, the same tag should either be closed explicitly: <img decoding="async" src="myURL"></img> or terminated within the bracket itself: <img decoding="async" src="myURL"/>. In addition, all attributes must be enclosed within either single or double quote marks. A practice that, unfortunately, is pretty much carried on by most HTML editors is to not place attributes within quotes (especially ID elements). This means that even if you follow the rules about elements, almost all HTML editors will not produce valid XHTML. </P><P>Attributes must always have expressions. There are a few attributes in HTML, such as the <I>selected</I> tag within <OPTION> tags, that don’t have corresponding attribute values. These attributes are considered invalid, and should be replaced with expressions (such as select=””) when they occur. Note that some earlier Netscape browsers (versions 2.0-3.0) may have trouble with this form. </P><P>One element cannot overlap another element without containing it completely. The expression <b><i>a test</i></b> is valid, but <b><i>a test</b></i> is not because the italics tag overlaps the bold boundaries. Just remember that an XHTML element is a container, and this error will usually not happen. </P><P>To preserve space within an XHTML element, enclose it in a CDATA section. CDATA sections are XML constructs that tell the XML parser to not parse anything within the expression. CDATA sections are delimited by the starting character sequence <![CDATA[and terminate by the string ]]>. This is especially useful with scripts, where the < and > signs may be used for “less than” and “greater than” respectively, not as the start of a tag. In general, if you are conscientious about closing or terminating tags and enclosing attribute values, you’ll head most XML errors off at the pass.</P><P>While the rules for using XHTML are simple, in some (perhaps most) cases, this simple change can play havoc on archived HTML material. What benefits does anyone derive by using XHTML over traditional HTML? To really appreciate the benefits of XHTML, it’s worth understanding a little bit about the true value of XML in the first place. XML isn’t HTML with custom tags?even though that was one of the primary rationales for creating XML in the first place. XML is a language for representing complex relationships between objects (hearkening to the object model discussed previously). Moreover, one of the principle technologies at work with XML is the Extensible Stylesheet Language (XSL).</P><P>If you are familiar with Cascading Style Sheets, you may think that an XSL style sheet is simply a different way of expressing styles. It isn’t. XSL is a technology written in XML that can associate given element patterns in an XML document with other collections of strings (or better yet, with elements from a different XML form). XSL can take an XML document as input and convert it into HTML, for example. However, if that HTML document isn’t also an XML document, then most XSL parsers have to manipulate the HTML as strings, which is much less efficient than manipulating the element as internal binary objects. </P><P>Moreover, XSL can’t transform HTML into XML unless the HTML is also well-formed XML. On the other hand, with XHTML you can perform a direct transformation into another XML structure (or even into different XHTML), pass an XHTML document through but change only a few selected elements, or retrieve information that may be contained in an HTML table and convert it into a different XML structure.</P><P>For example, you could create a relatively simple XSL transform that would read through an XHTML document and convert any expressions of the form <clock:showTime format="long"/> into the expression <span class= "clock">3:25:16 PM PST</span> when displayed. This gives you the capability of creating a tag-based system of output similar to Allaire’s Cold Fusion, but one in which you could explicitly define all of the actions that you wanted to perform.</P><P>Similarly, you could store XHTML blocks within an XML document or server that could then be easily retrieved through the use of another XML technology?XPath. XPath gives you a way to perform fairly complex queries on the nodes and extract data at any level of complexity. Most traditional index servers use a brute force method to index a site?recording the positions of given words in their respective files. The results of such searches are thus only as current as the last time the site was indexed, and moreover prove problematic when dealing with dynamically generated data. </P><P>With XHTML, on the other hand, the information can be retrieved much more topically?if you know the best structure of the documents at hand, you could specifically retrieve only those sections within documents that pertain to the current record. For example, you could retrieve only the tables in a document, or only Table 3 in the document, or only tables that contained Northwest sales amounts for Fall 1999 in excess of $20,000,000 dollars. This level of specificity compares favorably to that of SQL, without any of the headaches of dealing with JOINs and trying to reconstruct hierarchical data.</P><P>Yet the biggest benefit to XHTML is that it makes it possible to target your data to any device whatsoever. Consider a news site such as CNN.COM. The site could conceivably (though they don’t now) produce basic XML information consisting of news stories with specific key words denoted to add context to the information, perhaps coupled with multimedia such as audio files, transcriptions, video streams with SMIL-based timing to handle interactive charts rendered in SVG (Structured Vector Graphics), and dynamic links. The top stories are dispensed into an XML-formatted document that is used to retrieve salient information for teasers, coupled with a second XML document consisting of advertising media links that are keyed upon specific elements in the stories themselves (a fashion show might feature clothing and makeup advertisements, a football story would show beer, a terrorist incident with life insurance information, and so forth). </P><P>When you connect to CNN.COM, the server queries your browser and determines which modules of XHTML your client supports. Your Internet Explorer or Mozilla browser running on a high-end machine on a T3 might receive the full treatment?the aggregate XML gets filtered through XSL to produce full multimedia streams which your client can then filter and display based upon its own built-in XSL transforms. The Palm Pilot gets XHTML Lite, given the relevant stories but with limited graphics (although perhaps with keys in the XHTML so that the parser can retrieve specific information from the stories itself for synopsis and later retrieval). The cell phone would get headlines, text, and basic links, but could be switched into audio mode (and output through your car’s stereo system) so that the stories could be read by voice software, and could in turn send signals back based upon vocal commands (encoded in VoxML) to the server to change the story and retrieve the latest highway report.</P><P>This isn’t a fantasy. All of the technologies described here are currently doable. Moreover, while it is certainly possible to build formatting software for either producing or extracting information from regular text streams (such as through ASP or JSP), such software has to be custom written for every format change, typically at incredible expense. With XHTML (and XML in general), you can specify the transforms that you want, and use them in highly modular fashions, designing only those pieces that affect a small piece of the stream.</P><P>You want to change the look of the site? Change the XSL filter. You want to target the latest holographic browser (okay, maybe there is a <I>little</I> fantasy here) with your server? Pull in the browser’s XHTML extension from the manufacturer’s Web site (if it’s not already cached), use XSL to aggregate the profile elements into a schema, then use another XSL transform to output the results into 3DML (3-Dimensional Markup Language) with a side stream in XHTML for the attached 2D browser. </P><P>If you wanted to purchase the cool computer shown in the holographic viewer, your forms browser would in turn send back an envelope of form data to the CNN XML server, and convert it into an XML-based purchase order supported by the vendor of the product. The vendor, in turn, would send a payment request to your bank (which, in turn, sends more XHTML back to you to authenticate the purchase). </P><P>Put another way, the advantage to XHTML is that it becomes a part of the XML pipeline?a fairly transparent part that does not need to be hand coded. Certainly it can be?much of the Web is still made up of sites that are hand coded because they are expressions of art rather than commerce?but XHTML will likely end up changing the way that most Web sites handle almost all of their output, and can free up people from the relatively mundane tasks of formatting content and move them into the more challenging roles of creating the content in the first place.</P></p> </div> </div> <div class="elementor-element elementor-element-4f9883d elementor-widget elementor-widget-post-navigation" data-id="4f9883d" data-element_type="widget" data-widget_type="post-navigation.default"> <div class="elementor-widget-container"> <div class="elementor-post-navigation"> <div class="elementor-post-navigation__prev elementor-post-navigation__link"> <a href="https://www.devx.com/tip-bank/13810/" rel="prev"><span class="elementor-post-navigation__link__prev"><span class="post-navigation__prev--label">Previous</span></span></a> </div> <div class="elementor-post-navigation__next elementor-post-navigation__link"> <a href="https://www.devx.com/tip-bank/13811/" rel="next"><span class="elementor-post-navigation__link__next"><span class="post-navigation__next--label">Next</span></span></a> </div> </div> </div> </div> <section class="elementor-section elementor-inner-section elementor-element elementor-element-277ab1 elementor-section-full_width elementor-section-content-middle elementor-section-height-default elementor-section-height-default" data-id="277ab1" data-element_type="section"> <div class="elementor-container elementor-column-gap-no"> <div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-584e67da" data-id="584e67da" data-element_type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-2bf5b4bc elementor-widget elementor-widget-heading" data-id="2bf5b4bc" data-element_type="widget" data-widget_type="heading.default"> <div class="elementor-widget-container"> <span class="elementor-heading-title elementor-size-default">Share the Post:</span> </div> </div> </div> </div> <div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-2288ce90" data-id="2288ce90" data-element_type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-496b8f65 elementor-share-buttons--view-icon elementor-share-buttons--skin-minimal elementor-share-buttons--color-custom elementor-share-buttons--shape-square elementor-grid-0 elementor-widget elementor-widget-share-buttons" data-id="496b8f65" data-element_type="widget" data-widget_type="share-buttons.default"> <div class="elementor-widget-container"> <link rel="stylesheet" href="https://www.devx.com/wp-content/plugins/elementor-pro/assets/css/widget-share-buttons.min.css"> <div class="elementor-grid"> <div class="elementor-grid-item"> <div class="elementor-share-btn elementor-share-btn_facebook"> <span class="elementor-share-btn__icon"> <i class="fab fa-facebook" aria-hidden="true"></i> <span class="elementor-screen-only">Share on facebook</span> </span> </div> </div> <div class="elementor-grid-item"> <div class="elementor-share-btn elementor-share-btn_twitter"> <span class="elementor-share-btn__icon"> <i class="fab fa-twitter" aria-hidden="true"></i> <span class="elementor-screen-only">Share on twitter</span> </span> </div> </div> <div class="elementor-grid-item"> <div class="elementor-share-btn elementor-share-btn_linkedin"> <span class="elementor-share-btn__icon"> <i class="fab fa-linkedin" aria-hidden="true"></i> <span class="elementor-screen-only">Share on linkedin</span> </span> </div> </div> </div> </div> </div> </div> </div> </div> </section> </div> </div> <div class="elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-8905b95" data-id="8905b95" data-element_type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-46d69df elementor-widget elementor-widget-html" data-id="46d69df" data-element_type="widget" data-widget_type="html.default"> <div class="elementor-widget-container"> <iframe id="JotFormIFrame-230167013128041" title="Daily Technology News Straight to Your Inbox" onload="window.parent.scrollTo(0,0)" allowtransparency="true" allowfullscreen="true" allow="geolocation; microphone; camera" src="https://form.jotform.com/230167013128041" frameborder="0" style=" min-width: 100%; height:539px; border:none;" scrolling="no" > </iframe> <script type="text/javascript"> var ifr = document.getElementById("JotFormIFrame-230167013128041"); if (ifr) { var src = ifr.src; var iframeParams = []; if (window.location.href && window.location.href.indexOf("?") > -1) { iframeParams = iframeParams.concat(window.location.href.substr(window.location.href.indexOf("?") + 1).split('&')); } if (src && src.indexOf("?") > -1) { iframeParams = iframeParams.concat(src.substr(src.indexOf("?") + 1).split("&")); src = src.substr(0, src.indexOf("?")) } iframeParams.push("isIframeEmbed=1"); ifr.src = src + "?" + iframeParams.join('&'); } window.handleIFrameMessage = function(e) { if (typeof e.data === 'object') { return; } var args = e.data.split(":"); if (args.length > 2) { iframe = document.getElementById("JotFormIFrame-" + args[(args.length - 1)]); } else { iframe = document.getElementById("JotFormIFrame"); } if (!iframe) { return; } switch (args[0]) { case "scrollIntoView": iframe.scrollIntoView(); break; case "setHeight": iframe.style.height = args[1] + "px"; if (!isNaN(args[1]) && parseInt(iframe.style.minHeight) > parseInt(args[1])) { iframe.style.minHeight = args[1] + "px"; } break; case "collapseErrorPage": if (iframe.clientHeight > window.innerHeight) { iframe.style.height = window.innerHeight + "px"; } break; case "reloadPage": window.location.reload(); break; case "loadScript": if( !window.isPermitted(e.origin, ['jotform.com', 'jotform.pro']) ) { break; } var src = args[1]; if (args.length > 3) { src = args[1] + ':' + args[2]; } var script = document.createElement('script'); script.src = src; script.type = 'text/javascript'; document.body.appendChild(script); break; case "exitFullscreen": if (window.document.exitFullscreen) window.document.exitFullscreen(); else if (window.document.mozCancelFullScreen) window.document.mozCancelFullScreen(); else if (window.document.mozCancelFullscreen) window.document.mozCancelFullScreen(); else if (window.document.webkitExitFullscreen) window.document.webkitExitFullscreen(); else if (window.document.msExitFullscreen) window.document.msExitFullscreen(); break; } var isJotForm = (e.origin.indexOf("jotform") > -1) ? true : false; if(isJotForm && "contentWindow" in iframe && "postMessage" in iframe.contentWindow) { var urls = {"docurl":encodeURIComponent(document.URL),"referrer":encodeURIComponent(document.referrer)}; iframe.contentWindow.postMessage(JSON.stringify({"type":"urls","value":urls}), "*"); } }; window.isPermitted = function(originUrl, whitelisted_domains) { var url = document.createElement('a'); url.href = originUrl; var hostname = url.hostname; var result = false; if( typeof hostname !== 'undefined' ) { whitelisted_domains.forEach(function(element) { if( hostname.slice((-1 * element.length - 1)) === '.'.concat(element) || hostname === element ) { result = true; } }); return result; } }; if (window.addEventListener) { window.addEventListener("message", handleIFrameMessage, false); } else if (window.attachEvent) { window.attachEvent("onmessage", handleIFrameMessage); } </script> </div> </div> <div class="elementor-element elementor-element-87227ec elementor-hidden-tablet elementor-hidden-mobile elementor-toc--minimized-on-tablet elementor-widget elementor-widget-table-of-contents" data-id="87227ec" data-element_type="widget" data-settings="{"headings_by_tags":["h2"],"exclude_headings_by_selector":[],"marker_view":"bullets","icon":{"value":"fas fa-circle","library":"fa-solid"},"minimize_box":"yes","minimized_on":"tablet","hierarchical_view":"yes","min_height":{"unit":"px","size":"","sizes":[]},"min_height_tablet":{"unit":"px","size":"","sizes":[]},"min_height_mobile":{"unit":"px","size":"","sizes":[]}}" data-widget_type="table-of-contents.default"> <div class="elementor-widget-container"> <style>/*! elementor-pro - v3.6.2 - 14-02-2022 */ .elementor-widget-table-of-contents .elementor-toc__header-title{color:var(--header-color)}.elementor-widget-table-of-contents.elementor-toc--collapsed .elementor-toc__toggle-button--collapse,.elementor-widget-table-of-contents:not(.elementor-toc--collapsed) .elementor-toc__toggle-button--expand{display:none}.elementor-widget-table-of-contents .elementor-widget-container{min-height:var(--box-min-height);border:var(--box-border-width,1px) solid var(--box-border-color,#a4afb7);border-radius:var(--box-border-radius,3px);background-color:var(--box-background-color);-webkit-transition:min-height .4s;-o-transition:min-height .4s;transition:min-height .4s;overflow:hidden}.elementor-toc__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:var(--box-padding,20px);background-color:var(--header-background-color);border-bottom:var(--separator-width,1px) solid var(--box-border-color,#a4afb7)}.elementor-toc__header-title{font-size:18px;margin:0;color:var(--header-color)}.elementor-toc__toggle-button{cursor:pointer;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.elementor-toc__toggle-button i{color:var(--toggle-button-color)}.elementor-toc__toggle-button svg{height:1em;width:1em;fill:var(--toggle-button-color)}.elementor-toc__spinner-container{text-align:center}.elementor-toc__spinner{font-size:2em}.elementor-toc__spinner.e-font-icon-svg{height:1em;width:1em}.elementor-toc__body{padding:var(--box-padding,20px);max-height:var(--toc-body-max-height);overflow-y:auto}.elementor-toc__body::-webkit-scrollbar{width:7px}.elementor-toc__body::-webkit-scrollbar-thumb{background-color:#c2cbd2;border-radius:10px}.elementor-toc__list-wrapper{list-style:none;padding:0}.elementor-toc__list-item{margin-bottom:.5em}.elementor-toc__list-item.elementor-item-active{font-weight:700}.elementor-toc__list-item .elementor-toc__list-wrapper{margin-top:.5em;margin-left:var(--nested-list-indent,1em)}.elementor-toc__list-item-text:hover{color:var(--item-text-hover-color);-webkit-text-decoration:var(--item-text-hover-decoration);text-decoration:var(--item-text-hover-decoration)}.elementor-toc__list-item-text.elementor-item-active{color:var(--item-text-active-color);-webkit-text-decoration:var(--item-text-active-decoration);text-decoration:var(--item-text-active-decoration)}.elementor-toc__list-item-text-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-toc__list-item-text-wrapper:before,.elementor-toc__list-item-text-wrapper i{margin-right:8px;color:var(--marker-color)}.elementor-toc__list-item-text-wrapper svg{margin-right:8px;fill:var(--marker-color);height:var(--marker-size,.5em);width:var(--marker-size,.5em)}.elementor-toc__list-item-text-wrapper i{font-size:var(--marker-size,.5em)}.elementor-toc__list-item-text-wrapper:before{font-size:var(--marker-size,1em)}.elementor-toc--content-ellipsis .elementor-toc__list-item-text{white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-toc__list-items--collapsible>.elementor-toc__list-wrapper>.elementor-toc__list-item>.elementor-toc__list-wrapper{display:none}.elementor-toc__heading-anchor{position:absolute}.elementor-toc__body .elementor-toc__list-item-text{color:var(--item-text-color);-webkit-text-decoration:var(--item-text-decoration);text-decoration:var(--item-text-decoration)}.elementor-toc__body .elementor-toc__list-item-text:hover{color:var(--item-text-hover-color);-webkit-text-decoration:var(--item-text-hover-decoration);text-decoration:var(--item-text-hover-decoration)}.elementor-toc__body .elementor-toc__list-item-text.elementor-item-active{color:var(--item-text-active-color);-webkit-text-decoration:var(--item-text-active-decoration);text-decoration:var(--item-text-active-decoration)}ol.elementor-toc__list-wrapper{counter-reset:item}ol.elementor-toc__list-wrapper .elementor-toc__list-item{counter-increment:item}ol.elementor-toc__list-wrapper .elementor-toc__list-item-text-wrapper:before{content:counters(item,".") ". "}@media only screen and (max-width:-1px){.elementor-toc--minimized-on-tablet_extra .elementor-toc__body{display:none}}@media only screen and (max-width:1024px){.elementor-toc--minimized-on-tablet .elementor-toc__body{display:none}}@media only screen and (max-width:-1px){.elementor-toc--minimized-on-mobile_extra .elementor-toc__body{display:none}}@media only screen and (max-width:767px){.elementor-toc--minimized-on-mobile .elementor-toc__body{display:none}}</style> <div class="elementor-toc__header"> <h4 class="elementor-toc__header-title"> Overview </h4> <div class="elementor-toc__toggle-button elementor-toc__toggle-button--expand"><i class="fas fa-chevron-down"></i></div> <div class="elementor-toc__toggle-button elementor-toc__toggle-button--collapse"><i class="fas fa-chevron-up"></i></div> </div> <div class="elementor-toc__body"> <div class="elementor-toc__spinner-container"> <i class="elementor-toc__spinner eicon-animation-spin eicon-loading" aria-hidden="true"></i> </div> </div> </div> </div> </div> </div> </div> </section> <section class="elementor-section elementor-top-section elementor-element elementor-element-7ef94119 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="7ef94119" data-element_type="section"> <div class="elementor-container elementor-column-gap-default"> <div class="elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-59974df2" data-id="59974df2" data-element_type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-ab68ddb elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="ab68ddb" data-element_type="widget" data-widget_type="divider.default"> <div class="elementor-widget-container"> <style>/*! elementor - v3.5.5 - 03-02-2022 */ .elementor-widget-divider{--divider-border-style:none;--divider-border-width:1px;--divider-color:#2c2c2c;--divider-icon-size:20px;--divider-element-spacing:10px;--divider-pattern-height:24px;--divider-pattern-size:20px;--divider-pattern-url:none;--divider-pattern-repeat:repeat-x}.elementor-widget-divider .elementor-divider{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-divider .elementor-divider__text{font-size:15px;line-height:1;max-width:95%}.elementor-widget-divider .elementor-divider__element{margin:0 var(--divider-element-spacing);-ms-flex-negative:0;flex-shrink:0}.elementor-widget-divider .elementor-icon{font-size:var(--divider-icon-size)}.elementor-widget-divider .elementor-divider-separator{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0;direction:ltr}.elementor-widget-divider--view-line_icon .elementor-divider-separator,.elementor-widget-divider--view-line_text .elementor-divider-separator{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-widget-divider--view-line_icon .elementor-divider-separator:after,.elementor-widget-divider--view-line_icon .elementor-divider-separator:before,.elementor-widget-divider--view-line_text .elementor-divider-separator:after,.elementor-widget-divider--view-line_text .elementor-divider-separator:before{display:block;content:"";border-bottom:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;border-top:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--element-align-left .elementor-divider .elementor-divider-separator>.elementor-divider__svg:first-of-type{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:100;flex-shrink:100}.elementor-widget-divider--element-align-left .elementor-divider-separator:before{content:none}.elementor-widget-divider--element-align-left .elementor-divider__element{margin-left:0}.elementor-widget-divider--element-align-right .elementor-divider .elementor-divider-separator>.elementor-divider__svg:last-of-type{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:100;flex-shrink:100}.elementor-widget-divider--element-align-right .elementor-divider-separator:after{content:none}.elementor-widget-divider--element-align-right .elementor-divider__element{margin-right:0}.elementor-widget-divider:not(.elementor-widget-divider--view-line_text):not(.elementor-widget-divider--view-line_icon) .elementor-divider-separator{border-top:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--separator-type-pattern{--divider-border-style:none}.elementor-widget-divider--separator-type-pattern.elementor-widget-divider--view-line .elementor-divider-separator,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:after,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:before,.elementor-widget-divider--separator-type-pattern:not([class*=elementor-widget-divider--view]) .elementor-divider-separator{width:100%;min-height:var(--divider-pattern-height);-webkit-mask-size:var(--divider-pattern-size) 100%;mask-size:var(--divider-pattern-size) 100%;-webkit-mask-repeat:var(--divider-pattern-repeat);mask-repeat:var(--divider-pattern-repeat);background-color:var(--divider-color);-webkit-mask-image:var(--divider-pattern-url);mask-image:var(--divider-pattern-url)}.elementor-widget-divider--no-spacing{--divider-pattern-size:auto}.elementor-widget-divider--bg-round{--divider-pattern-repeat:round}.rtl .elementor-widget-divider .elementor-divider__text{direction:rtl}</style> <div class="elementor-divider"> <span class="elementor-divider-separator"> </span> </div> </div> </div> <div class="elementor-element elementor-element-2298c708 elementor-widget elementor-widget-heading" data-id="2298c708" data-element_type="widget" data-widget_type="heading.default"> <div class="elementor-widget-container"> <p class="elementor-heading-title elementor-size-default">The Latest </p> </div> </div> <div class="elementor-element elementor-element-39bd7056 elementor-grid-1 elementor-posts--thumbnail-right elementor-grid-tablet-2 elementor-grid-mobile-1 elementor-widget elementor-widget-posts" data-id="39bd7056" data-element_type="widget" data-settings="{"classic_columns":"1","classic_columns_tablet":"2","classic_columns_mobile":"1","classic_row_gap":{"unit":"px","size":35,"sizes":[]},"classic_row_gap_tablet":{"unit":"px","size":"","sizes":[]},"classic_row_gap_mobile":{"unit":"px","size":"","sizes":[]}}" data-widget_type="posts.classic"> <div class="elementor-widget-container"> <link rel="stylesheet" href="https://www.devx.com/wp-content/plugins/elementor-pro/assets/css/widget-posts.min.css"> <div class="elementor-posts-container elementor-posts elementor-posts--skin-classic elementor-grid"> <article class="elementor-post elementor-grid-item post-24735 post type-post status-publish format-standard has-post-thumbnail hentry category-technology tag-audio tag-customer-service tag-podcast"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/technology/your-company-audio-really-matters/" > <div class="elementor-post__thumbnail"><img width="1920" height="1162" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="attachment-full size-full ewww_webp" alt="your company's audio" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/your-companys-audio.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/your-companys-audio.jpg.webp" data-eio="j" /><noscript><img width="1920" height="1162" src="https://www.devx.com/wp-content/uploads/your-companys-audio.jpg" class="attachment-full size-full" alt="your company's audio" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/technology/your-company-audio-really-matters/" > 4 Areas of Your Company Where Your Audio Really Matters </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-date"> February 2, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>Your company probably relies on audio more than you realize. Whether you’re creating a spoken text message to a colleague or giving a speech, you want your audio to shine. Otherwise, you could cause avoidable friction points and potentially hurt your brand reputation. For example, let’s say you create a</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-24738 post type-post status-publish format-standard has-post-thumbnail hentry category-controls tag-chrome tag-chrome-os-device"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/controls/how-to-turn-on-chrome-os-developer-mode/" > <div class="elementor-post__thumbnail"><img width="1920" height="1280" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="attachment-full size-full ewww_webp" alt="chrome os developer mode" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/chrome-os-developer-mode.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/chrome-os-developer-mode.jpg.webp" data-eio="j" /><noscript><img width="1920" height="1280" src="https://www.devx.com/wp-content/uploads/chrome-os-developer-mode.jpg" class="attachment-full size-full" alt="chrome os developer mode" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/controls/how-to-turn-on-chrome-os-developer-mode/" > How to Turn on Chrome OS Developer Mode </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-date"> February 1, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>Google’s Chrome OS is a popular operating system that is widely used on Chromebooks and other devices. While it is designed to be simple and user-friendly, there are times when users may want to access additional features and functionality. One way to do this is by turning on Chrome OS</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-24626 post type-post status-publish format-standard has-post-thumbnail hentry category-technology tag-real-estate-industry tag-technology-in-real-estate tag-wholesale-real-estate"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/technology/tech-trends-impacting-the-real-estate-industry/" > <div class="elementor-post__thumbnail"><img width="1920" height="1080" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="attachment-full size-full ewww_webp" alt="homes in the real estate industry" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/real-estsate-industry.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/real-estsate-industry.jpg.webp" data-eio="j" /><noscript><img width="1920" height="1080" src="https://www.devx.com/wp-content/uploads/real-estsate-industry.jpg" class="attachment-full size-full" alt="homes in the real estate industry" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/technology/tech-trends-impacting-the-real-estate-industry/" > Exploring the Latest Tech Trends Impacting the Real Estate Industry </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-date"> January 31, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>The real estate industry is changing thanks to the newest technological advancements. These new developments — from blockchain and AI to virtual reality and 3D printing — are poised to change how we buy and sell homes. Real estate brokers, buyers, sellers, wholesale real estate professionals, fix and flippers, and beyond may</p> </div> </div> </article> </div> </div> </div> </div> </div> <div class="elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-e055498" data-id="e055498" data-element_type="column"> <div class="elementor-widget-wrap"> </div> </div> </div> </section> </div> <footer data-elementor-type="footer" data-elementor-id="23300" class="elementor elementor-23300 elementor-location-footer" data-elementor-settings="[]"> <section class="elementor-section elementor-top-section elementor-element elementor-element-c97199d elementor-section-content-middle elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="c97199d" data-element_type="section" data-settings="{"background_background":"classic"}"> <div class="elementor-container elementor-column-gap-default"> <div class="elementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-291c4e4" data-id="291c4e4" data-element_type="column"> <div class="elementor-widget-wrap"> </div> </div> <div class="elementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-92d2c65" data-id="92d2c65" data-element_type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-269b367 elementor-nav-menu__align-center elementor-nav-menu--dropdown-tablet elementor-nav-menu__text-align-aside elementor-nav-menu--toggle elementor-nav-menu--burger elementor-widget elementor-widget-nav-menu" data-id="269b367" data-element_type="widget" data-settings="{"layout":"horizontal","submenu_icon":{"value":"<i class=\"fas fa-caret-down\"><\/i>","library":"fa-solid"},"toggle":"burger"}" data-widget_type="nav-menu.default"> <div class="elementor-widget-container"> <nav migration_allowed="1" migrated="0" role="navigation" class="elementor-nav-menu--main elementor-nav-menu__container elementor-nav-menu--layout-horizontal e--pointer-underline e--animation-fade"> <ul id="menu-1-269b367" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-23808"><a href="https://www.devx.com/" class="elementor-item">Home</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-23809"><a href="https://www.devx.com/advertise/" class="elementor-item">Advertise</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-23816"><a href="https://www.devx.com/about/" class="elementor-item">About</a></li> </ul> </nav> <div class="elementor-menu-toggle" role="button" tabindex="0" aria-label="Menu Toggle" aria-expanded="false"> <i aria-hidden="true" role="presentation" class="elementor-menu-toggle__icon--open eicon-menu-bar"></i><i aria-hidden="true" role="presentation" class="elementor-menu-toggle__icon--close eicon-close"></i> <span class="elementor-screen-only">Menu</span> </div> <nav class="elementor-nav-menu--dropdown elementor-nav-menu__container" role="navigation" aria-hidden="true"> <ul id="menu-2-269b367" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-23808"><a href="https://www.devx.com/" class="elementor-item" tabindex="-1">Home</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-23809"><a href="https://www.devx.com/advertise/" class="elementor-item" tabindex="-1">Advertise</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-23816"><a href="https://www.devx.com/about/" class="elementor-item" tabindex="-1">About</a></li> </ul> </nav> </div> </div> </div> </div> <div class="elementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-280ec0d" data-id="280ec0d" data-element_type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-5d5f4dc5 elementor-shape-rounded elementor-grid-0 e-grid-align-center elementor-widget elementor-widget-social-icons" data-id="5d5f4dc5" data-element_type="widget" data-widget_type="social-icons.default"> <div class="elementor-widget-container"> <style>/*! elementor - v3.5.5 - 03-02-2022 */ .elementor-widget-social-icons.elementor-grid-0 .elementor-widget-container,.elementor-widget-social-icons.elementor-grid-mobile-0 .elementor-widget-container,.elementor-widget-social-icons.elementor-grid-tablet-0 .elementor-widget-container{line-height:1;font-size:0}.elementor-widget-social-icons:not(.elementor-grid-0):not(.elementor-grid-tablet-0):not(.elementor-grid-mobile-0) .elementor-grid{display:inline-grid}.elementor-widget-social-icons .elementor-grid{grid-column-gap:var(--grid-column-gap,5px);grid-row-gap:var(--grid-row-gap,5px);grid-template-columns:var(--grid-template-columns);-webkit-box-pack:var(--justify-content,center);-ms-flex-pack:var(--justify-content,center);justify-content:var(--justify-content,center);justify-items:var(--justify-content,center)}.elementor-icon.elementor-social-icon{font-size:var(--icon-size,25px);line-height:var(--icon-size,25px);width:calc(var(--icon-size, 25px) + (2 * var(--icon-padding, .5em)));height:calc(var(--icon-size, 25px) + (2 * var(--icon-padding, .5em)))}.elementor-social-icon{--e-social-icon-icon-color:#fff;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;background-color:#818a91;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center;cursor:pointer}.elementor-social-icon i{color:var(--e-social-icon-icon-color)}.elementor-social-icon svg{fill:var(--e-social-icon-icon-color)}.elementor-social-icon:last-child{margin:0}.elementor-social-icon:hover{opacity:.9;color:#fff}.elementor-social-icon-android{background-color:#a4c639}.elementor-social-icon-apple{background-color:#999}.elementor-social-icon-behance{background-color:#1769ff}.elementor-social-icon-bitbucket{background-color:#205081}.elementor-social-icon-codepen{background-color:#000}.elementor-social-icon-delicious{background-color:#39f}.elementor-social-icon-deviantart{background-color:#05cc47}.elementor-social-icon-digg{background-color:#005be2}.elementor-social-icon-dribbble{background-color:#ea4c89}.elementor-social-icon-elementor{background-color:#d30c5c}.elementor-social-icon-envelope{background-color:#ea4335}.elementor-social-icon-facebook,.elementor-social-icon-facebook-f{background-color:#3b5998}.elementor-social-icon-flickr{background-color:#0063dc}.elementor-social-icon-foursquare{background-color:#2d5be3}.elementor-social-icon-free-code-camp,.elementor-social-icon-freecodecamp{background-color:#006400}.elementor-social-icon-github{background-color:#333}.elementor-social-icon-gitlab{background-color:#e24329}.elementor-social-icon-globe{background-color:#818a91}.elementor-social-icon-google-plus,.elementor-social-icon-google-plus-g{background-color:#dd4b39}.elementor-social-icon-houzz{background-color:#7ac142}.elementor-social-icon-instagram{background-color:#262626}.elementor-social-icon-jsfiddle{background-color:#487aa2}.elementor-social-icon-link{background-color:#818a91}.elementor-social-icon-linkedin,.elementor-social-icon-linkedin-in{background-color:#0077b5}.elementor-social-icon-medium{background-color:#00ab6b}.elementor-social-icon-meetup{background-color:#ec1c40}.elementor-social-icon-mixcloud{background-color:#273a4b}.elementor-social-icon-odnoklassniki{background-color:#f4731c}.elementor-social-icon-pinterest{background-color:#bd081c}.elementor-social-icon-product-hunt{background-color:#da552f}.elementor-social-icon-reddit{background-color:#ff4500}.elementor-social-icon-rss{background-color:#f26522}.elementor-social-icon-shopping-cart{background-color:#4caf50}.elementor-social-icon-skype{background-color:#00aff0}.elementor-social-icon-slideshare{background-color:#0077b5}.elementor-social-icon-snapchat{background-color:#fffc00}.elementor-social-icon-soundcloud{background-color:#f80}.elementor-social-icon-spotify{background-color:#2ebd59}.elementor-social-icon-stack-overflow{background-color:#fe7a15}.elementor-social-icon-steam{background-color:#00adee}.elementor-social-icon-stumbleupon{background-color:#eb4924}.elementor-social-icon-telegram{background-color:#2ca5e0}.elementor-social-icon-thumb-tack{background-color:#1aa1d8}.elementor-social-icon-tripadvisor{background-color:#589442}.elementor-social-icon-tumblr{background-color:#35465c}.elementor-social-icon-twitch{background-color:#6441a5}.elementor-social-icon-twitter{background-color:#1da1f2}.elementor-social-icon-viber{background-color:#665cac}.elementor-social-icon-vimeo{background-color:#1ab7ea}.elementor-social-icon-vk{background-color:#45668e}.elementor-social-icon-weibo{background-color:#dd2430}.elementor-social-icon-weixin{background-color:#31a918}.elementor-social-icon-whatsapp{background-color:#25d366}.elementor-social-icon-wordpress{background-color:#21759b}.elementor-social-icon-xing{background-color:#026466}.elementor-social-icon-yelp{background-color:#af0606}.elementor-social-icon-youtube{background-color:#cd201f}.elementor-social-icon-500px{background-color:#0099e5}.elementor-shape-rounded .elementor-icon.elementor-social-icon{-webkit-border-radius:10%;border-radius:10%}.elementor-shape-circle .elementor-icon.elementor-social-icon{-webkit-border-radius:50%;border-radius:50%}</style> <div class="elementor-social-icons-wrapper elementor-grid"> <span class="elementor-grid-item"> <a class="elementor-icon elementor-social-icon elementor-social-icon-linkedin elementor-repeater-item-5c0ce3c" href="https://www.linkedin.com/company/devx" target="_blank"> <span class="elementor-screen-only">Linkedin</span> <i class="fab fa-linkedin"></i> </a> </span> <span class="elementor-grid-item"> <a class="elementor-icon elementor-social-icon elementor-social-icon-twitter elementor-repeater-item-828f132" href="https://twitter.com/DevX_Com" target="_blank"> <span class="elementor-screen-only">Twitter</span> <i class="fab fa-twitter"></i> </a> </span> </div> </div> </div> </div> </div> <div class="elementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-47707c2" data-id="47707c2" data-element_type="column"> <div class="elementor-widget-wrap"> </div> </div> </div> </section> <footer class="elementor-section elementor-top-section elementor-element elementor-element-1588a538 elementor-section-height-min-height elementor-section-content-middle elementor-section-boxed elementor-section-height-default elementor-section-items-middle" data-id="1588a538" data-element_type="section" data-settings="{"background_background":"classic"}"> <div class="elementor-container elementor-column-gap-no"> <div class="elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-9d2a788" data-id="9d2a788" data-element_type="column"> <div class="elementor-widget-wrap"> </div> </div> <div class="elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-2e0ce949" data-id="2e0ce949" data-element_type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-4a914653 elementor-widget elementor-widget-heading" data-id="4a914653" data-element_type="widget" data-widget_type="heading.default"> <div class="elementor-widget-container"> <p class="elementor-heading-title elementor-size-default">©2023 Copyright DevX - All Rights Reserved. Registration or use of this site constitutes acceptance of our Terms of Service and Privacy Policy.</p> </div> </div> <div class="elementor-element elementor-element-d2cf216 elementor-widget elementor-widget-text-editor" data-id="d2cf216" data-element_type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <style>/*! elementor - v3.5.5 - 03-02-2022 */ .elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#818a91;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#818a91;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}</style> <p><strong><a href="https://www.devx.com/sitemap/">Sitemap</a></strong></p> </div> </div> </div> </div> <div class="elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-5aef7f0" data-id="5aef7f0" data-element_type="column"> <div class="elementor-widget-wrap"> </div> </div> </div> </footer> <section class="elementor-section elementor-top-section elementor-element elementor-element-64311df elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="64311df" data-element_type="section"> <div class="elementor-container elementor-column-gap-default"> <div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1e7467d" data-id="1e7467d" data-element_type="column"> <div class="elementor-widget-wrap"> </div> </div> </div> </section> </footer> <link rel='stylesheet' id='elementor-icons-fa-regular-css' href='https://www.devx.com/wp-content/plugins/elementor/assets/lib/font-awesome/css/regular.min.css?ver=5.15.3' type='text/css' media='all' /> <script type='text/javascript' src='https://www.devx.com/wp-content/themes/devxnew/assets/js/hello-frontend.min.js?ver=1.0.0' id='hello-theme-frontend-js'></script> <script type='text/javascript' src='https://www.devx.com/wp-content/plugins/elementor-pro/assets/lib/smartmenus/jquery.smartmenus.min.js?ver=1.0.1' id='smartmenus-js'></script> <script type='text/javascript' src='https://www.devx.com/wp-includes/js/imagesloaded.min.js?ver=4.1.4' id='imagesloaded-js'></script> <script type='text/javascript' src='https://www.devx.com/wp-content/plugins/elementor-pro/assets/js/webpack-pro.runtime.min.js?ver=3.6.2' id='elementor-pro-webpack-runtime-js'></script> <script type='text/javascript' src='https://www.devx.com/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js?ver=3.5.5' id='elementor-webpack-runtime-js'></script> <script type='text/javascript' src='https://www.devx.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.5.5' id='elementor-frontend-modules-js'></script> <script type='text/javascript' src='https://www.devx.com/wp-includes/js/dist/vendor/regenerator-runtime.min.js?ver=0.13.9' id='regenerator-runtime-js'></script> <script type='text/javascript' src='https://www.devx.com/wp-includes/js/dist/vendor/wp-polyfill.min.js?ver=3.15.0' id='wp-polyfill-js'></script> <script type='text/javascript' src='https://www.devx.com/wp-includes/js/dist/hooks.min.js?ver=4169d3cf8e8d95a3d6d5' id='wp-hooks-js'></script> <script type='text/javascript' src='https://www.devx.com/wp-includes/js/dist/i18n.min.js?ver=9e794f35a71bb98672ae' id='wp-i18n-js'></script> <script type='text/javascript' id='wp-i18n-js-after'> wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); </script> <script type='text/javascript' id='elementor-pro-frontend-js-before'> var ElementorProFrontendConfig = {"ajaxurl":"https:\/\/www.devx.com\/wp-admin\/admin-ajax.php","nonce":"6b03076ebf","urls":{"assets":"https:\/\/www.devx.com\/wp-content\/plugins\/elementor-pro\/assets\/","rest":"https:\/\/www.devx.com\/wp-json\/"},"shareButtonsNetworks":{"facebook":{"title":"Facebook","has_counter":true},"twitter":{"title":"Twitter"},"linkedin":{"title":"LinkedIn","has_counter":true},"pinterest":{"title":"Pinterest","has_counter":true},"reddit":{"title":"Reddit","has_counter":true},"vk":{"title":"VK","has_counter":true},"odnoklassniki":{"title":"OK","has_counter":true},"tumblr":{"title":"Tumblr"},"digg":{"title":"Digg"},"skype":{"title":"Skype"},"stumbleupon":{"title":"StumbleUpon","has_counter":true},"mix":{"title":"Mix"},"telegram":{"title":"Telegram"},"pocket":{"title":"Pocket","has_counter":true},"xing":{"title":"XING","has_counter":true},"whatsapp":{"title":"WhatsApp"},"email":{"title":"Email"},"print":{"title":"Print"}},"facebook_sdk":{"lang":"en_US","app_id":""},"lottie":{"defaultAnimationUrl":"https:\/\/www.devx.com\/wp-content\/plugins\/elementor-pro\/modules\/lottie\/assets\/animations\/default.json"}}; </script> <script type='text/javascript' src='https://www.devx.com/wp-content/plugins/elementor-pro/assets/js/frontend.min.js?ver=3.6.2' id='elementor-pro-frontend-js'></script> <script type='text/javascript' src='https://www.devx.com/wp-content/plugins/elementor/assets/lib/waypoints/waypoints.min.js?ver=4.0.2' id='elementor-waypoints-js'></script> <script type='text/javascript' src='https://www.devx.com/wp-includes/js/jquery/ui/core.min.js?ver=1.13.2' id='jquery-ui-core-js'></script> <script type='text/javascript' id='elementor-frontend-js-before'> var elementorFrontendConfig = {"environmentMode":{"edit":false,"wpPreview":false,"isScriptDebug":false},"i18n":{"shareOnFacebook":"Share on Facebook","shareOnTwitter":"Share on Twitter","pinIt":"Pin it","download":"Download","downloadImage":"Download image","fullscreen":"Fullscreen","zoom":"Zoom","share":"Share","playVideo":"Play Video","previous":"Previous","next":"Next","close":"Close"},"is_rtl":false,"breakpoints":{"xs":0,"sm":480,"md":768,"lg":1025,"xl":1440,"xxl":1600},"responsive":{"breakpoints":{"mobile":{"label":"Mobile","value":767,"default_value":767,"direction":"max","is_enabled":true},"mobile_extra":{"label":"Mobile Extra","value":880,"default_value":880,"direction":"max","is_enabled":false},"tablet":{"label":"Tablet","value":1024,"default_value":1024,"direction":"max","is_enabled":true},"tablet_extra":{"label":"Tablet Extra","value":1200,"default_value":1200,"direction":"max","is_enabled":false},"laptop":{"label":"Laptop","value":1366,"default_value":1366,"direction":"max","is_enabled":false},"widescreen":{"label":"Widescreen","value":2400,"default_value":2400,"direction":"min","is_enabled":false}}},"version":"3.5.5","is_static":false,"experimentalFeatures":{"e_dom_optimization":true,"e_optimized_assets_loading":true,"e_optimized_css_loading":true,"a11y_improvements":true,"e_import_export":true,"additional_custom_breakpoints":true,"e_hidden_wordpress_widgets":true,"theme_builder_v2":true,"hello-theme-header-footer":true,"landing-pages":true,"elements-color-picker":true,"favorite-widgets":true,"admin-top-bar":true,"page-transitions":true,"form-submissions":true,"e_scroll_snap":true},"urls":{"assets":"https:\/\/www.devx.com\/wp-content\/plugins\/elementor\/assets\/"},"settings":{"page":[],"editorPreferences":[]},"kit":{"body_background_background":"classic","active_breakpoints":["viewport_mobile","viewport_tablet"],"global_image_lightbox":"yes","lightbox_enable_counter":"yes","lightbox_enable_fullscreen":"yes","lightbox_enable_zoom":"yes","lightbox_enable_share":"yes","lightbox_title_src":"title","lightbox_description_src":"description","hello_header_logo_type":"logo","hello_header_menu_layout":"horizontal","hello_footer_logo_type":"logo"},"post":{"id":22384,"title":"XHTML%3A%20HTML%20Merges%20With%20XML%20%20-%20DevX","excerpt":"","featuredImage":"https:\/\/www.devx.com\/wp-content\/uploads\/2022\/02\/thumbnail.jpg"}}; </script> <script type='text/javascript' src='https://www.devx.com/wp-content/plugins/elementor/assets/js/frontend.min.js?ver=3.5.5' id='elementor-frontend-js'></script> <script type='text/javascript' src='https://www.devx.com/wp-content/plugins/elementor-pro/assets/js/elements-handlers.min.js?ver=3.6.2' id='pro-elements-handlers-js'></script> </body> </html> <!-- Dynamic page generated in 2.244 seconds. --> <!-- Cached page generated by WP-Super-Cache on 2023-02-02 21:09:47 --> <!-- Compression = gzip -->