Programming languages

Mastering XSLT for Data Transformation

Understanding XSLT: Evolution, Features, and Applications

Introduction to XSLT

Extensible Stylesheet Language Transformations (XSLT) is a programming language designed for transforming XML documents into different formats. Originating in the late 1990s, XSLT became a cornerstone of web development and data processing, offering powerful ways to manipulate XML data. XML, or Extensible Markup Language, is widely used to store and transport data across various platforms, but to display or use this data meaningfully, it often needs to be converted into a more user-friendly format. This is where XSLT comes into play.

XSLT serves as a transformation tool, capable of converting XML data into HTML, text, or even other XML documents, by applying a set of rules or templates defined in XSLT stylesheets. These transformations are essential in environments where data is stored in XML format, such as web services, data interchange between applications, and configuration management systems.

The Origins and Evolution of XSLT

The development of XSLT was part of the broader XML revolution that gained momentum in the 1990s. The World Wide Web Consortium (W3C), which is responsible for developing standards for web technologies, introduced XSLT as part of the Extensible Stylesheet Language (XSL) specification. The primary goal of XSL was to provide a comprehensive suite of technologies for transforming, presenting, and manipulating XML documents.

The initial version of XSLT was released in 1998, and it was intended to be used with XML documents, allowing developers to define transformations using templates written in the XSLT syntax. This version was an evolution of earlier methods for manipulating XML, such as XPath and XSL, and aimed to provide a standardized way to carry out transformations. The first versions of XSLT were fairly limited in their scope and capabilities, but over the years, successive revisions improved its efficiency, expressiveness, and compatibility with various web technologies.

XSLT 1.0 was widely adopted for transforming XML into a variety of output formats, including HTML for web pages, plain text, or other structured XML formats. It provided basic features for template-based transformations but had limitations in terms of handling complex scenarios and data structures. The release of XSLT 2.0 in 2007 brought significant enhancements, including better support for regular expressions, more powerful data handling functions, and the ability to handle sequences and multi-step transformations.

XSLT Syntax and Core Concepts

XSLT documents themselves are XML documents that contain various elements used to define how an XML document should be transformed. A typical XSLT stylesheet consists of the following core components:

  1. Templates: The fundamental unit of transformation in XSLT. A template matches a specific XML element or pattern and applies rules to transform it. Templates can match specific tags, attributes, or entire XML documents.

  2. XPath: XSLT relies heavily on XPath, a language used to navigate and select elements or attributes within an XML document. XPath expressions allow the developer to identify the data to be transformed and apply specific templates to those elements.

  3. Output Methods: XSLT supports various output formats, such as XML, HTML, and plain text. These formats dictate how the transformed data will be presented.

  4. Control Structures: XSLT includes control structures like conditionals (xsl:if and xsl:choose) and loops (xsl:for-each) to enable more complex transformations. These features allow developers to apply logic during transformations based on the content of the XML document.

  5. Extensions and Functions: Over time, XSLT has introduced custom functions and extensions that allow developers to extend the language’s core functionality. These can be used to handle tasks such as date manipulation, string processing, and more.

Key Features of XSLT

XSLT, while originally designed for transforming XML documents, offers several features that make it an invaluable tool in a wide range of applications.

1. Template-based Processing

