Occasional XSLT for Experienced Software Developers

Occasional XSLT for Experienced Software Developers

ML appears in some form in most modern applications?and often needs to be transformed from one form into another: merged, split, massaged, or simply reformatted into HTML. In most cases, it’s far more robust and efficient to use XSLT to perform such transformations than to use common programming languages such as Java, VB.NET, or C#. But because XSLT is an add-on rather than a core language, most developers use XSLT only occasionally, and have neither time nor resources to dive into the peculiarities of XSLT development or to explore the paradigms of functional and flow-driven programming that efficient use of XSLT requires.

Such occasional use carries the danger of abusing programming techniques suitable for mainstream languages such as Java, C and Python, but that can lead to disastrous results when applied to XSLT.

However, you can avoid the problems of occasional use by studying a few applications of different well-known programming problems to an XSLT programming task through this set of simple, thoroughly explained exercises.

An XSLT processor takes an XML document as input, processes it, and outputs the content in (usually) some altered form, such as XML, HTML, or text. Here’s a simple XML document that serves as the basis for the input examples in this article:

                  David Flannagan       JavaScript: The Definitive Guide                 David Flannagan       JavaScript: The Definitive Guide                 Dan Margulis       Photoshop 6 for Professionals        

The document describes several books in a bookstore, providing the ISBN number, a language code, author, and title for each book.

Flow-driven XSLT
Suppose you needed to extract all the book titles in the following form:

           JavaScript: The Definitive Guide     JavaScript: The Definitive Guide     Photoshop 6 for Professionals   

A flow-driven XSLT stylesheet example might look like this:

                                                                                          

The stylesheet matches the root node right away (), and then enforces the control flow afterwards by pointing to each node using the combination of the for-each construct and the call-template function.

The example above is somewhat incomplete as it does not give exactly the same output as the one defined in the problem definition. Indeed, once you launch it, the result is one long line resembling this:

      JavaScript: The Definitive Guide   JavaScript: The Definitive GuidePhotoshop 6 for Professionals

To format it nicely, you have to add one more statement to the XSLT stylesheet:

   

The indent=”yes” activates the indentation. It is also wise to specify an output encoding explicitly, even though UTF-8 is the default encoding for XSLT.

Now, suppose you make the input file a bit more complex, introducing sections and rows to locate books more easily in the bookstore:

           
David Flannagan JavaScript: The Definitive Guide David Flannagan JavaScript: The Definitive Guide Dan Margulis Photoshop 6 for Professionals

If you try to continue in the flow-driven way, the XSLT must grow considerably (and as you’ll see, needlessly) to adapt to the format change, adding templates to iterate over and process the

and elements:

                                                                                                                                                                        

Event-driven XSLT
Fortunately, you can make the transformation much simpler by using matched templates. A matched template is one the XSLT processor triggers when its “match” attribute matches the current (context) node, whether that’s simply the name of a tag or a more complex XPath expression. For example, the processor will trigger the following template whenever the context node is a “lang” attribute (the ampersand denotes an attribute node rather than an element node).

        This element has the follwing language id:   

By processing the file through matched templates, the code makes as few assumptions as possible about the format of the input file. For example, the following stylesheet outputs exactly the same result for both input files, even though their hierarchical formats differ significantly. Here’s the revised stylesheet:

                                                                                            

This event-driven version matches the root element?regardless of its name?by using the single backslash (/) syntax. Next, it outputs the root tag, and instructs the stylesheet to continue the iteration over the contents of the current or context node (the root node in this case) with the apply-templates call.

If you apply this stylesheet to the second input file, you’ll get the following result:

                     JavaScript: The Definitive Guide         JavaScript: The Definitive Guide         Photoshop 6 for Professionals         