XSLT operates based on a template-based system, where rules or templates define how each part of an XML document should be transformed. The primary structure of an XSLT stylesheet revolves around templates that match certain XML elements or patterns. For example, an XSLT template might match every </code> element in a document and format it as an HTML heading. This ability to define reusable templates makes XSLT highly modular and adaptable for various types of XML transformations.</p> <h4><span class="ez-toc-section" id="2_XPath_Integration"></span>2. <strong>XPath Integration</strong><span class="ez-toc-section-end"></span></h4> <p>XPath is one of the core components of XSLT, allowing developers to easily navigate and query XML data. XPath expressions are used to select nodes in an XML document, allowing developers to apply transformations only to specific elements, attributes, or sections of the data. XPath is essential for targeting elements within an XML document and extracting the necessary information for transformation.</p> <h4><span class="ez-toc-section" id="3_Separation_of_Content_and_Presentation"></span>3. <strong>Separation of Content and Presentation</strong><span class="ez-toc-section-end"></span></h4> <p>One of the key advantages of using XSLT is its ability to separate content from presentation. With XSLT, the XML document serves purely as a source of data, while the XSLT stylesheet defines how that data should be presented. This separation allows the same XML data to be transformed into multiple different formats, including HTML, PDF, or even plain text, without modifying the original content. This principle is particularly beneficial in scenarios where the same data needs to be presented in different environments or to different audiences.</p> <h4><span class="ez-toc-section" id="4_Extensibility"></span>4. <strong>Extensibility</strong><span class="ez-toc-section-end"></span></h4> <p>XSLT is highly extensible, allowing developers to define their own functions and variables within a stylesheet. This extensibility is particularly useful in complex transformations that may require additional processing or custom behavior beyond what is provided by the built-in XSLT functions. Through the use of extension functions, developers can extend the capabilities of XSLT to handle more specific tasks, such as interacting with external data sources or applying complex algorithms.</p> <h4><span class="ez-toc-section" id="5_Cross-platform_Compatibility"></span>5. <strong>Cross-platform Compatibility</strong><span class="ez-toc-section-end"></span></h4> <p>XSLT is a platform-independent technology that is widely supported across various operating systems, development environments, and web servers. XSLT is built into many modern programming languages and frameworks, including Java, Python, PHP, and .NET. This cross-platform compatibility ensures that XSLT transformations can be easily integrated into a wide variety of applications and services, regardless of the underlying technology stack.</p> <h4><span class="ez-toc-section" id="6_Error_Handling_and_Debugging"></span>6. <strong>Error Handling and Debugging</strong><span class="ez-toc-section-end"></span></h4> <p>XSLT provides basic error handling capabilities, enabling developers to detect and respond to issues that may arise during the transformation process. While XSLT is not as robust in error reporting as some other languages, tools like <code>xsl:message</code> allow developers to display error messages or warnings, helping to debug transformations during development. Additionally, modern XSLT processors often provide more advanced debugging features, making it easier to identify and fix issues within the transformation.</p> <h3><span class="ez-toc-section" id="Applications_of_XSLT"></span>Applications of XSLT<span class="ez-toc-section-end"></span></h3> <p>XSLT has found applications across a broad range of fields, from web development to data processing and beyond. Some of the most notable uses of XSLT include:</p> <h4><span class="ez-toc-section" id="1_Web_Development"></span>1. <strong>Web Development</strong><span class="ez-toc-section-end"></span></h4> <p>In web development, XSLT is often used to transform XML data into HTML for display on web pages. For example, an XML document containing product information can be transformed into an HTML table for presentation on an e-commerce site. This separation of data and presentation makes it easier to update the structure and appearance of web pages without modifying the underlying data.</p> <h4><span class="ez-toc-section" id="2_Data_Interchange"></span>2. <strong>Data Interchange</strong><span class="ez-toc-section-end"></span></h4> <p>XSLT is widely used in data interchange between systems that communicate using XML. For example, a company might receive data in XML format from a third-party supplier and need to transform it into a different format for internal use. XSLT can automate this transformation process, ensuring that the data is correctly formatted and ready for integration into the company’s internal systems.</p> <h4><span class="ez-toc-section" id="3_Document_Generation"></span>3. <strong>Document Generation</strong><span class="ez-toc-section-end"></span></h4> <p>Another common use of XSLT is in the generation of reports, invoices, and other documents. XSLT can be used to generate PDFs, HTML reports, or text documents from structured XML data. This is particularly useful in scenarios where a system needs to generate documents dynamically based on changing data, such as financial statements, product catalogs, or custom reports.</p> <h4><span class="ez-toc-section" id="4_Configuration_Files_and_Metadata_Processing"></span>4. <strong>Configuration Files and Metadata Processing</strong><span class="ez-toc-section-end"></span></h4> <p>XSLT is often used to process configuration files or metadata in XML format. For example, a system may need to transform an XML-based configuration file into a format that is readable by a particular software application or framework. XSLT can facilitate this process, ensuring that the configuration data is processed correctly and efficiently.</p> <h4><span class="ez-toc-section" id="5_Content_Management_Systems_CMS"></span>5. <strong>Content Management Systems (CMS)</strong><span class="ez-toc-section-end"></span></h4> <p>In CMS applications, XSLT is commonly used to transform XML-based content into different output formats, such as HTML, RSS, or even mobile-friendly formats. This is particularly useful in managing and publishing content across different channels, as the same XML content can be transformed and presented in various formats without duplicating the data.</p> <h3><span class="ez-toc-section" id="Conclusion"></span>Conclusion<span class="ez-toc-section-end"></span></h3> <p>XSLT is a powerful tool for transforming and presenting XML data in various formats. Its ability to separate content from presentation, its integration with XPath for querying XML data, and its extensibility make it an invaluable technology for a wide range of applications. Whether used in web development, data interchange, document generation, or configuration management, XSLT remains a cornerstone technology for anyone working with XML. Its ongoing development and support across various platforms ensure that it will continue to play a key role in the evolution of data processing and web technologies for years to come.</p> <p>In conclusion, XSLT is not merely a tool for transforming XML; it is a versatile and essential component of modern web development and data processing. Understanding its features, syntax, and potential applications can provide developers and organizations with the tools they need to work with XML data more efficiently and effectively.</p> </div> </div> </div> </p> <div class="stream-item stream-item-below-post-content"><div class="stream-item-size" style=""> <div class="stream-item stream-item-in-post stream-item-in-post-1"><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3293364314201893" crossorigin="anonymous"></script> <!-- defults --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3293364314201893" data-ad-slot="2303082872" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </div></div> </div><!-- .entry-content /--> <div id="post-extra-info"> <div class="theiaStickySidebar"> <div class="single-post-meta post-meta clearfix"><span class="meta-item last-updated">Last Updated: 12/12/2024</span><div class="tie-alignright"></div></div><!-- .post-meta --> <div id="share-buttons-top" class="share-buttons share-buttons-top"> <div class="share-links share-centered icons-only share-rounded"> <a href="https://www.facebook.com/sharer.php?u=https://freesourcelibrary.com/mastering-xslt-for-data-transformation/" rel="external noopener nofollow" title="Facebook" target="_blank" class="facebook-share-btn " data-raw="https://www.facebook.com/sharer.php?u={post_link}"> <span class="share-btn-icon tie-icon-facebook"></span> <span class="screen-reader-text">Facebook</span> </a> <a href="https://twitter.com/intent/tweet?text=Mastering%20XSLT%20for%20Data%20Transformation&url=https://freesourcelibrary.com/mastering-xslt-for-data-transformation/" rel="external noopener nofollow" title="X" target="_blank" class="twitter-share-btn " data-raw="https://twitter.com/intent/tweet?text={post_title}&url={post_link}"> <span class="share-btn-icon tie-icon-twitter"></span> <span class="screen-reader-text">X</span> </a> <a href="https://www.linkedin.com/shareArticle?mini=true&url=https://freesourcelibrary.com/mastering-xslt-for-data-transformation/&title=Mastering%20XSLT%20for%20Data%20Transformation" rel="external noopener nofollow" title="LinkedIn" target="_blank" class="linkedin-share-btn " data-raw="https://www.linkedin.com/shareArticle?mini=true&url={post_full_link}&title={post_title}"> <span class="share-btn-icon tie-icon-linkedin"></span> <span class="screen-reader-text">LinkedIn</span> </a> <a href="https://api.whatsapp.com/send?text=Mastering%20XSLT%20for%20Data%20Transformation%20https://freesourcelibrary.com/mastering-xslt-for-data-transformation/" rel="external noopener nofollow" title="WhatsApp" target="_blank" class="whatsapp-share-btn " data-raw="https://api.whatsapp.com/send?text={post_title}%20{post_link}"> <span class="share-btn-icon tie-icon-whatsapp"></span> <span class="screen-reader-text">WhatsApp</span> </a> </div><!-- .share-links /--> </div><!-- .share-buttons /--> </div> </div> <div class="clearfix"></div> <script id="tie-schema-json" type="application/ld+json">{"@context":"http:\/\/schema.org","@type":"BlogPosting","dateCreated":"2024-12-12T10:18:30+03:00","datePublished":"2024-12-12T10:18:30+03:00","dateModified":"2024-12-12T10:18:30+03:00","headline":"Mastering XSLT for Data Transformation","name":"Mastering XSLT for Data Transformation","keywords":[],"url":"https:\/\/freesourcelibrary.com\/mastering-xslt-for-data-transformation\/","description":"Understanding XSLT: Evolution, Features, and ApplicationsIntroduction to XSLTExtensible Stylesheet Language Transformations (XSLT) is a programming language designed for transforming XML documents int","copyrightYear":"2024","articleSection":"Programming languages","articleBody":"Understanding XSLT: Evolution, Features, and ApplicationsIntroduction to XSLTExtensible Stylesheet Language Transformations (XSLT) is a programming language designed for transforming XML documents into different formats. Originating in the late 1990s, XSLT became a cornerstone of web development and data processing, offering powerful ways to manipulate XML data. XML, or Extensible Markup Language, is widely used to store and transport data across various platforms, but to display or use this data meaningfully, it often needs to be converted into a more user-friendly format. This is where XSLT comes into play.XSLT serves as a transformation tool, capable of converting XML data into HTML, text, or even other XML documents, by applying a set of rules or templates defined in XSLT stylesheets. These transformations are essential in environments where data is stored in XML format, such as web services, data interchange between applications, and configuration management systems.The Origins and Evolution of XSLTThe development of XSLT was part of the broader XML revolution that gained momentum in the 1990s. The World Wide Web Consortium (W3C), which is responsible for developing standards for web technologies, introduced XSLT as part of the Extensible Stylesheet Language (XSL) specification. The primary goal of XSL was to provide a comprehensive suite of technologies for transforming, presenting, and manipulating XML documents.The initial version of XSLT was released in 1998, and it was intended to be used with XML documents, allowing developers to define transformations using templates written in the XSLT syntax. This version was an evolution of earlier methods for manipulating XML, such as XPath and XSL, and aimed to provide a standardized way to carry out transformations. The first versions of XSLT were fairly limited in their scope and capabilities, but over the years, successive revisions improved its efficiency, expressiveness, and compatibility with various web technologies.XSLT 1.0 was widely adopted for transforming XML into a variety of output formats, including HTML for web pages, plain text, or other structured XML formats. It provided basic features for template-based transformations but had limitations in terms of handling complex scenarios and data structures. The release of XSLT 2.0 in 2007 brought significant enhancements, including better support for regular expressions, more powerful data handling functions, and the ability to handle sequences and multi-step transformations.XSLT Syntax and Core ConceptsXSLT documents themselves are XML documents that contain various elements used to define how an XML document should be transformed. A typical XSLT stylesheet consists of the following core components:Templates: The fundamental unit of transformation in XSLT. A template matches a specific XML element or pattern and applies rules to transform it. Templates can match specific tags, attributes, or entire XML documents.XPath: XSLT relies heavily on XPath, a language used to navigate and select elements or attributes within an XML document. XPath expressions allow the developer to identify the data to be transformed and apply specific templates to those elements.Output Methods: XSLT supports various output formats, such as XML, HTML, and plain text. These formats dictate how the transformed data will be presented.Control Structures: XSLT includes control structures like conditionals (xsl:if and xsl:choose) and loops (xsl:for-each) to enable more complex transformations. These features allow developers to apply logic during transformations based on the content of the XML document.Extensions and Functions: Over time, XSLT has introduced custom functions and extensions that allow developers to extend the language's core functionality. These can be used to handle tasks such as date manipulation, string processing, and more.Key Features of XSLTXSLT, while originally designed for transforming XML documents, offers several features that make it an invaluable tool in a wide range of applications.1. Template-based ProcessingXSLT operates based on a template-based system, where rules or templates define how each part of an XML document should be transformed. The primary structure of an XSLT stylesheet revolves around templates that match certain XML elements or patterns. For example, an XSLT template might match every element in a document and format it as an HTML heading. This ability to define reusable templates makes XSLT highly modular and adaptable for various types of XML transformations.2. XPath IntegrationXPath is one of the core components of XSLT, allowing developers to easily navigate and query XML data. XPath expressions are used to select nodes in an XML document, allowing developers to apply transformations only to specific elements, attributes, or sections of the data. XPath is essential for targeting elements within an XML document and extracting the necessary information for transformation.3. Separation of Content and PresentationOne of the key advantages of using XSLT is its ability to separate content from presentation. With XSLT, the XML document serves purely as a source of data, while the XSLT stylesheet defines how that data should be presented. This separation allows the same XML data to be transformed into multiple different formats, including HTML, PDF, or even plain text, without modifying the original content. This principle is particularly beneficial in scenarios where the same data needs to be presented in different environments or to different audiences.4. ExtensibilityXSLT is highly extensible, allowing developers to define their own functions and variables within a stylesheet. This extensibility is particularly useful in complex transformations that may require additional processing or custom behavior beyond what is provided by the built-in XSLT functions. Through the use of extension functions, developers can extend the capabilities of XSLT to handle more specific tasks, such as interacting with external data sources or applying complex algorithms.5. Cross-platform CompatibilityXSLT is a platform-independent technology that is widely supported across various operating systems, development environments, and web servers. XSLT is built into many modern programming languages and frameworks, including Java, Python, PHP, and .NET. This cross-platform compatibility ensures that XSLT transformations can be easily integrated into a wide variety of applications and services, regardless of the underlying technology stack.6. Error Handling and DebuggingXSLT provides basic error handling capabilities, enabling developers to detect and respond to issues that may arise during the transformation process. While XSLT is not as robust in error reporting as some other languages, tools like xsl:message allow developers to display error messages or warnings, helping to debug transformations during development. Additionally, modern XSLT processors often provide more advanced debugging features, making it easier to identify and fix issues within the transformation.Applications of XSLTXSLT has found applications across a broad range of fields, from web development to data processing and beyond. Some of the most notable uses of XSLT include:1. Web DevelopmentIn web development, XSLT is often used to transform XML data into HTML for display on web pages. For example, an XML document containing product information can be transformed into an HTML table for presentation on an e-commerce site. This separation of data and presentation makes it easier to update the structure and appearance of web pages without modifying the underlying data.2. Data InterchangeXSLT is widely used in data interchange between systems that communicate using XML. For example, a company might receive data in XML format from a third-party supplier and need to transform it into a different format for internal use. XSLT can automate this transformation process, ensuring that the data is correctly formatted and ready for integration into the company\u2019s internal systems.3. Document GenerationAnother common use of XSLT is in the generation of reports, invoices, and other documents. XSLT can be used to generate PDFs, HTML reports, or text documents from structured XML data. This is particularly useful in scenarios where a system needs to generate documents dynamically based on changing data, such as financial statements, product catalogs, or custom reports.4. Configuration Files and Metadata ProcessingXSLT is often used to process configuration files or metadata in XML format. For example, a system may need to transform an XML-based configuration file into a format that is readable by a particular software application or framework. XSLT can facilitate this process, ensuring that the configuration data is processed correctly and efficiently.5. Content Management Systems (CMS)In CMS applications, XSLT is commonly used to transform XML-based content into different output formats, such as HTML, RSS, or even mobile-friendly formats. This is particularly useful in managing and publishing content across different channels, as the same XML content can be transformed and presented in various formats without duplicating the data.ConclusionXSLT is a powerful tool for transforming and presenting XML data in various formats. Its ability to separate content from presentation, its integration with XPath for querying XML data, and its extensibility make it an invaluable technology for a wide range of applications. Whether used in web development, data interchange, document generation, or configuration management, XSLT remains a cornerstone technology for anyone working with XML. Its ongoing development and support across various platforms ensure that it will continue to play a key role in the evolution of data processing and web technologies for years to come.In conclusion, XSLT is not merely a tool for transforming XML; it is a versatile and essential component of modern web development and data processing. Understanding its features, syntax, and potential applications can provide developers and organizations with the tools they need to work with XML data more efficiently and effectively.","publisher":{"@id":"#Publisher","@type":"Organization","name":"Free Source Library","logo":{"@type":"ImageObject","url":"https:\/\/freesourcelibrary.com\/wp-content\/uploads\/output-onlinepngtools.png"},"sameAs":["https:\/\/www.facebook.com\/freesourcelibrary\/"]},"sourceOrganization":{"@id":"#Publisher"},"copyrightHolder":{"@id":"#Publisher"},"mainEntityOfPage":{"@type":"WebPage","@id":"https:\/\/freesourcelibrary.com\/mastering-xslt-for-data-transformation\/","breadcrumb":{"@id":"#Breadcrumb"}},"author":{"@type":"Person","name":"Ayoob","url":"https:\/\/freesourcelibrary.com\/author\/admin\/"},"image":{"@type":"ImageObject","url":"https:\/\/freesourcelibrary.com\/wp-content\/uploads\/2023\/11\/free-source-library-high-resolution-color-logo-1024x768-1.png","width":1200,"height":768}}</script> </article><!-- #the-post /--> <div class="post-components"> <div class="prev-next-post-nav container-wrapper media-overlay"> <div class="tie-col-xs-6 prev-post"> <a href="https://freesourcelibrary.com/the-battle-of-champ-blanc/" style="background-image: url(https://freesourcelibrary.com/wp-content/uploads/2023/11/free-source-library-high-resolution-color-logo-1024x768-1-390x220.png)" class="post-thumb" rel="prev"> <div class="post-thumb-overlay-wrap"> <div class="post-thumb-overlay"> <span class="tie-icon tie-media-icon"></span> </div> </div> </a> <a href="https://freesourcelibrary.com/the-battle-of-champ-blanc/" rel="prev"> <h3 class="post-title">The Battle of Champ Blanc</h3> </a> </div> <div class="tie-col-xs-6 next-post"> <a href="https://freesourcelibrary.com/the-battle-of-champa-1281/" style="background-image: url(https://freesourcelibrary.com/wp-content/uploads/2023/11/free-source-library-high-resolution-color-logo-1024x768-1-390x220.png)" class="post-thumb" rel="next"> <div class="post-thumb-overlay-wrap"> <div class="post-thumb-overlay"> <span class="tie-icon tie-media-icon"></span> </div> </div> </a> <a href="https://freesourcelibrary.com/the-battle-of-champa-1281/" rel="next"> <h3 class="post-title">The Battle of Champa (1281)</h3> </a> </div> </div><!-- .prev-next-post-nav /--> <div id="related-posts" class="container-wrapper"> <div class="mag-box-title the-global-title"> <h3>Related Articles</h3> </div> <div class="related-posts-list"> <div class="related-item tie-standard"> <a aria-label="Understanding Schema.org Markup" href="https://freesourcelibrary.com/understanding-schema-org-markup/" class="post-thumb"> <div class="post-thumb-overlay-wrap"> <div class="post-thumb-overlay"> <span class="tie-icon tie-media-icon"></span> </div> </div> <img width="390" height="220" src="https://freesourcelibrary.com/wp-content/uploads/2023/11/free-source-library-high-resolution-color-logo-1024x768-1-390x220.png" class="attachment-jannah-image-large size-jannah-image-large wp-post-image default-featured-img" alt="" decoding="async" /></a> <h3 class="post-title"><a href="https://freesourcelibrary.com/understanding-schema-org-markup/">Understanding Schema.org Markup</a></h3> <div class="post-meta clearfix"></div><!-- .post-meta --> </div><!-- .related-item /--> <div class="related-item tie-standard"> <a aria-label="Bro: Network Monitoring Simplified" href="https://freesourcelibrary.com/bro-network-monitoring-simplified/" class="post-thumb"> <div class="post-thumb-overlay-wrap"> <div class="post-thumb-overlay"> <span class="tie-icon tie-media-icon"></span> </div> </div> <img width="390" height="220" src="https://freesourcelibrary.com/wp-content/uploads/2023/11/free-source-library-high-resolution-color-logo-1024x768-1-390x220.png" class="attachment-jannah-image-large size-jannah-image-large wp-post-image default-featured-img" alt="" decoding="async" loading="lazy" /></a> <h3 class="post-title"><a href="https://freesourcelibrary.com/bro-network-monitoring-simplified/">Bro: Network Monitoring Simplified</a></h3> <div class="post-meta clearfix"></div><!-- .post-meta --> </div><!-- .related-item /--> <div class="related-item tie-standard"> <a aria-label="STRIPS in AI Planning" href="https://freesourcelibrary.com/strips-in-ai-planning/" class="post-thumb"> <div class="post-thumb-overlay-wrap"> <div class="post-thumb-overlay"> <span class="tie-icon tie-media-icon"></span> </div> </div> <img width="390" height="220" src="https://freesourcelibrary.com/wp-content/uploads/2023/11/free-source-library-high-resolution-color-logo-1024x768-1-390x220.png" class="attachment-jannah-image-large size-jannah-image-large wp-post-image default-featured-img" alt="" decoding="async" loading="lazy" /></a> <h3 class="post-title"><a href="https://freesourcelibrary.com/strips-in-ai-planning/">STRIPS in AI Planning</a></h3> <div class="post-meta clearfix"></div><!-- .post-meta --> </div><!-- .related-item /--> <div class="related-item tie-standard"> <a aria-label="UnQL: Querying Document Databases" href="https://freesourcelibrary.com/unql-querying-document-databases/" class="post-thumb"> <div class="post-thumb-overlay-wrap"> <div class="post-thumb-overlay"> <span class="tie-icon tie-media-icon"></span> </div> </div> <img width="390" height="220" src="https://freesourcelibrary.com/wp-content/uploads/2023/11/free-source-library-high-resolution-color-logo-1024x768-1-390x220.png" class="attachment-jannah-image-large size-jannah-image-large wp-post-image default-featured-img" alt="" decoding="async" loading="lazy" /></a> <h3 class="post-title"><a href="https://freesourcelibrary.com/unql-querying-document-databases/">UnQL: Querying Document Databases</a></h3> <div class="post-meta clearfix"></div><!-- .post-meta --> </div><!-- .related-item /--> </div><!-- .related-posts-list /--> </div><!-- #related-posts /--> </div><!-- .post-components /--> </div><!-- .main-content --> </div><!-- .main-content-row /--></div><!-- #content /--><div class="stream-item stream-item-above-footer"><div class="stream-item-size" style=""> <div class="stream-item stream-item-in-post stream-item-in-post-1"><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3293364314201893" crossorigin="anonymous"></script> <!-- defults --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3293364314201893" data-ad-slot="2303082872" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </div></div> <footer id="footer" class="site-footer dark-skin dark-widgetized-area"> <div id="footer-widgets-container"> <div class="container"> </div><!-- .container /--> </div><!-- #Footer-widgets-container /--> <div id="site-info" class="site-info"> <div class="container"> <div class="tie-row"> <div class="tie-col-md-12"> <div class="copyright-text copyright-text-first"><footer> <div> © 2026 Free Source Library. All Rights Reserved  |  <a href="https://freesourcelibrary.com/information-policies-and-terms/">Information, Policies and Terms</a>  |  <a href="https://freesourcelibrary.com/contact-us/">Contact Us</a> </div> <div> <a href="https://freesourcelibrary.com/about-us/">About Us</a>  |  <a href="https://freesourcelibrary.com/operator-information/">Operator Information</a>  |  <a href="https://freesourcelibrary.com/privacy-policy-2/">Privacy Policy</a>  |  <a href="https://freesourcelibrary.com/terms-and-conditions/">Terms and Conditions</a>  |  <a href="https://freesourcelibrary.com/report-content/">Report Content</a> </div> </footer></div><ul class="social-icons"><li class="social-icons-item"><a class="social-link facebook-social-icon" rel="external noopener nofollow" target="_blank" href="https://www.facebook.com/freesourcelibrary/"><span class="tie-social-icon tie-icon-facebook"></span><span class="screen-reader-text">Facebook</span></a></li></ul> </div><!-- .tie-col /--> </div><!-- .tie-row /--> </div><!-- .container /--> </div><!-- #site-info /--> </footer><!-- #footer /--> <div id="share-buttons-mobile" class="share-buttons share-buttons-mobile"> <div class="share-links icons-only"> <a href="https://www.facebook.com/sharer.php?u=https://freesourcelibrary.com/mastering-xslt-for-data-transformation/" rel="external noopener nofollow" title="Facebook" target="_blank" class="facebook-share-btn " data-raw="https://www.facebook.com/sharer.php?u={post_link}"> <span class="share-btn-icon tie-icon-facebook"></span> <span class="screen-reader-text">Facebook</span> </a> <a href="https://twitter.com/intent/tweet?text=Mastering%20XSLT%20for%20Data%20Transformation&url=https://freesourcelibrary.com/mastering-xslt-for-data-transformation/" rel="external noopener nofollow" title="X" target="_blank" class="twitter-share-btn " data-raw="https://twitter.com/intent/tweet?text={post_title}&url={post_link}"> <span class="share-btn-icon tie-icon-twitter"></span> <span class="screen-reader-text">X</span> </a> <a href="https://www.linkedin.com/shareArticle?mini=true&url=https://freesourcelibrary.com/mastering-xslt-for-data-transformation/&title=Mastering%20XSLT%20for%20Data%20Transformation" rel="external noopener nofollow" title="LinkedIn" target="_blank" class="linkedin-share-btn " data-raw="https://www.linkedin.com/shareArticle?mini=true&url={post_full_link}&title={post_title}"> <span class="share-btn-icon tie-icon-linkedin"></span> <span class="screen-reader-text">LinkedIn</span> </a> <a href="https://www.tumblr.com/share/link?url=https://freesourcelibrary.com/mastering-xslt-for-data-transformation/&name=Mastering%20XSLT%20for%20Data%20Transformation" rel="external noopener nofollow" title="Tumblr" target="_blank" class="tumblr-share-btn " data-raw="https://www.tumblr.com/share/link?url={post_link}&name={post_title}"> <span class="share-btn-icon tie-icon-tumblr"></span> <span class="screen-reader-text">Tumblr</span> </a> <a href="https://pinterest.com/pin/create/button/?url=https://freesourcelibrary.com/mastering-xslt-for-data-transformation/&description=Mastering%20XSLT%20for%20Data%20Transformation&media=https://freesourcelibrary.com/wp-content/uploads/2023/11/free-source-library-high-resolution-color-logo-1024x768-1.png" rel="external noopener nofollow" title="Pinterest" target="_blank" class="pinterest-share-btn " data-raw="https://pinterest.com/pin/create/button/?url={post_link}&description={post_title}&media={post_img}"> <span class="share-btn-icon tie-icon-pinterest"></span> <span class="screen-reader-text">Pinterest</span> </a> <a href="https://reddit.com/submit?url=https://freesourcelibrary.com/mastering-xslt-for-data-transformation/&title=Mastering%20XSLT%20for%20Data%20Transformation" rel="external noopener nofollow" title="Reddit" target="_blank" class="reddit-share-btn " data-raw="https://reddit.com/submit?url={post_link}&title={post_title}"> <span class="share-btn-icon tie-icon-reddit"></span> <span class="screen-reader-text">Reddit</span> </a> <a href="fb-messenger://share?app_id=5303202981&display=popup&link=https://freesourcelibrary.com/mastering-xslt-for-data-transformation/&redirect_uri=https://freesourcelibrary.com/mastering-xslt-for-data-transformation/" rel="external noopener nofollow" title="Messenger" target="_blank" class="messenger-mob-share-btn messenger-share-btn " data-raw="fb-messenger://share?app_id=5303202981&display=popup&link={post_link}&redirect_uri={post_link}"> <span class="share-btn-icon tie-icon-messenger"></span> <span class="screen-reader-text">Messenger</span> </a> <a href="https://www.facebook.com/dialog/send?app_id=5303202981&display=popup&link=https://freesourcelibrary.com/mastering-xslt-for-data-transformation/&redirect_uri=https://freesourcelibrary.com/mastering-xslt-for-data-transformation/" rel="external noopener nofollow" title="Messenger" target="_blank" class="messenger-desktop-share-btn messenger-share-btn " data-raw="https://www.facebook.com/dialog/send?app_id=5303202981&display=popup&link={post_link}&redirect_uri={post_link}"> <span class="share-btn-icon tie-icon-messenger"></span> <span class="screen-reader-text">Messenger</span> </a> <a href="https://api.whatsapp.com/send?text=Mastering%20XSLT%20for%20Data%20Transformation%20https://freesourcelibrary.com/mastering-xslt-for-data-transformation/" rel="external noopener nofollow" title="WhatsApp" target="_blank" class="whatsapp-share-btn " data-raw="https://api.whatsapp.com/send?text={post_title}%20{post_link}"> <span class="share-btn-icon tie-icon-whatsapp"></span> <span class="screen-reader-text">WhatsApp</span> </a> <a href="https://telegram.me/share/url?url=https://freesourcelibrary.com/mastering-xslt-for-data-transformation/&text=Mastering%20XSLT%20for%20Data%20Transformation" rel="external noopener nofollow" title="Telegram" target="_blank" class="telegram-share-btn " data-raw="https://telegram.me/share/url?url={post_link}&text={post_title}"> <span class="share-btn-icon tie-icon-paper-plane"></span> <span class="screen-reader-text">Telegram</span> </a> <a href="viber://forward?text=Mastering%20XSLT%20for%20Data%20Transformation%20https://freesourcelibrary.com/mastering-xslt-for-data-transformation/" rel="external noopener nofollow" title="Viber" target="_blank" class="viber-share-btn " data-raw="viber://forward?text={post_title}%20{post_link}"> <span class="share-btn-icon tie-icon-phone"></span> <span class="screen-reader-text">Viber</span> </a> <a href="https://line.me/R/msg/text/?Mastering%20XSLT%20for%20Data%20Transformation%20https://freesourcelibrary.com/mastering-xslt-for-data-transformation/" rel="external noopener nofollow" title="Line" target="_blank" class="line-share-btn " data-raw="https://line.me/R/msg/text/?{post_title}%20{post_link}"> <span class="share-btn-icon tie-icon-line"></span> <span class="screen-reader-text">Line</span> </a> </div><!-- .share-links /--> </div><!-- .share-buttons /--> <div class="mobile-share-buttons-spacer"></div> <a id="go-to-top" class="go-to-top-button" href="#go-to-tie-body"> <span class="tie-icon-angle-up"></span> <span class="screen-reader-text">Back to top button</span> </a> </div><!-- #tie-wrapper /--> <aside class=" side-aside normal-side dark-skin dark-widgetized-area slide-sidebar-desktop is-fullwidth appear-from-left" aria-label="Secondary Sidebar" style="visibility: hidden;"> <div data-height="100%" class="side-aside-wrapper has-custom-scroll"> <a href="#" class="close-side-aside remove big-btn"> <span class="screen-reader-text">Close</span> </a><!-- .close-side-aside /--> <div id="mobile-container"> <div id="mobile-menu" class=""> </div><!-- #mobile-menu /--> <div id="mobile-social-icons" class="social-icons-widget solid-social-icons"> <ul><li class="social-icons-item"><a class="social-link facebook-social-icon" rel="external noopener nofollow" target="_blank" href="https://www.facebook.com/freesourcelibrary/"><span class="tie-social-icon tie-icon-facebook"></span><span class="screen-reader-text">Facebook</span></a></li></ul> </div><!-- #mobile-social-icons /--> <div id="mobile-search"> <form role="search" method="get" class="search-form" action="https://freesourcelibrary.com/"> <label> <span class="screen-reader-text">Search for:</span> <input type="search" class="search-field" placeholder="Search …" value="" name="s" /> </label> <input type="submit" class="search-submit" value="Search" /> </form> </div><!-- #mobile-search /--> </div><!-- #mobile-container /--> <div id="slide-sidebar-widgets"> </div> </div><!-- .side-aside-wrapper /--> </aside><!-- .side-aside /--> </div><!-- #tie-container /--> </div><!-- .background-overlay /--> <script type="speculationrules"> {"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/jannah/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} </script> <script id="ckyBannerTemplate" type="text/template"><div class="cky-overlay cky-hide"></div><div class="cky-btn-revisit-wrapper cky-revisit-hide" data-cky-tag="revisit-consent" data-tooltip="Consent Preferences" style="background-color:#0056A7"> <button class="cky-btn-revisit" aria-label="Consent Preferences"> <img src="https://freesourcelibrary.com/wp-content/plugins/cookie-law-info/lite/frontend/images/revisit.svg" alt="Revisit consent button"> </button></div><div class="cky-consent-container cky-hide" tabindex="0"> <div class="cky-consent-bar" data-cky-tag="notice" style="background-color:#121212;border-color:#2a2a2a"> <div class="cky-notice"> <p class="cky-title" role="heading" aria-level="2" data-cky-tag="title" style="color:#d0d0d0">Free Source Library value your privacy</p><div class="cky-notice-group"> <div class="cky-notice-des" data-cky-tag="description" style="color:#d0d0d0"> <p>We use cookies to enhance your browsing experience, serve personalized ads or content, and analyze our traffic. By clicking "Accept All", you consent to our use of cookies.</p> </div><div class="cky-notice-btn-wrapper" data-cky-tag="notice-buttons"> <button class="cky-btn cky-btn-customize" aria-label="Customize" aria-haspopup="true" aria-controls="ckyPreferenceCenter" data-cky-tag="settings-button" style="color:#d0d0d0;background-color:transparent;border-color:#d0d0d0">Customize</button> <button class="cky-btn cky-btn-reject" aria-label="Reject All" data-cky-tag="reject-button" style="color:#d0d0d0;background-color:transparent;border-color:#d0d0d0">Reject All</button> <button class="cky-btn cky-btn-accept" aria-label="Accept All" data-cky-tag="accept-button" style="color:#d0d0d0;background-color:#1863DC;border-color:#1863DC">Accept All</button> </div></div></div></div></div><div class="cky-modal" tabindex="0"> <div class="cky-preference-center" id="ckyPreferenceCenter" data-cky-tag="detail" style="color:#d0d0d0;background-color:#121212;border-color:#2A2A2A"> <div class="cky-preference-header"> <span class="cky-preference-title" role="heading" aria-level="2" data-cky-tag="detail-title" style="color:#d0d0d0">Customize Consent Preferences</span> <button class="cky-btn-close" aria-label="Close" data-cky-tag="detail-close"> <img src="https://freesourcelibrary.com/wp-content/plugins/cookie-law-info/lite/frontend/images/close.svg" alt=""> </button> </div><div class="cky-preference-body-wrapper"> <div class="cky-preference-content-wrapper" data-cky-tag="detail-description" style="color:#d0d0d0"> <p>Free Source Library use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.</p> <p>The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site.</p> <p>We also use third-party cookies that help us analyze how you use this website, store your preferences, and provide the content and advertisements that are relevant to you. These cookies will only be stored in your browser with your prior consent.</p> <p>You can choose to enable or disable some or all of these cookies but disabling some of them may affect your browsing experience.</p> </div><div class="cky-accordion-wrapper" data-cky-tag="detail-categories"> <div class="cky-accordion" id="ckyDetailCategorynecessary"> <div class="cky-accordion-item"> <div class="cky-accordion-chevron"><i class="cky-chevron-right"></i></div> <div class="cky-accordion-header-wrapper"> <div class="cky-accordion-header"><button class="cky-accordion-btn" aria-label="Necessary" data-cky-tag="detail-category-title" style="color:#d0d0d0">Necessary</button><span class="cky-always-active">Always Active</span> <div class="cky-switch" data-cky-tag="detail-category-toggle"><input type="checkbox" id="ckySwitchnecessary"></div> </div> <div class="cky-accordion-header-des" data-cky-tag="detail-category-description" style="color:#d0d0d0"> <p>Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.</p></div> </div> </div> <div class="cky-accordion-body"> <div class="cky-audit-table" data-cky-tag="audit-table" style="color:#d0d0d0;background-color:#2a2a2a;border-color:#474444"><p class="cky-empty-cookies-text">No cookies to display.</p></div> </div> </div><div class="cky-accordion" id="ckyDetailCategoryfunctional"> <div class="cky-accordion-item"> <div class="cky-accordion-chevron"><i class="cky-chevron-right"></i></div> <div class="cky-accordion-header-wrapper"> <div class="cky-accordion-header"><button class="cky-accordion-btn" aria-label="Functional" data-cky-tag="detail-category-title" style="color:#d0d0d0">Functional</button><span class="cky-always-active">Always Active</span> <div class="cky-switch" data-cky-tag="detail-category-toggle"><input type="checkbox" id="ckySwitchfunctional"></div> </div> <div class="cky-accordion-header-des" data-cky-tag="detail-category-description" style="color:#d0d0d0"> <p>Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.</p></div> </div> </div> <div class="cky-accordion-body"> <div class="cky-audit-table" data-cky-tag="audit-table" style="color:#d0d0d0;background-color:#2a2a2a;border-color:#474444"><p class="cky-empty-cookies-text">No cookies to display.</p></div> </div> </div><div class="cky-accordion" id="ckyDetailCategoryanalytics"> <div class="cky-accordion-item"> <div class="cky-accordion-chevron"><i class="cky-chevron-right"></i></div> <div class="cky-accordion-header-wrapper"> <div class="cky-accordion-header"><button class="cky-accordion-btn" aria-label="Analytics" data-cky-tag="detail-category-title" style="color:#d0d0d0">Analytics</button><span class="cky-always-active">Always Active</span> <div class="cky-switch" data-cky-tag="detail-category-toggle"><input type="checkbox" id="ckySwitchanalytics"></div> </div> <div class="cky-accordion-header-des" data-cky-tag="detail-category-description" style="color:#d0d0d0"> <p>Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.</p></div> </div> </div> <div class="cky-accordion-body"> <div class="cky-audit-table" data-cky-tag="audit-table" style="color:#d0d0d0;background-color:#2a2a2a;border-color:#474444"><p class="cky-empty-cookies-text">No cookies to display.</p></div> </div> </div><div class="cky-accordion" id="ckyDetailCategoryperformance"> <div class="cky-accordion-item"> <div class="cky-accordion-chevron"><i class="cky-chevron-right"></i></div> <div class="cky-accordion-header-wrapper"> <div class="cky-accordion-header"><button class="cky-accordion-btn" aria-label="Performance" data-cky-tag="detail-category-title" style="color:#d0d0d0">Performance</button><span class="cky-always-active">Always Active</span> <div class="cky-switch" data-cky-tag="detail-category-toggle"><input type="checkbox" id="ckySwitchperformance"></div> </div> <div class="cky-accordion-header-des" data-cky-tag="detail-category-description" style="color:#d0d0d0"> <p>Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.</p></div> </div> </div> <div class="cky-accordion-body"> <div class="cky-audit-table" data-cky-tag="audit-table" style="color:#d0d0d0;background-color:#2a2a2a;border-color:#474444"><p class="cky-empty-cookies-text">No cookies to display.</p></div> </div> </div><div class="cky-accordion" id="ckyDetailCategoryadvertisement"> <div class="cky-accordion-item"> <div class="cky-accordion-chevron"><i class="cky-chevron-right"></i></div> <div class="cky-accordion-header-wrapper"> <div class="cky-accordion-header"><button class="cky-accordion-btn" aria-label="Advertisement" data-cky-tag="detail-category-title" style="color:#d0d0d0">Advertisement</button><span class="cky-always-active">Always Active</span> <div class="cky-switch" data-cky-tag="detail-category-toggle"><input type="checkbox" id="ckySwitchadvertisement"></div> </div> <div class="cky-accordion-header-des" data-cky-tag="detail-category-description" style="color:#d0d0d0"> <p>Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.</p></div> </div> </div> <div class="cky-accordion-body"> <div class="cky-audit-table" data-cky-tag="audit-table" style="color:#d0d0d0;background-color:#2a2a2a;border-color:#474444"><p class="cky-empty-cookies-text">No cookies to display.</p></div> </div> </div> </div></div><div class="cky-footer-wrapper"> <span class="cky-footer-shadow"></span> <div class="cky-prefrence-btn-wrapper" data-cky-tag="detail-buttons"> <button class="cky-btn cky-btn-reject" aria-label="Reject All" data-cky-tag="detail-reject-button" style="color:#d0d0d0;background-color:transparent;border-color:#d0d0d0"> Reject All </button> <button class="cky-btn cky-btn-preferences" aria-label="Save My Preferences" data-cky-tag="detail-save-button" style="color:#d0d0d0;background-color:transparent;border-color:#d0d0d0"> Save My Preferences </button> <button class="cky-btn cky-btn-accept" aria-label="Accept All" data-cky-tag="detail-accept-button" style="color:#d0d0d0;background-color:#1863DC;border-color:#1863DC"> Accept All </button> </div></div></div></div></script><div id="reading-position-indicator"></div><div id="is-scroller-outer"><div id="is-scroller"></div></div><div id="fb-root"></div> <div id="tie-popup-search-desktop" class="tie-popup tie-popup-search-wrap" style="display: none;"> <a href="#" class="tie-btn-close remove big-btn light-btn"> <span class="screen-reader-text">Close</span> </a> <div class="popup-search-wrap-inner"> <div class="live-search-parent pop-up-live-search" data-skin="live-search-popup" aria-label="Search"> <form method="get" class="tie-popup-search-form" action="https://freesourcelibrary.com/"> <input class="tie-popup-search-input " inputmode="search" type="text" name="s" title="Search for" autocomplete="off" placeholder="Type and hit Enter" /> <button class="tie-popup-search-submit" type="submit"> <span class="tie-icon-search tie-search-icon" aria-hidden="true"></span> <span class="screen-reader-text">Search for</span> </button> </form> </div><!-- .pop-up-live-search /--> </div><!-- .popup-search-wrap-inner /--> </div><!-- .tie-popup-search-wrap /--> <div id="tie-popup-search-mobile" class="tie-popup tie-popup-search-wrap" style="display: none;"> <a href="#" class="tie-btn-close remove big-btn light-btn"> <span class="screen-reader-text">Close</span> </a> <div class="popup-search-wrap-inner"> <div class="live-search-parent pop-up-live-search" data-skin="live-search-popup" aria-label="Search"> <form method="get" class="tie-popup-search-form" action="https://freesourcelibrary.com/"> <input class="tie-popup-search-input " inputmode="search" type="text" name="s" title="Search for" autocomplete="off" placeholder="Search for" /> <button class="tie-popup-search-submit" type="submit"> <span class="tie-icon-search tie-search-icon" aria-hidden="true"></span> <span class="screen-reader-text">Search for</span> </button> </form> </div><!-- .pop-up-live-search /--> </div><!-- .popup-search-wrap-inner /--> </div><!-- .tie-popup-search-wrap /--> <script id="eztoc-scroll-scriptjs-js-extra"> var eztoc_smooth_local = {"scroll_offset":"30","add_request_uri":"","add_self_reference_link":""}; //# sourceURL=eztoc-scroll-scriptjs-js-extra </script> <script id="eztoc-scroll-scriptjs-js" src="https://freesourcelibrary.com/wp-content/plugins/easy-table-of-contents/assets/js/smooth_scroll.min.js?ver=2.0.85"></script> <script id="eztoc-js-cookie-js" src="https://freesourcelibrary.com/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js?ver=2.2.1"></script> <script id="eztoc-jquery-sticky-kit-js" src="https://freesourcelibrary.com/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js?ver=1.9.2"></script> <script id="eztoc-js-js-extra"> var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"","scroll_offset":"30","fallbackIcon":"\u003Cspan class=\"\"\u003E\u003Cspan class=\"eztoc-hide\" style=\"display:none;\"\u003EToggle\u003C/span\u003E\u003Cspan class=\"ez-toc-icon-toggle-span\"\u003E\u003Csvg style=\"fill: #999;color:#999\" xmlns=\"http://www.w3.org/2000/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"\u003E\u003Cpath d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"\u003E\u003C/path\u003E\u003C/svg\u003E\u003Csvg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"\u003E\u003Cpath d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"/\u003E\u003C/svg\u003E\u003C/span\u003E\u003C/span\u003E","chamomile_theme_is_on":""}; //# sourceURL=eztoc-js-js-extra </script> <script id="eztoc-js-js" src="https://freesourcelibrary.com/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js?ver=2.0.85-1781436629"></script> <script id="googlesitekit-consent-mode-js" src="https://freesourcelibrary.com/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-consent-mode-755f1678e260138d789e.js"></script> <script id="tie-scripts-js-extra"> var tie = {"is_rtl":"","ajaxurl":"https://freesourcelibrary.com/wp-admin/admin-ajax.php","is_side_aside_light":"","is_taqyeem_active":"","is_sticky_video":"","mobile_menu_top":"","mobile_menu_active":"area_1","mobile_menu_parent":"","lightbox_all":"true","lightbox_gallery":"true","lightbox_skin":"dark","lightbox_thumb":"horizontal","lightbox_arrows":"true","is_singular":"1","autoload_posts":"","reading_indicator":"true","lazyload":"","select_share":"","select_share_twitter":"","select_share_facebook":"","select_share_linkedin":"","select_share_email":"","facebook_app_id":"5303202981","twitter_username":"","responsive_tables":"true","ad_blocker_detector":"","sticky_behavior":"upwards","sticky_desktop":"true","sticky_mobile":"true","sticky_mobile_behavior":"default","ajax_loader":"\u003Cdiv class=\"loader-overlay\"\u003E\u003Cdiv class=\"spinner-circle\"\u003E\u003C/div\u003E\u003C/div\u003E","type_to_search":"1","lang_no_results":"Nothing Found","sticky_share_mobile":"true","sticky_share_post":"","sticky_share_post_menu":""}; //# sourceURL=tie-scripts-js-extra </script> <script id="tie-scripts-js" src="https://freesourcelibrary.com/wp-content/themes/jannah/assets/js/scripts.min.js?ver=7.0.2"></script> <script id="tie-js-ilightbox-js" src="https://freesourcelibrary.com/wp-content/themes/jannah/assets/ilightbox/lightbox.js?ver=7.0.2"></script> <script id="tie-js-sliders-js" src="https://freesourcelibrary.com/wp-content/themes/jannah/assets/js/sliders.min.js?ver=7.0.2"></script> <script id="tie-js-shortcodes-js" src="https://freesourcelibrary.com/wp-content/themes/jannah/assets/js/shortcodes.js?ver=7.0.2"></script> <script id="tie-js-desktop-js" src="https://freesourcelibrary.com/wp-content/themes/jannah/assets/js/desktop.min.js?ver=7.0.2"></script> <script id="tie-js-single-js" src="https://freesourcelibrary.com/wp-content/themes/jannah/assets/js/single.min.js?ver=7.0.2"></script> <script id="wp-consent-api-js-extra"> var consent_api = {"consent_type":"","waitfor_consent_hook":"","cookie_expiration":"30","cookie_prefix":"wp_consent","services":[]}; //# sourceURL=wp-consent-api-js-extra </script> <script id="wp-consent-api-js" src="https://freesourcelibrary.com/wp-content/plugins/wp-consent-api/assets/js/wp-consent-api.min.js?ver=2.0.1"></script> <script> WebFontConfig ={ google:{ families: [ 'Poppins:600,regular:latin&display=swap' ] } }; (function(){ var wf = document.createElement('script'); wf.src = '//ajax.googleapis.com/ajax/libs/webfont/1/webfont.js'; wf.type = 'text/javascript'; wf.defer = 'true'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(wf, s); })(); </script> </body> </html> <!-- Cached by WP-Optimize (gzip) - https://teamupdraft.com/wp-optimize/ - Last modified: 08/09/2026 6:49 pm (UTC:3) -->