The output is indeed the same as for the first input file, except for one minor annoyance. There are some gratuitous carriage returns before and after the </span> tags that cause the extra white space in the output.</p> <p>After trying to determine the cause of these extra carriage returns, an occasional XSLT programmer might just drop the simple event-driven approach altogether in favor of the more complex flow-driven one. But if you instead explore the <a href='http://www.w3.org/TR/xslt' target='_blank'>XSLT specification</a>, you’ll find a <a href="JavaScript:showSupportItem('sidebar1');">built-in template</a> that copies text through and thus outputs the carriage returns:</p> <pre><code> <xsl:template match="text()"> <xsl:value-of select="."/> </xsl:template></code></pre> <p>In the example above, the carriage returns stem from the inside of the <span class="pf"></p> <section></span>, <span class="pf"><row></span>, and <span class="pf"><book></span> tags of the input document, one for each tag.</p> <p>To correct that, you can add one line to the event-driven stylesheet that matches <span class="pf">text()</span> nodes as follows:</p> <pre><code> <xsl:template match="text()"/> </code></pre> <p>That line gets rid of the carriage returns by overriding the built-in text template using a custom version that produces no output.</p> <p>The key point to take away here is that almost any useful XSLT stylesheet should override at least two of the <a href="JavaScript:showSupportItem('sidebar1');">built-in templates</a>: the one for text, shown above, and the one that matches all nodes, which is:</p> <pre><code> <xsl:template match="*|/"> <xsl:apply-templates/> </xsl:template></code></pre> <p>The built-in template for nodes copies nothing to the output, but by invoking the <span class="pf"><xsl:apply-templates/></span> call, allows other templates to match children of the current tag. In other words, any XSLT stylesheet processes all the nodes in the input document <em>by default</em>.</p> <table align="center" width="95%" border="1" cellpadding="3" style="color: red; background: white"> <tr> <td>Author’s Note: You can gain fine-grained control over extra whitespace characters in the XSLT output by using the <span class="pf"><xsl:preserve-space></span> and <span class="pf"><xsl:strip-space></span> constructs in the stylesheet, or by using the <span class="pf">xml:space</span> attribute on XML tags in the input files.</td> </tr> </table> <p><strong>Imperative XSLT</strong><br />Unlike most programming languages, XSLT does not favor sequential execution. This is manifested by the verbosity of the related language constructs such as <span class="pf">switch</span> and <span class="pf">for-each</span>, and by weak support of side-effects (no variables in the traditional sense)</p> <p>This common example illustrates the verbosity of the imperative approach, which constructs an HTML table, placing the book names in rows and alternating colors on odd and even rows from the input document:</p> <pre><code> <?xml version="1.0" encoding="utf-8"?> <table> <tr> <td style="color:red;">David Flannagan</td> </tr> <tr> <td style="color:blue;">David Flannagan</td> </tr> <tr> <td style="color:red;">Dan Margulis</td> </tr> </table> </code></pre> <table border="0" cellspacing="0" cellpadding="5" align="right" width="175"> <tr> <td valign="top"><a href="JavaScript:showSupportItem('figure1');"><img decoding="async" border="0" alt="" src="/assets/articlefigs/13354.jpg" width="175" height="53"></a></td> <td width="12"> </td> </tr> <tr> <td class="smallfont"><a href="JavaScript:showSupportItem('figure1');">Figure 1</a>. Table with Alternating Colors: The figure shows how alternating red and blue rows of content might render in a browser.</td> </tr> </table> <p><a href="JavaScript:showSupportItem('figure1');">Figure 1</a> shows how a browser would render the preceding code.</p> <p>Here’s how you can accomplish the task in the imperative style:</p> <pre><code> <?xml version="1.0" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output indent="yes" encoding="utf-8"/> <xsl:strip-space elements="*"/> <xsl:template match="row"> <table> <xsl:for-each select="book[1]"> <xsl:call-template name="process-book"> <xsl:with-param name="even" select="false()"/> </xsl:call-template> </xsl:for-each> </table> </xsl:template> <xsl:template name="process-book"> <xsl:param name="even"/> <xsl:choose> <xsl:when test="$even"> <tr><td style="color:blue;" > <xsl:value-of select="author"/></td></tr> </xsl:when> <xsl:otherwise> <tr><td style="color:red;" > <xsl:value-of select="author"/></td></tr> </xsl:otherwise> </xsl:choose> <xsl:for-each select="following-sibling::book[1]"> <xsl:call-template name="process-book"> <xsl:with-param name="even" select="not($even)"/> </xsl:call-template> </xsl:for-each> </xsl:template> <xsl:template match="text()"/> </xsl:stylesheet></code></pre> <p>The stylesheet creates one table for each <span class="pf"><row></span> element in the input, so it first matches the row tag. Then, it uses the <span class="pf">for-each</span> construct to change the execution context to the first book node, calling the <span class="pf">process-book</span> template for each with a parameter that controls the row color in the HTML table. The <span class="pf">process-book</span> template then outputs the row, with either a red or a blue color depending on the value of the parameter, and calls itself to process the next book element with the opposite parameter value.</p> <p>As you can see, this processing method gets complex very quickly, and you’d need to alter it for every format alteration in the input XML file.</p> <p><strong>Declarative XSLT</strong><br />For XSLT, declarative is the opposite of the common imperative or algorithmic strategy; that is, an XSLT programmer does <em>not define a sequence of actions</em> that form an algorithm but rather sets a number of rules that the result should satisfy.</p> <p>The declarative nature of the language lets you place templates anywhere and in any order in the XSLT document, because order has no impact on the resulting document.</p> <table align="center" width="95%" border="1" cellpadding="3" style="color: red; background: white"> <tr> <td>Author’s Note: The preceding rule applies except in cases of conflict resolution where order is the last decision criteria. </td> </tr> </table> <p>Here is a stylesheet written with the declarative approach that provides the same output:</p> <pre><code> <?xml version="1.0" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output indent="yes" encoding="utf-8"/> <xsl:strip-space elements="*"/> <xsl:template match="/"> <table> <xsl:apply-templates select="@*|node()"/> </table> </xsl:template> <xsl:template match="book[(position() mod 2)=0]"> <tr><td style="color:red;"> <xsl:value-of select="author"/></td></tr> </xsl:template> <xsl:template match="book[(position() mod 2)=1]"> <tr><td style="color:blue;" > <xsl:value-of select="author"/></td></tr> </xsl:template> <xsl:template match="text()"/> </xsl:stylesheet></code></pre> <p>In contrast to the procedural approach, this version doesn’t define any algorithm. Instead, it specifies two templates for the processor to match: one for even-numbered rows and one for odd-numbered rows. The processor outputs the contents in red for even-numbered elements and in blue for odd-numbered elements.</p> <p><strong>Key Indexing in XSLT</strong><br />You can simplify a fair portion of XSLT processing if you understand how to use keys. Keys in XSLT have more or less the same meaning that indexes have in relational databases, except that in XSLT, keys index hierarchical structure rather than relational structure. It’s easiest to explain keys with an example.</p> <p>Imagine that you need to count the number of book copies available for each book title and display them in an HTML table, where each row looks like this:</p> <pre><code> ... <tr> <td>JavaScript: The Definitive Guide</td> <td>2</td> </tr> ...</code></pre> <p>Here’s a possible solution that illustrates the use of keys:</p> <pre><code> <?xml version="1.0" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output indent="yes" encoding="utf-8"/> <xsl:key name="kbook" match="book" use="title"/> <xsl:template match="/"> <table> <xsl:apply-templates select="node()|@*"/> </table> </xsl:template> <xsl:template match="book"> <tr> <td> <xsl:value-of select="title"/> </td><td> <xsl:value-of select="count(key('kbook',title))"/> </td> </tr> </xsl:template> <xsl:template match="text()"/> </xsl:stylesheet></code></pre> <p>In the preceding example, the key declaration has three parts: the <span class="pf">name</span> of the key, used to refer to it later in the code, the <span class="pf">match</span>, that is, the element or attribute of the input data to be indexed, and the <span class="pf">use</span> which is an XPath expression that defines the key itself. XPath is a language for addressing parts of an XML document, designed to be used by XSLT and XPointer. See the full <a href='http://www.w3.org/TR/xpath' target='_blank'>language specification</a> for more information.</p> <p>In this particular case, the expression <span class="pf"><xsl:key name="kbook" match="book" use="title"/></span> literally means: <em>Create a key with the name kbook on all the tags book and group them by title. </em></p> <p>The “book” template uses the key by calling the function <span class="pf">key()</span> with two parameters: the name of the key and the value of the index as defined in the <span class="pf">@use</span> attribute of the key declaration?in this case, simply “title” as that’s the child of the context <span class="pf"><book></span> node. Quite expectedly, this stylesheet would produce two identical lines for the book “JavaScript: The Definitive Guide” as shown below.</p> <pre><code> <?xml version="1.0" encoding="utf-8"?> <table> <tr> <td>JavaScript: The Definitive Guide</td> <td>2</td> </tr> <tr> <td>JavaScript: The Definitive Guide</td> <td>2</td> </tr> <tr> <td>Photoshop 6 for Professionals</td> <td>1</td> </tr> </table></code></pre> <p>That leads to another common XSLT problem: removing duplicates.</p> <p><strong>Removing Duplicates: the Muenchian Method</strong><br />Because XSLT is an almost side-effect-free declarative language, the problem of removing duplicates?ridiculously simple in imperative languages such as C++ or Java?becomes overly complicated. But fortunately, an elegant solution exists, so unexpected that it even earned its own name, “Muenchian,” because Steve Muench was reportedly the first to discover it.</p> <pre><code> <?xml version="1.0" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output indent="yes" encoding="utf-8"/> <xsl:key name="kbook" match="book" use="title"/> <xsl:template match="/"> <table> <xsl:apply-templates select="node()|@*"/> </table> </xsl:template> <xsl:template match="book"> <xsl:if test="generate-id()= generate-id(key('kbook',title)[1])"> <tr> <td> <xsl:value-of select="title"/> </td><td> <xsl:value-of select="count(key('kbook',title))"/> </td> </tr> </xsl:if> </xsl:template> <xsl:template match="text()"/> </xsl:stylesheet></code></pre> <p>Notice that the key declaration in this example is identical to the previous example. You use the <span class="pf">generate-id()</span> function to obtain a unique id for each node, which ensures that every time you pass in the same <span class="pf"><book></span> node, you get the same ID. The ID value depends on which XSLT processor implementation you’re using, but typically, ID would be something like <span class="pf">n1n1</span> or <span class="pf">d1md1</span> or some other meaningless string. This example uses the key in a conditional expression that compares the ID of the current node with the ID of the <em>first</em> node returned by the key that matches the title of the current node. In other words, the key that matches “JavaScript: The Definitive Guide” returns two nodes ordered as 1 and 2. During execution, the template matching <span class="pf"><book></span> passes in those same two nodes. When processing node 1, the ID of the node is the same as returned by the key <span class="pf">key(‘kbook’,’JavaScript: The Definitive Guide’)[1]</span>; but when processing node 2, the condition is <span class="pf">false</span>. Thus, the stylesheet processes only one book that matches the title “JavaScript: The Definitive Guide.”</p> <p><strong>Using Complex Keys in XSLT</strong><br />Because the <span class="pf">use</span> attribute of the key definition is an XPath expression, it’s possible to create quite elaborate indexes that rely upon complex XPath statements. As an example, <span class="pf">generate-id()</span> makes a unique key for every <span class="pf"><book></span> node.</p> <pre><code> <xsl:key name="kbook" match="book" use="generate-id()"/> </code></pre> <p>The International Standard Book Number, or ISBN (sometimes pronounced “is-ben”), is a unique identifier for books, intended to be used commercially. The following declaration calculates the checksum of an ISBN number by returning <span class="pf">true</span> if the checksum passes the test and <span class="pf">false</span> otherwise.</p> <p>You can find the check digit of an ISBN by first multiplying each digit of the ISBN by that digit’s place in the number sequence, with the leftmost digit being multiplied by 1, the next digit by 2, and so on. Next, take the sum of these multiplications and calculate the sum modulo 11, with “10” represented by the character “X”. As an example, for the ISBN 1-56592-235-2, the calculation would be <span class="pf">(1*1 + 2*5 + 3*6 + 4*5 + 5*9 + 6*2 + 7*2 + 8*3 + 9*5) mod 11</span>. The <a href='http://www.w3.org/TR/xpath#function-translate' target='_blank'>translate</a> function deletes all the dash (-) characters from the <span class="pf">@isbn</span> attribute value. The following example uses the <span class="pf"><a href='http://www.w3.org/TR/xpath#function-substring' target='_blank'>substring</a></span> function to extract each character from the string returned by translate.</p> <pre><code> <xsl:key name="kbook" match="book" use="boolean( (substring(translate(@isbn, '-',''), 1,1) * 1 + substring(translate(@isbn, '-',''), 2,1) * 2 + substring(translate(@isbn, '-',''), 3,1) * 3 + substring(translate(@isbn, '-',''), 4,1) * 4 + substring(translate(@isbn, '-',''), 5,1) * 5 + substring(translate(@isbn, '-',''), 6,1) * 6 + substring(translate(@isbn, '-',''), 7,1) * 7 + substring(translate(@isbn, '-',''), 8,1) * 8 + substring(translate(@isbn, '-',''), 9,1) * 9) mod 11 - substring(translate(@isbn, '-',''),10,1)) or (boolean( (substring(translate(@isbn, '-',''), 1,1) * 1 + substring(translate(@isbn, '-',''), 2,1) * 2 + substring(translate(@isbn, '-',''), 3,1) * 3 + substring(translate(@isbn, '-',''), 4,1) * 4 + substring(translate(@isbn, '-',''), 5,1) * 5 + substring(translate(@isbn, '-',''), 6,1) * 6 + substring(translate(@isbn, '-',''), 7,1) * 7 + substring(translate(@isbn, '-',''), 8,1) * 8 + substring(translate(@isbn, '-',''), 9,1) * 9) mod 11 = 10) and (substring(translate(@isbn, '-',''),10,1)) = 'X')"/></code></pre> <p><strong>Branching vs. Modes in XSLT</strong><br />XSLT’s branching powers are weak compared to the branching statements of conventional languages. Instead, you can use the powerful mechanism of modes?often unexplored by occasional XSLT programmers.</p> <p>Suppose you have to print all the titles and their respective ISBN codes, checking for the ISBN code validity at the same time. You could represent the desired result as follows:</p> <pre><code> <?xml version="1.0" encoding="utf-8"?> <table> <th>ISBN number check failed</th> <tr> <td class="color:red;">1-56592-235-1</td> </tr> </table><table> <th>ISBN number check passed</th> <tr> <td>1-56592-235-2</td> </tr> <tr> <td>0-471-40399-7</td> </tr> </table></code></pre> <p>Without knowing how to use keys and modes, you might implement the solution with the following stylesheet logic:</p> <pre><code> <xsl:choose> <xsl:when test=""> </xsl:when> <xsl:otherwise> </xsl:otherwise> </xsl:choose></code></pre> <p>This example would construct the table by iterating on the ISBN nodes and choosing whether to output <span class="pf">class=”color:red;”</span> on each pass. This would be easy if you weren’t obliged to group the result and output all the failed ISBN codes first. For the purpose of grouping, the use of keys and modes leads to much simpler code, the alternatives being extension functions or chaining of two different XSLT stylesheets.</p> <pre><code> <?xml version="1.0" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output indent="yes" encoding="utf-8"/> <xsl:key name="kbook" match="book" use="boolean( (substring(translate(@isbn, '-',''), 1,1) * 1 + substring(translate(@isbn, '-',''), 2,1) * 2 + substring(translate(@isbn, '-',''), 3,1) * 3 + substring(translate(@isbn, '-',''), 4,1) * 4 + substring(translate(@isbn, '-',''), 5,1) * 5 + substring(translate(@isbn, '-',''), 6,1) * 6 + substring(translate(@isbn, '-',''), 7,1) * 7 + substring(translate(@isbn, '-',''), 8,1) * 8 + substring(translate(@isbn, '-',''), 9,1) * 9) mod 11 - substring(translate(@isbn, '-',''),10,1)) or (boolean( (substring(translate(@isbn, '-',''), 1,1) * 1 + substring(translate(@isbn, '-',''), 2,1) * 2 + substring(translate(@isbn, '-',''), 3,1) * 3 + substring(translate(@isbn, '-',''), 4,1) * 4 + substring(translate(@isbn, '-',''), 5,1) * 5 + substring(translate(@isbn, '-',''), 6,1) * 6 + substring(translate(@isbn, '-',''), 7,1) * 7 + substring(translate(@isbn, '-',''), 8,1) * 8 + substring(translate(@isbn, '-',''), 9,1) * 9) mod 11 = 10) and (substring(translate(@isbn, '-',''),10,1)) = 'X')"/> <xsl:template match="/"> <table> <th>ISBN number check failed</th> <xsl:apply-templates select="key('kbook',true())" mode="failed"/> </table> <table> <th>ISBN number check passed</th> <xsl:apply-templates select="key('kbook',false())" mode="passed"/> </table> </xsl:template> <xsl:template match="book" mode="failed"> <tr> <td class="color:red;"> <xsl:value-of select="@isbn"/> </td> </tr> </xsl:template> <xsl:template match="book" mode="passed"> <tr> <td> <xsl:value-of select="@isbn"/> </td> </tr> </xsl:template> <xsl:template match="text()"/> </xsl:stylesheet></code></pre> <p>This version processes both types of <span class="pf">book</span> nodes?those that did not pass checksum verification for their ISBN codes, and those that did?using separate templates for the <span class="pf">failed</span> and <span class="pf">passed</span> modes. The stylesheet outputs ISBN values in red for books with ISBN codes that fail the checksum test.</p> <p><strong>Extending XSLT</strong><br />Sometimes XSLT turns to be too lexically poor to do complex transformations. Two viable options then exist:</p> <ul> <li>Chain the execution of XSLTs instead of trying to do everything in one pass.</li> <li>Use common extension functions from the <a href="http://www.exslt.org" target="_blank">EXSLT package</a>.</li> </ul> <p><strong>Chaining XSLT Execution</strong><br />Contrary to what one might think, chaining XSLT stylesheets?using the output of one stylesheet transformation as the input for the next stylesheet in the chain?does not add much overhead if done in a proper way. Although nearly all XSLT processors reconstruct the structure of the input document in memory for each pass, that process is not equivalent to the reconstruction of a DOM tree. Most XSLT processors use an internal format that may be a lot faster. In fact, a number of small XSLT stylesheets chained together can actually boost performance as compared to a single complex stylesheet.</p> <p><strong>Using Common Extension Functions</strong><br />There is an effort to provide a more or less common set of extensions to XSLT with the corresponding reference implementations. Some of these functions already exist in various XSLT processors under different names.</p> <p>The most notable function is node-set. It allows the conversion of <em>result tree fragments</em> into <em>node-sets</em>. If you create a variable with a <span class="pf">select</span> statement, it returns a node-set:</p> <pre><code> <xsl:variable name="foo" select="/"/></code></pre> <p>In contrast, if you create a variable with an embedded statement, it returns a result tree fragment:</p> <pre><code> <xsl:variable name="foo"> <xsl:copy-of select="/"> </xsl:variable></code></pre> <p>Because XSLT allows more operations on node-sets, it is wise to use the <span class="pf">select</span> statement when possible instead of embedded statements. Otherwise, the node-set extension function would come to the rescue.</p> <p>The node-set extension function exists for several processors: <a href='http://4suite.org/' target='_blank'>4XSLT</a>, <a href='http://xml.apache.org/xalan-j' target='_blank'>Xalan-J</a>, <a href='http://users.iclway.co.uk/mhkay/saxon/index.html' target='_blank'>Saxon</a>, <a href='http://webservices.xml.com/pub/r/1031' target='_blank'>jd.xslt</a>, and <a href='http://xmlsoft.org/XSLT/' target='_blank'>libxslt</a>, and you make it accessible to your stylesheets by including the namespace <span class="pf">http://exslt.org/common</span>.</p> <pre><code> <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ext="http://exslt.org/common" version="1.0"> <xsl:variable name="all"> <xsl:copy-of select="child::*[1]"> </xsl:variable> <xsl:template select="/"> <root> <xsl:copy-of select="ext:node-set($all)"> </root> </xsl:template> </xsl:stylesheet></code></pre> <p>As a sign of EXSLT’s popularity, even Microsoft supports some of the EXSLT functions. However, Microsoft uses a different namespace: <span class="pf">urn:schemas-microsoft-com:xslt</span>.</p> <p>Overall, as an occasional XSLT developer, try to keep the advantages of functional and flow-driven programming in mind?and be wary of falling into the trap of trying to use the procedural or imperative programming techniques that you commonly use in standard programming languages.</p> </div> </div> <div class="elementor-element elementor-element-d5a4ee5 elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="d5a4ee5" data-element_type="widget" data-widget_type="divider.default"> <div class="elementor-widget-container"> <style>/*! elementor - v3.12.2 - 23-04-2023 */ .elementor-widget-divider{--divider-border-style:none;--divider-border-width:1px;--divider-color:#0c0d0e;--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: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);flex-shrink:0}.elementor-widget-divider .elementor-icon{font-size:var(--divider-icon-size)}.elementor-widget-divider .elementor-divider-separator{display:flex;margin:0;direction:ltr}.elementor-widget-divider--view-line_icon .elementor-divider-separator,.elementor-widget-divider--view-line_text .elementor-divider-separator{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;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{flex-grow:0;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{flex-grow:0;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}.e-con-inner>.elementor-widget-divider,.e-con>.elementor-widget-divider{width:var(--container-widget-width,100%);--flex-grow:var(--container-widget-flex-grow)}</style> <div class="elementor-divider"> <span class="elementor-divider-separator"> </span> </div> </div> </div> <div class="elementor-element elementor-element-4b5870b elementor-author-box--avatar-yes elementor-author-box--name-yes elementor-author-box--biography-yes elementor-widget elementor-widget-author-box" data-id="4b5870b" data-element_type="widget" data-widget_type="author-box.default"> <div class="elementor-widget-container"> <div class="elementor-author-box"> <div class="elementor-author-box__avatar"> <img src="https://secure.gravatar.com/avatar/1efbc73950b8e4707c5db1cc648e1a42?s=300&d=mm&r=g" alt="devx-admin"> </div> <div class="elementor-author-box__text"> <div > <h4 class="elementor-author-box__name"> devx-admin </h4> </div> <div class="elementor-author-box__bio"> </div> </div> </div> </div> </div> <div class="elementor-element elementor-element-fc3388d elementor-widget elementor-widget-post-navigation" data-id="fc3388d" 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/database-development-zone/28577/" 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/28640/" rel="next"><span class="elementor-post-navigation__link__next"><span class="post-navigation__next--label">Next</span></span></a> </div> </div> </div> </div> <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 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" role="button" tabindex="0" aria-label="Share on facebook" > <span class="elementor-share-btn__icon"> <i class="fab fa-facebook" aria-hidden="true"></i> </span> </div> </div> <div class="elementor-grid-item"> <div class="elementor-share-btn elementor-share-btn_twitter" role="button" tabindex="0" aria-label="Share on twitter" > <span class="elementor-share-btn__icon"> <i class="fab fa-twitter" aria-hidden="true"></i> </span> </div> </div> <div class="elementor-grid-item"> <div class="elementor-share-btn elementor-share-btn_linkedin" role="button" tabindex="0" aria-label="Share on linkedin" > <span class="elementor-share-btn__icon"> <i class="fab fa-linkedin" aria-hidden="true"></i> </span> </div> </div> </div> </div> </div> <div class="elementor-element elementor-element-fe66bf1 elementor-hidden-desktop elementor-hidden-tablet elementor-grid-3 elementor-grid-tablet-2 elementor-grid-mobile-1 elementor-posts--thumbnail-top elementor-widget elementor-widget-posts" data-id="fe66bf1" data-element_type="widget" data-settings="{"classic_columns":"3","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-32668 post type-post status-publish format-standard has-post-thumbnail hentry category-development category-software"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/software/top-software-development-companies-in-usa/" > <div class="elementor-post__thumbnail"><img width="300" height="200" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="attachment-medium size-medium wp-image-32671 ewww_webp" alt="USA Companies" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/USA-Companies-300x200.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/USA-Companies-300x200.jpg.webp" data-eio="j" /><noscript><img width="300" height="200" src="https://www.devx.com/wp-content/uploads/USA-Companies-300x200.jpg" class="attachment-medium size-medium wp-image-32671" alt="USA Companies" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/software/top-software-development-companies-in-usa/" > Top Software Development Companies in USA </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Johannah Lopez </span> <span class="elementor-post-date"> October 1, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>Navigating the tech landscape to find the right partner is crucial yet challenging. This article offers a comparative glimpse into the top software development companies</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32640 post type-post status-publish format-standard has-post-thumbnail hentry category-developer category-development category-software"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/software/top-software-development-companies/" > <div class="elementor-post__thumbnail"><img width="300" height="225" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="attachment-medium size-medium wp-image-32643 ewww_webp" alt="Software Development" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/Software-Development-300x225.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Software-Development-300x225.jpg.webp" data-eio="j" /><noscript><img width="300" height="225" src="https://www.devx.com/wp-content/uploads/Software-Development-300x225.jpg" class="attachment-medium size-medium wp-image-32643" alt="Software Development" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/software/top-software-development-companies/" > Top Software Development Companies </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Noah Nguyen </span> <span class="elementor-post-date"> September 30, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>Looking for the best in software development? Our list of Top Software Development Companies is your gateway to finding the right tech partner. Dive in</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32634 post type-post status-publish format-standard has-post-thumbnail hentry category-web-development"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/web-development/top-web-development-companies-in-india/" > <div class="elementor-post__thumbnail"><img width="300" height="200" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="attachment-medium size-medium wp-image-32635 ewww_webp" alt="India Web Development" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/India-Web-Development-300x200.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/India-Web-Development-300x200.jpg.webp" data-eio="j" /><noscript><img width="300" height="200" src="https://www.devx.com/wp-content/uploads/India-Web-Development-300x200.jpg" class="attachment-medium size-medium wp-image-32635" alt="India Web Development" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/web-development/top-web-development-companies-in-india/" > Top Web Development Companies in India </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Jordan Williams </span> <span class="elementor-post-date"> September 30, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>In the digital race, the right web development partner is your winning edge. Dive into our curated list of top web development companies in India,</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32628 post type-post status-publish format-standard has-post-thumbnail hentry category-web-development"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/web-development/top-web-development-companies-in-usa/" > <div class="elementor-post__thumbnail"><img width="300" height="200" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="attachment-medium size-medium wp-image-32630 ewww_webp" alt="USA Web Development" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/USA-Web-Development-300x200.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/USA-Web-Development-300x200.jpg.webp" data-eio="j" /><noscript><img width="300" height="200" src="https://www.devx.com/wp-content/uploads/USA-Web-Development-300x200.jpg" class="attachment-medium size-medium wp-image-32630" alt="USA Web Development" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/web-development/top-web-development-companies-in-usa/" > Top Web Development Companies in USA </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Johannah Lopez </span> <span class="elementor-post-date"> September 30, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>Looking for the best web development companies in the USA? We’ve got you covered! Check out our top 10 picks to find the right partner</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32381 post type-post status-publish format-standard has-post-thumbnail hentry category-energy category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/inside-michigans-clean-energy-revolution/" > <div class="elementor-post__thumbnail"><img width="300" height="172" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="attachment-medium size-medium wp-image-32626 ewww_webp" alt="Clean Energy Adoption" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/Clean-Energy-Adoption-300x172.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Clean-Energy-Adoption-300x172.jpg.webp" data-eio="j" /><noscript><img width="300" height="172" src="https://www.devx.com/wp-content/uploads/Clean-Energy-Adoption-300x172.jpg" class="attachment-medium size-medium wp-image-32626" alt="Clean Energy Adoption" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/inside-michigans-clean-energy-revolution/" > Inside Michigan’s Clean Energy Revolution </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Grace Phillips </span> <span class="elementor-post-date"> September 29, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>Democratic state legislators in Michigan continue to discuss and debate clean energy legislation in the hopes of establishing a comprehensive clean energy strategy for the</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32385 post type-post status-publish format-standard has-post-thumbnail hentry category-computers category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/european-chips-act-what-is-it/" > <div class="elementor-post__thumbnail"><img width="300" height="157" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="attachment-medium size-medium wp-image-32382 ewww_webp" alt="Chips Act Revolution" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/Chips-Act-Revolution-300x157.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Chips-Act-Revolution-300x157.jpg.webp" data-eio="j" /><noscript><img width="300" height="157" src="https://www.devx.com/wp-content/uploads/Chips-Act-Revolution-300x157.jpg" class="attachment-medium size-medium wp-image-32382" alt="Chips Act Revolution" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/european-chips-act-what-is-it/" > European Chips Act: What is it? </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Lila Anderson </span> <span class="elementor-post-date"> September 29, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>In response to the intensifying worldwide technology competition, Europe has unveiled the long-awaited European Chips Act. This daring legislative proposal aims to fortify Europe’s semiconductor</p> </div> </div> </article> </div> </div> </div> <div class="elementor-element elementor-element-39bd7056 elementor-grid-1 elementor-posts--thumbnail-left elementor-hidden-mobile elementor-grid-tablet-2 elementor-grid-mobile-1 load-more-align-center elementor-widget elementor-widget-posts" data-id="39bd7056" data-element_type="widget" data-settings="{"classic_columns":"1","classic_row_gap":{"unit":"px","size":0,"sizes":[]},"pagination_type":"load_more_on_click","classic_columns_tablet":"2","classic_columns_mobile":"1","classic_row_gap_tablet":{"unit":"px","size":"","sizes":[]},"classic_row_gap_mobile":{"unit":"px","size":"","sizes":[]},"load_more_spinner":{"value":"fas fa-spinner","library":"fa-solid"}}" data-widget_type="posts.classic"> <div class="elementor-widget-container"> <div class="elementor-posts-container elementor-posts elementor-posts--skin-classic elementor-grid"> <article class="elementor-post elementor-grid-item post-32668 post type-post status-publish format-standard has-post-thumbnail hentry category-development category-software"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/software/top-software-development-companies-in-usa/" > <div class="elementor-post__thumbnail"><img width="1920" height="1280" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-full size-full wp-image-32671 ewww_webp" alt="USA Companies" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/USA-Companies.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/USA-Companies.jpg.webp" data-eio="j" /><noscript><img width="1920" height="1280" src="https://www.devx.com/wp-content/uploads/USA-Companies.jpg" class="elementor-animation-grow attachment-full size-full wp-image-32671" alt="USA Companies" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/software/top-software-development-companies-in-usa/" > Top Software Development Companies in USA </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Johannah Lopez </span> <span class="elementor-post-date"> October 1, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>Navigating the tech landscape to find the right partner is crucial yet challenging. This article offers a comparative glimpse into the top software development companies in the USA. Through a</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32640 post type-post status-publish format-standard has-post-thumbnail hentry category-developer category-development category-software"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/software/top-software-development-companies/" > <div class="elementor-post__thumbnail"><img width="1920" height="1437" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-full size-full wp-image-32643 ewww_webp" alt="Software Development" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/Software-Development.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Software-Development.jpg.webp" data-eio="j" /><noscript><img width="1920" height="1437" src="https://www.devx.com/wp-content/uploads/Software-Development.jpg" class="elementor-animation-grow attachment-full size-full wp-image-32643" alt="Software Development" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/software/top-software-development-companies/" > Top Software Development Companies </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Noah Nguyen </span> <span class="elementor-post-date"> September 30, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>Looking for the best in software development? Our list of Top Software Development Companies is your gateway to finding the right tech partner. Dive in and explore the leaders in</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32634 post type-post status-publish format-standard has-post-thumbnail hentry category-web-development"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/web-development/top-web-development-companies-in-india/" > <div class="elementor-post__thumbnail"><img width="1920" height="1280" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-full size-full wp-image-32635 ewww_webp" alt="India Web Development" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/India-Web-Development.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/India-Web-Development.jpg.webp" data-eio="j" /><noscript><img width="1920" height="1280" src="https://www.devx.com/wp-content/uploads/India-Web-Development.jpg" class="elementor-animation-grow attachment-full size-full wp-image-32635" alt="India Web Development" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/web-development/top-web-development-companies-in-india/" > Top Web Development Companies in India </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Jordan Williams </span> <span class="elementor-post-date"> September 30, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>In the digital race, the right web development partner is your winning edge. Dive into our curated list of top web development companies in India, and kickstart your journey to</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32628 post type-post status-publish format-standard has-post-thumbnail hentry category-web-development"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/web-development/top-web-development-companies-in-usa/" > <div class="elementor-post__thumbnail"><img width="1920" height="1280" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-full size-full wp-image-32630 ewww_webp" alt="USA Web Development" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/USA-Web-Development.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/USA-Web-Development.jpg.webp" data-eio="j" /><noscript><img width="1920" height="1280" src="https://www.devx.com/wp-content/uploads/USA-Web-Development.jpg" class="elementor-animation-grow attachment-full size-full wp-image-32630" alt="USA Web Development" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/web-development/top-web-development-companies-in-usa/" > Top Web Development Companies in USA </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Johannah Lopez </span> <span class="elementor-post-date"> September 30, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>Looking for the best web development companies in the USA? We’ve got you covered! Check out our top 10 picks to find the right partner for your online project. Your</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32381 post type-post status-publish format-standard has-post-thumbnail hentry category-energy category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/inside-michigans-clean-energy-revolution/" > <div class="elementor-post__thumbnail"><img width="1920" height="1099" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-full size-full wp-image-32626 ewww_webp" alt="Clean Energy Adoption" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/Clean-Energy-Adoption.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Clean-Energy-Adoption.jpg.webp" data-eio="j" /><noscript><img width="1920" height="1099" src="https://www.devx.com/wp-content/uploads/Clean-Energy-Adoption.jpg" class="elementor-animation-grow attachment-full size-full wp-image-32626" alt="Clean Energy Adoption" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/inside-michigans-clean-energy-revolution/" > Inside Michigan’s Clean Energy Revolution </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Grace Phillips </span> <span class="elementor-post-date"> September 29, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>Democratic state legislators in Michigan continue to discuss and debate clean energy legislation in the hopes of establishing a comprehensive clean energy strategy for the state. A Senate committee meeting</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32385 post type-post status-publish format-standard has-post-thumbnail hentry category-computers category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/european-chips-act-what-is-it/" > <div class="elementor-post__thumbnail"><img width="1200" height="627" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-full size-full wp-image-32382 ewww_webp" alt="Chips Act Revolution" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/Chips-Act-Revolution.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Chips-Act-Revolution.jpg.webp" data-eio="j" /><noscript><img width="1200" height="627" src="https://www.devx.com/wp-content/uploads/Chips-Act-Revolution.jpg" class="elementor-animation-grow attachment-full size-full wp-image-32382" alt="Chips Act Revolution" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/european-chips-act-what-is-it/" > European Chips Act: What is it? </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Lila Anderson </span> <span class="elementor-post-date"> September 29, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>In response to the intensifying worldwide technology competition, Europe has unveiled the long-awaited European Chips Act. This daring legislative proposal aims to fortify Europe’s semiconductor supply chain and enhance its</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32391 post type-post status-publish format-standard has-post-thumbnail hentry category-coding category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/you-should-use-low-code-platforms-for-apps/" > <div class="elementor-post__thumbnail"><img width="1200" height="627" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-full size-full wp-image-32387 ewww_webp" alt="Revolutionized Low-Code" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/Revolutionized-Low-Code.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Revolutionized-Low-Code.jpg.webp" data-eio="j" /><noscript><img width="1200" height="627" src="https://www.devx.com/wp-content/uploads/Revolutionized-Low-Code.jpg" class="elementor-animation-grow attachment-full size-full wp-image-32387" alt="Revolutionized Low-Code" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/you-should-use-low-code-platforms-for-apps/" > You Should Use Low-Code Platforms for Apps </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Jordan Williams </span> <span class="elementor-post-date"> September 29, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>As the demand for rapid software development increases, low-code platforms have emerged as a popular choice among developers for their ability to build applications with minimal coding. These platforms not</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32396 post type-post status-publish format-standard has-post-thumbnail hentry category-news category-security"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/five-powerful-strategies-to-bolster-your-cybersecurity/" > <div class="elementor-post__thumbnail"><img width="1920" height="1080" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-full size-full wp-image-32619 ewww_webp" alt="Cybersecurity Strategy" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/Cybersecurity-Strategy.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Cybersecurity-Strategy.jpg.webp" data-eio="j" /><noscript><img width="1920" height="1080" src="https://www.devx.com/wp-content/uploads/Cybersecurity-Strategy.jpg" class="elementor-animation-grow attachment-full size-full wp-image-32619" alt="Cybersecurity Strategy" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/five-powerful-strategies-to-bolster-your-cybersecurity/" > Five Powerful Strategies to Bolster Your Cybersecurity </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Noah Nguyen </span> <span class="elementor-post-date"> September 29, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>In today’s increasingly digital landscape, businesses of all sizes must prioritize cyber security measures to defend against potential dangers. Cyber security professionals suggest five simple technological strategies to help companies</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32408 post type-post status-publish format-standard has-post-thumbnail hentry category-news category-technology"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/tech-layoffs-are-getting-worse-globally/" > <div class="elementor-post__thumbnail"><img width="1920" height="1280" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-full size-full wp-image-32607 ewww_webp" alt="Global Layoffs" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/Global-Layoffs.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Global-Layoffs.jpg.webp" data-eio="j" /><noscript><img width="1920" height="1280" src="https://www.devx.com/wp-content/uploads/Global-Layoffs.jpg" class="elementor-animation-grow attachment-full size-full wp-image-32607" alt="Global Layoffs" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/tech-layoffs-are-getting-worse-globally/" > Tech Layoffs Are Getting Worse Globally </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Jordan Williams </span> <span class="elementor-post-date"> September 29, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>Since the start of 2023, the global technology sector has experienced a significant rise in layoffs, with over 236,000 workers being let go by 1,019 tech firms, as per data</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32473 post type-post status-publish format-standard has-post-thumbnail hentry category-news category-technology"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/huawei-dazzles-with-electric-vehicles-and-wireless-earbuds/" > <div class="elementor-post__thumbnail"><img width="1200" height="627" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-full size-full wp-image-32470 ewww_webp" alt="Huawei Electric Dazzle" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/Huawei-Electric-Dazzle.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Huawei-Electric-Dazzle.jpg.webp" data-eio="j" /><noscript><img width="1200" height="627" src="https://www.devx.com/wp-content/uploads/Huawei-Electric-Dazzle.jpg" class="elementor-animation-grow attachment-full size-full wp-image-32470" alt="Huawei Electric Dazzle" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/huawei-dazzles-with-electric-vehicles-and-wireless-earbuds/" > Huawei Dazzles with Electric Vehicles and Wireless Earbuds </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Johannah Lopez </span> <span class="elementor-post-date"> September 29, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>During a prominent unveiling event, Huawei, the Chinese telecommunications powerhouse, kept quiet about its enigmatic new 5G phone and alleged cutting-edge chip development. Instead, Huawei astounded the audience by presenting</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32397 post type-post status-publish format-standard has-post-thumbnail hentry category-finance category-news category-security"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/digital-banking-needs-cybersecurity/" > <div class="elementor-post__thumbnail"><img width="1200" height="627" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-full size-full wp-image-32394 ewww_webp" alt="Cybersecurity Banking Revolution" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/Cybersecurity-Banking-Revolution.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Cybersecurity-Banking-Revolution.jpg.webp" data-eio="j" /><noscript><img width="1200" height="627" src="https://www.devx.com/wp-content/uploads/Cybersecurity-Banking-Revolution.jpg" class="elementor-animation-grow attachment-full size-full wp-image-32394" alt="Cybersecurity Banking Revolution" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/digital-banking-needs-cybersecurity/" > Digital Banking Needs Cybersecurity </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Johannah Lopez </span> <span class="elementor-post-date"> September 29, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>The banking, financial, and insurance (BFSI) sectors are pioneers in digital transformation, using web applications and application programming interfaces (APIs) to provide seamless services to customers around the world. Rising</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32401 post type-post status-publish format-standard has-post-thumbnail hentry category-finance category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/terry-clunes-fintech-empire/" > <div class="elementor-post__thumbnail"><img width="1920" height="1280" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-full size-full wp-image-32613 ewww_webp" alt="FinTech Leadership" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/FinTech-Leadership.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/FinTech-Leadership.jpg.webp" data-eio="j" /><noscript><img width="1920" height="1280" src="https://www.devx.com/wp-content/uploads/FinTech-Leadership.jpg" class="elementor-animation-grow attachment-full size-full wp-image-32613" alt="FinTech Leadership" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/terry-clunes-fintech-empire/" > Terry Clune’s Fintech Empire </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Grace Phillips </span> <span class="elementor-post-date"> September 29, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>Over the past 30 years, Terry Clune has built a remarkable business empire, with CluneTech at the helm. The CEO and Founder has successfully created eight fintech firms, attracting renowned</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32595 post type-post status-publish format-standard has-post-thumbnail hentry category-development category-web-development category-web-development-zone"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/web-development-zone/the-role-of-ai-within-a-web-design-agency/" > <div class="elementor-post__thumbnail"><img width="1920" height="1280" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-full size-full wp-image-32598 ewww_webp" alt="" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/AI-Within-A-Web-Design-Agency.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/AI-Within-A-Web-Design-Agency.jpg.webp" data-eio="j" /><noscript><img width="1920" height="1280" src="https://www.devx.com/wp-content/uploads/AI-Within-A-Web-Design-Agency.jpg" class="elementor-animation-grow attachment-full size-full wp-image-32598" alt="" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/web-development-zone/the-role-of-ai-within-a-web-design-agency/" > The Role Of AI Within A Web Design Agency? </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> DevX Editor </span> <span class="elementor-post-date"> September 29, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>In the digital age, the role of Artificial Intelligence (AI) in web design is rapidly evolving, transitioning from a futuristic concept to practical tools used in design, coding, content writing</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32589 post type-post status-publish format-standard has-post-thumbnail hentry category-artificial-intelligence-ai tag-top-ai-stocks"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/artificial-intelligence-ai/the-future-of-ai-and-the-investment-opportunities-it-presents/" > <div class="elementor-post__thumbnail"><img width="500" height="333" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-full size-full wp-image-32590 ewww_webp" alt="top ai stocks" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/top-ai-stocks.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/top-ai-stocks.jpg.webp" data-eio="j" /><noscript><img width="500" height="333" src="https://www.devx.com/wp-content/uploads/top-ai-stocks.jpg" class="elementor-animation-grow attachment-full size-full wp-image-32590" alt="top ai stocks" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/artificial-intelligence-ai/the-future-of-ai-and-the-investment-opportunities-it-presents/" > The Future of AI and the Investment Opportunities it Presents </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> DevX Editor </span> <span class="elementor-post-date"> September 29, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>There is no doubt that modern technology has changed the way we live and work forever. Nowadays, there is a wide array of different types of technologies such as AI</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32403 post type-post status-publish format-standard has-post-thumbnail hentry category-artificial-intelligence-ai category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/is-generative-ai-the-next-internet/" > <div class="elementor-post__thumbnail"><img width="1200" height="627" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-full size-full wp-image-32400 ewww_webp" alt="Generative AI Revolution" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/Generative-AI-Revolution.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Generative-AI-Revolution.jpg.webp" data-eio="j" /><noscript><img width="1200" height="627" src="https://www.devx.com/wp-content/uploads/Generative-AI-Revolution.jpg" class="elementor-animation-grow attachment-full size-full wp-image-32400" alt="Generative AI Revolution" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/is-generative-ai-the-next-internet/" > Is Generative AI the Next Internet? </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Lila Anderson </span> <span class="elementor-post-date"> September 29, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>The increasing demand for Generative AI models has led to a surge in its adoption across diverse sectors, with healthcare, automotive, and financial services being among the top beneficiaries. These</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32413 post type-post status-publish format-standard has-post-thumbnail hentry category-laptops category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/the-new-surface-laptop-studio-2-is-nuts/" > <div class="elementor-post__thumbnail"><img width="1920" height="1223" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-full size-full wp-image-32604 ewww_webp" alt="Microsoft Laptop" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/Microsoft-Laptop.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Microsoft-Laptop.jpg.webp" data-eio="j" /><noscript><img width="1920" height="1223" src="https://www.devx.com/wp-content/uploads/Microsoft-Laptop.jpg" class="elementor-animation-grow attachment-full size-full wp-image-32604" alt="Microsoft Laptop" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/the-new-surface-laptop-studio-2-is-nuts/" > The New Surface Laptop Studio 2 Is Nuts </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Noah Nguyen </span> <span class="elementor-post-date"> September 29, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>The Surface Laptop Studio 2 is a dynamic and robust all-in-one laptop designed for creators and professionals alike. It features a 14.4″ touchscreen and a cutting-edge design that is over</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32472 post type-post status-publish format-standard has-post-thumbnail hentry category-5g category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/gpu-accelerated-5g-in-japan/" > <div class="elementor-post__thumbnail"><img width="1920" height="1280" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-full size-full wp-image-32587 ewww_webp" alt="5G Innovations" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/5G-Innovations.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/5G-Innovations.jpg.webp" data-eio="j" /><noscript><img width="1920" height="1280" src="https://www.devx.com/wp-content/uploads/5G-Innovations.jpg" class="elementor-animation-grow attachment-full size-full wp-image-32587" alt="5G Innovations" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/gpu-accelerated-5g-in-japan/" > GPU-Accelerated 5G in Japan </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Johannah Lopez </span> <span class="elementor-post-date"> September 28, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>NTT DOCOMO, a global telecommunications giant, is set to break new ground in the industry as it prepares to launch a GPU-accelerated 5G network in Japan. This innovative approach will</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32478 post type-post status-publish format-standard has-post-thumbnail hentry category-artificial-intelligence-ai category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/ai-journalism-balancing-integrity-and-innovation/" > <div class="elementor-post__thumbnail"><img width="1920" height="1280" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-full size-full wp-image-32584 ewww_webp" alt="AI Ethics" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/AI-Ethics.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/AI-Ethics.jpg.webp" data-eio="j" /><noscript><img width="1920" height="1280" src="https://www.devx.com/wp-content/uploads/AI-Ethics.jpg" class="elementor-animation-grow attachment-full size-full wp-image-32584" alt="AI Ethics" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/ai-journalism-balancing-integrity-and-innovation/" > AI Journalism: Balancing Integrity and Innovation </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Grace Phillips </span> <span class="elementor-post-date"> September 28, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>An op-ed, produced using Microsoft’s Bing Chat AI software, recently appeared in the St. Louis Post-Dispatch, discussing the potential concerns surrounding the employment of artificial intelligence (AI) in journalism. These</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32484 post type-post status-publish format-standard has-post-thumbnail hentry category-gadgets category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/big-deal-days-extravaganza/" > <div class="elementor-post__thumbnail"><img width="1200" height="627" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-full size-full wp-image-32480 ewww_webp" alt="Savings Extravaganza" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/Savings-Extravaganza.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Savings-Extravaganza.jpg.webp" data-eio="j" /><noscript><img width="1200" height="627" src="https://www.devx.com/wp-content/uploads/Savings-Extravaganza.jpg" class="elementor-animation-grow attachment-full size-full wp-image-32480" alt="Savings Extravaganza" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/big-deal-days-extravaganza/" > Big Deal Days Extravaganza </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Lila Anderson </span> <span class="elementor-post-date"> September 28, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>The highly awaited Big Deal Days event for October 2023 is nearly here, scheduled for the 10th and 11th. Similar to the previous year, this autumn sale has already created</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32485 post type-post status-publish format-standard has-post-thumbnail hentry category-artificial-intelligence-ai category-computers category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/cisco-splunk-deal-sparks-tech-acquisition-frenzy/" > <div class="elementor-post__thumbnail"><img width="1200" height="627" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-full size-full wp-image-32481 ewww_webp" alt="Cisco Splunk Deal" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/Cisco-Splunk-Deal.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Cisco-Splunk-Deal.jpg.webp" data-eio="j" /><noscript><img width="1200" height="627" src="https://www.devx.com/wp-content/uploads/Cisco-Splunk-Deal.jpg" class="elementor-animation-grow attachment-full size-full wp-image-32481" alt="Cisco Splunk Deal" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/cisco-splunk-deal-sparks-tech-acquisition-frenzy/" > Cisco Splunk Deal Sparks Tech Acquisition Frenzy </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Jordan Williams </span> <span class="elementor-post-date"> September 28, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>Cisco’s recent massive purchase of Splunk, an AI-powered cybersecurity firm, for $28 billion signals a potential boost in tech deals after a year of subdued mergers and acquisitions in the</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32497 post type-post status-publish format-standard has-post-thumbnail hentry category-news category-technology"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/irans-jet-propelled-drone-reshapes-power-balance/" > <div class="elementor-post__thumbnail"><img width="1920" height="1280" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-full size-full wp-image-32567 ewww_webp" alt="Iran Drone Expansion" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/Iran-Drone-Expansion.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Iran-Drone-Expansion.jpg.webp" data-eio="j" /><noscript><img width="1920" height="1280" src="https://www.devx.com/wp-content/uploads/Iran-Drone-Expansion.jpg" class="elementor-animation-grow attachment-full size-full wp-image-32567" alt="Iran Drone Expansion" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/irans-jet-propelled-drone-reshapes-power-balance/" > Iran’s Jet-Propelled Drone Reshapes Power Balance </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Jordan Williams </span> <span class="elementor-post-date"> September 28, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>Iran has recently unveiled a jet-propelled variant of its Shahed series drone, marking a significant advancement in the nation’s drone technology. The new drone is poised to reshape the regional</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32512 post type-post status-publish format-standard has-post-thumbnail hentry category-geoengineering category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/did-the-overshoot-commission-shoot-down-geoengineering/" > <div class="elementor-post__thumbnail"><img width="1920" height="1282" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-full size-full wp-image-32561 ewww_webp" alt="Solar Geoengineering" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/Solar-Geoengineering-1.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Solar-Geoengineering-1.jpg.webp" data-eio="j" /><noscript><img width="1920" height="1282" src="https://www.devx.com/wp-content/uploads/Solar-Geoengineering-1.jpg" class="elementor-animation-grow attachment-full size-full wp-image-32561" alt="Solar Geoengineering" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/did-the-overshoot-commission-shoot-down-geoengineering/" > Did the Overshoot Commission Shoot Down Geoengineering? </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Johannah Lopez </span> <span class="elementor-post-date"> September 28, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>The Overshoot Commission has recently released a comprehensive report that discusses the controversial topic of Solar Geoengineering, also known as Solar Radiation Modification (SRM). The Commission’s primary objective is to</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32486 post type-post status-publish format-standard has-post-thumbnail hentry category-news category-technology"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/revolutionizing-remote-learning-for-success/" > <div class="elementor-post__thumbnail"><img width="1920" height="1440" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-full size-full wp-image-32576 ewww_webp" alt="Remote Learning" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/Remote-Learning.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Remote-Learning.jpg.webp" data-eio="j" /><noscript><img width="1920" height="1440" src="https://www.devx.com/wp-content/uploads/Remote-Learning.jpg" class="elementor-animation-grow attachment-full size-full wp-image-32576" alt="Remote Learning" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/revolutionizing-remote-learning-for-success/" > Revolutionizing Remote Learning for Success </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Noah Nguyen </span> <span class="elementor-post-date"> September 28, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>School districts are preparing to reveal a substantial technological upgrade designed to significantly improve remote learning experiences for both educators and students amid the ongoing pandemic. This major investment, which</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32490 post type-post status-publish format-standard has-post-thumbnail hentry category-batteries category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/sabers-batteries-transforming-industries/" > <div class="elementor-post__thumbnail"><img width="1200" height="627" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-full size-full wp-image-32487 ewww_webp" alt="Revolutionary SABERS Transforming" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/Revolutionary-SABERS-Transforming.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Revolutionary-SABERS-Transforming.jpg.webp" data-eio="j" /><noscript><img width="1200" height="627" src="https://www.devx.com/wp-content/uploads/Revolutionary-SABERS-Transforming.jpg" class="elementor-animation-grow attachment-full size-full wp-image-32487" alt="Revolutionary SABERS Transforming" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/sabers-batteries-transforming-industries/" > SABERS Batteries Transforming Industries </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Grace Phillips </span> <span class="elementor-post-date"> September 28, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>Scientists John Connell and Yi Lin from NASA’s Solid-state Architecture Batteries for Enhanced Rechargeability and Safety (SABERS) project are working on experimental solid-state battery packs that could dramatically change the</p> </div> </div> </article> <article class="elementor-post elementor-grid-item post-32553 post type-post status-publish format-standard has-post-thumbnail hentry category-saas category-security category-software"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/saas/how-much-does-it-cost-to-build-a-website/" > <div class="elementor-post__thumbnail"><img width="1429" height="1429" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-full size-full wp-image-32555 ewww_webp" alt="Build a Website" loading="lazy" data-src-img="https://www.devx.com/wp-content/uploads/Build-a-Website.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Build-a-Website.jpg.webp" data-eio="j" /><noscript><img width="1429" height="1429" src="https://www.devx.com/wp-content/uploads/Build-a-Website.jpg" class="elementor-animation-grow attachment-full size-full wp-image-32555" alt="Build a Website" loading="lazy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/saas/how-much-does-it-cost-to-build-a-website/" > How Much Does It Cost to Build a Website? </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> DevX Editor </span> <span class="elementor-post-date"> September 28, 2023 </span> </div> <div class="elementor-post__excerpt"> <p>Are you wondering how much it costs to build a website? The approximated cost is based on several factors, including which add-ons and platforms you choose. For example, a self-hosted</p> </div> </div> </article> </div> <span class="e-load-more-spinner"> <i aria-hidden="true" class="fas fa-spinner"></i> </span> <div class="e-load-more-anchor" data-page="1" data-max-page="736" data-next-page="https://www.devx.com/xml-zone/28610/2/"></div> <div class="elementor-button-wrapper"> <a href="#" class="elementor-button-link elementor-button elementor-animation-grow" role="button"> <span class="elementor-button-content-wrapper"> <span class="elementor-button-text">Show More</span> </span> </a> </div> <div class="e-load-more-message"></div> </div> </div> </div> </div> </div> </section> </div> </div> <div class="elementor-column elementor-col-20 elementor-top-column elementor-element elementor-element-270dc71" data-id="270dc71" data-element_type="column"> <div class="elementor-widget-wrap"> </div> </div> <div class="elementor-column elementor-col-20 elementor-top-column elementor-element elementor-element-8905b95 elementor-hidden-tablet" data-id="8905b95" data-element_type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-7c9513d elementor-widget elementor-widget-html" data-id="7c9513d" data-element_type="widget" data-settings="{"sticky_offset":10,"sticky_parent":"yes","sticky":"top","sticky_on":["desktop","tablet","mobile"],"sticky_effects_offset":0}" data-widget_type="html.default"> <div class="elementor-widget-container"> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1183579825777021" crossorigin="anonymous"></script> <!-- devx top --> <ins class="adsbygoogle" style="display:inline-block;width:300px;height:600px" data-ad-client="ca-pub-1183579825777021" data-ad-slot="2250810506"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </div> </div> </div> </div> </section> </div> <footer data-elementor-type="footer" data-elementor-id="23300" class="elementor elementor-23300 elementor-location-footer"> <footer class="elementor-section elementor-top-section elementor-element elementor-element-1588a538 elementor-section-height-min-height elementor-section-content-middle elementor-section-full_width 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-4f9ec08 elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="4f9ec08" data-element_type="widget" data-widget_type="divider.default"> <div class="elementor-widget-container"> <div class="elementor-divider"> <span class="elementor-divider-separator"> </span> </div> </div> </div> <section class="elementor-section elementor-inner-section elementor-element elementor-element-73a9986 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="73a9986" data-element_type="section"> <div class="elementor-container elementor-column-gap-default"> <div class="elementor-column elementor-col-33 elementor-inner-column elementor-element elementor-element-7f08930" data-id="7f08930" data-element_type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-269b367 elementor-nav-menu__align-right 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 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" 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-33 elementor-inner-column elementor-element elementor-element-21928d3" data-id="21928d3" data-element_type="column"> <div class="elementor-widget-wrap"> </div> </div> <div class="elementor-column elementor-col-33 elementor-inner-column elementor-element elementor-element-869862d" data-id="869862d" data-element_type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-5d5f4dc5 e-grid-align-left elementor-shape-rounded elementor-grid-0 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.12.2 - 23-04-2023 */ .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);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:inline-flex;background-color:#69727d;align-items: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:#69727d}.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{border-radius:10%}.elementor-shape-circle .elementor-icon.elementor-social-icon{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> </section> <section class="elementor-section elementor-inner-section elementor-element elementor-element-e509954 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="e509954" data-element_type="section"> <div class="elementor-container elementor-column-gap-default"> <div class="elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-f77ca98" data-id="f77ca98" data-element_type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-c500cdf elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="c500cdf" data-element_type="widget" data-widget_type="divider.default"> <div class="elementor-widget-container"> <div class="elementor-divider"> <span class="elementor-divider-separator"> </span> </div> </div> </div> <div class="elementor-element elementor-element-fbeb59f 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="fbeb59f" 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 class="elementor-nav-menu--main elementor-nav-menu__container elementor-nav-menu--layout-horizontal e--pointer-underline e--animation-fade"> <ul id="menu-1-fbeb59f" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27045"><a href="https://www.devx.com/a-terms/" class="elementor-item">A</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27044"><a href="https://www.devx.com/b-terms/" class="elementor-item">B</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27043"><a href="https://www.devx.com/c-terms/" class="elementor-item">C</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27152"><a href="https://www.devx.com/d-terms/" class="elementor-item">D</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27153"><a href="https://www.devx.com/e-terms/" class="elementor-item">E</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27154"><a href="https://www.devx.com/f-terms/" class="elementor-item">F</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27155"><a href="https://www.devx.com/g-terms/" class="elementor-item">G</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27156"><a href="https://www.devx.com/h-terms/" class="elementor-item">H</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27157"><a href="https://www.devx.com/i-terms/" class="elementor-item">I</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27158"><a href="https://www.devx.com/j-terms/" class="elementor-item">J</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27159"><a href="https://www.devx.com/k-terms/" class="elementor-item">K</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27137"><a href="https://www.devx.com/l-terms/" class="elementor-item">L</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27151"><a href="https://www.devx.com/m-terms/" class="elementor-item">M</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27150"><a href="https://www.devx.com/n-terms/" class="elementor-item">N</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27149"><a href="https://www.devx.com/o-terms/" class="elementor-item">O</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27148"><a href="https://www.devx.com/p-terms/" class="elementor-item">P</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27147"><a href="https://www.devx.com/q-terms/" class="elementor-item">Q</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27146"><a href="https://www.devx.com/r-terms/" class="elementor-item">R</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27145"><a href="https://www.devx.com/s-terms/" class="elementor-item">S</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27144"><a href="https://www.devx.com/t-terms/" class="elementor-item">T</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27143"><a href="https://www.devx.com/u-terms/" class="elementor-item">U</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27142"><a href="https://www.devx.com/v-terms/" class="elementor-item">V</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27141"><a href="https://www.devx.com/w-terms/" class="elementor-item">W</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27140"><a href="https://www.devx.com/x-terms/" class="elementor-item">X</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27139"><a href="https://www.devx.com/y-terms/" class="elementor-item">Y</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27138"><a href="https://www.devx.com/z-terms/" class="elementor-item">Z</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" aria-hidden="true"> <ul id="menu-2-fbeb59f" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27045"><a href="https://www.devx.com/a-terms/" class="elementor-item" tabindex="-1">A</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27044"><a href="https://www.devx.com/b-terms/" class="elementor-item" tabindex="-1">B</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27043"><a href="https://www.devx.com/c-terms/" class="elementor-item" tabindex="-1">C</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27152"><a href="https://www.devx.com/d-terms/" class="elementor-item" tabindex="-1">D</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27153"><a href="https://www.devx.com/e-terms/" class="elementor-item" tabindex="-1">E</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27154"><a href="https://www.devx.com/f-terms/" class="elementor-item" tabindex="-1">F</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27155"><a href="https://www.devx.com/g-terms/" class="elementor-item" tabindex="-1">G</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27156"><a href="https://www.devx.com/h-terms/" class="elementor-item" tabindex="-1">H</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27157"><a href="https://www.devx.com/i-terms/" class="elementor-item" tabindex="-1">I</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27158"><a href="https://www.devx.com/j-terms/" class="elementor-item" tabindex="-1">J</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27159"><a href="https://www.devx.com/k-terms/" class="elementor-item" tabindex="-1">K</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27137"><a href="https://www.devx.com/l-terms/" class="elementor-item" tabindex="-1">L</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27151"><a href="https://www.devx.com/m-terms/" class="elementor-item" tabindex="-1">M</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27150"><a href="https://www.devx.com/n-terms/" class="elementor-item" tabindex="-1">N</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27149"><a href="https://www.devx.com/o-terms/" class="elementor-item" tabindex="-1">O</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27148"><a href="https://www.devx.com/p-terms/" class="elementor-item" tabindex="-1">P</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27147"><a href="https://www.devx.com/q-terms/" class="elementor-item" tabindex="-1">Q</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27146"><a href="https://www.devx.com/r-terms/" class="elementor-item" tabindex="-1">R</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27145"><a href="https://www.devx.com/s-terms/" class="elementor-item" tabindex="-1">S</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27144"><a href="https://www.devx.com/t-terms/" class="elementor-item" tabindex="-1">T</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27143"><a href="https://www.devx.com/u-terms/" class="elementor-item" tabindex="-1">U</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27142"><a href="https://www.devx.com/v-terms/" class="elementor-item" tabindex="-1">V</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27141"><a href="https://www.devx.com/w-terms/" class="elementor-item" tabindex="-1">W</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27140"><a href="https://www.devx.com/x-terms/" class="elementor-item" tabindex="-1">X</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27139"><a href="https://www.devx.com/y-terms/" class="elementor-item" tabindex="-1">Y</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27138"><a href="https://www.devx.com/z-terms/" class="elementor-item" tabindex="-1">Z</a></li> </ul> </nav> </div> </div> <div class="elementor-element elementor-element-6963de5 elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="6963de5" data-element_type="widget" data-widget_type="divider.default"> <div class="elementor-widget-container"> <div class="elementor-divider"> <span class="elementor-divider-separator"> </span> </div> </div> </div> </div> </div> </div> </section> </div> </div> <div class="elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-c5e10d2" data-id="c5e10d2" data-element_type="column"> <div class="elementor-widget-wrap"> </div> </div> </div> </footer> <section class="elementor-section elementor-top-section elementor-element elementor-element-a4f01a6 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="a4f01a6" data-element_type="section"> <div class="elementor-container elementor-column-gap-default"> <div class="elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-a1bc5b1" data-id="a1bc5b1" 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-e4f110b" data-id="e4f110b" 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.12.2 - 23-04-2023 */ .elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;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-1daca18" data-id="1daca18" 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' /> <link rel='stylesheet' id='e-animations-css' href='https://www.devx.com/wp-content/plugins/elementor/assets/lib/animations/animations.min.css?ver=3.12.2' type='text/css' media='all' /> <script type='text/javascript' id='wpil-frontend-script-js-extra'> /* <![CDATA[ */ var wpilFrontend = {"ajaxUrl":"\/wp-admin\/admin-ajax.php","postId":"22789","postType":"post","openInternalInNewTab":"0","openExternalInNewTab":"0","disableClicks":"0","openLinksWithJS":"0","trackAllElementClicks":"0","clicksI18n":{"imageNoText":"Image in link: No Text","imageText":"Image Title: ","noText":"No Anchor Text Found"}}; /* ]]> */ </script> <script type='text/javascript' src='https://www.devx.com/wp-content/plugins/link-whisper-premium/js/frontend.min.js?ver=1692043625' id='wpil-frontend-script-js'></script> <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.12.3' 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.12.2' 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.12.2' id='elementor-frontend-modules-js'></script> <script type='text/javascript' src='https://www.devx.com/wp-includes/js/dist/vendor/wp-polyfill-inert.min.js?ver=3.1.2' id='wp-polyfill-inert-js'></script> <script type='text/javascript' src='https://www.devx.com/wp-includes/js/dist/vendor/regenerator-runtime.min.js?ver=0.13.11' 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=c6aec9a8d4e5a5d543a1' id='wp-hooks-js'></script> <script type='text/javascript' src='https://www.devx.com/wp-includes/js/dist/i18n.min.js?ver=7701b0c3857f914212ef' id='wp-i18n-js'></script> <script id="wp-i18n-js-after" type="text/javascript"> wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); </script> <script id="elementor-pro-frontend-js-before" type="text/javascript"> var ElementorProFrontendConfig = {"ajaxurl":"https:\/\/www.devx.com\/wp-admin\/admin-ajax.php","nonce":"c8ff8a6000","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.12.3' 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 id="elementor-frontend-js-before" type="text/javascript"> 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 Portrait","value":767,"default_value":767,"direction":"max","is_enabled":true},"mobile_extra":{"label":"Mobile Landscape","value":880,"default_value":880,"direction":"max","is_enabled":false},"tablet":{"label":"Tablet Portrait","value":1024,"default_value":1024,"direction":"max","is_enabled":true},"tablet_extra":{"label":"Tablet Landscape","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.12.2","is_static":false,"experimentalFeatures":{"e_dom_optimization":true,"e_optimized_assets_loading":true,"e_optimized_css_loading":true,"a11y_improvements":true,"additional_custom_breakpoints":true,"theme_builder_v2":true,"hello-theme-header-footer":true,"landing-pages":true,"page-transitions":true,"notes":true,"loop":true,"form-submissions":true,"e_scroll_snap":true},"urls":{"assets":"https:\/\/www.devx.com\/wp-content\/plugins\/elementor\/assets\/"},"swiperClass":"swiper-container","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":22789,"title":"Occasional%20XSLT%20for%20Experienced%20Software%20Developers%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.12.2' 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.12.3' id='pro-elements-handlers-js'></script> <script type='text/javascript' src='https://www.devx.com/wp-content/plugins/elementor-pro/assets/lib/sticky/jquery.sticky.min.js?ver=3.12.3' id='e-sticky-js'></script> </body> </html> <!-- Dynamic page generated in 1.882 seconds. --> <!-- Cached page generated by WP-Super-Cache on 2023-10-01 22:00:33 --> <!-- Compression = gzip -->