Programming languages

Understanding TREX for XML Validation

TREX: A Comprehensive Overview of the XML Validation Language

Introduction

In the realm of data processing, XML (eXtensible Markup Language) plays a central role in the exchange of structured information across various platforms and systems. As data complexity grows, so does the need for rigorous validation mechanisms to ensure that XML documents adhere to a specific structure and content format. One of the prominent tools in the XML validation landscape is TREX, a language designed to specify patterns that XML documents must conform to. This article delves into the intricacies of TREX, exploring its history, functionality, and significance in the broader context of XML validation.

What is TREX?

TREX, which stands for Tree Regular Expressions for XML, is a language created to define patterns that validate XML documents. These patterns specify both the structural and content-based constraints of XML documents, ensuring they meet the criteria set out by a particular schema or design. Developed by James Clark in 2001, TREX serves as an alternative to other schema languages such as XML Schema (XSD) and Document Type Definition (DTD). Its primary aim is to provide a more straightforward and expressive way to validate the structure of XML documents, addressing some of the limitations found in traditional XML validation technologies.

A TREX pattern is itself an XML document. It defines a set of rules that must be followed by the XML content, including elements, attributes, and their interrelations. These patterns allow developers and systems to validate XML documents effectively, confirming that they adhere to the intended structure without ambiguity or error.

The Core Concept of TREX Patterns

At its core, TREX works by defining a pattern that must be followed by the XML document being validated. This pattern dictates the arrangement of elements and attributes within the XML, including constraints on their content. The concept behind TREX is relatively simple: an XML document is considered valid if it matches the predefined TREX pattern. The validation process is akin to matching a document against a set of regular expressions, but instead of text matching, TREX focuses on the structure and content of XML data.

A typical TREX pattern might specify that a certain XML element must contain a specific set of child elements or attributes, or it might impose constraints on the data types or formats used within the document. These patterns can be as simple or as complex as needed, depending on the validation requirements of the XML document in question.

TREX and XML Document Validation

XML validation is a process that ensures an XML document conforms to a predefined set of rules and structure. Validation is a critical step in many workflows, as it ensures that XML data is not only syntactically correct but also conforms to the expected business rules and constraints. TREX achieves this by providing a means to specify the structure of an XML document using patterns that can be validated against the document’s content.

In comparison to other validation methods such as DTD and XML Schema, TREX offers a more concise and expressive syntax for specifying document structures. Where DTD might require complex declarations and XML Schema involves verbose XML definitions, TREX patterns are often simpler and more readable, making them a preferred choice for many developers working with XML data.

Advantages of TREX

  1. Simplicity and Readability: One of the most notable advantages of TREX is its simplicity. The patterns are easy to understand, even for developers who may not be familiar with complex schema languages like XML Schema. The syntax used in TREX is designed to be concise and intuitive, which makes the process of designing and validating XML structures more accessible.

  2. Flexibility: TREX allows for the validation of XML documents with great flexibility. Patterns can define a wide range of constraints, from basic element-ordering rules to more intricate content-based validations. This makes it suitable for a variety of use cases, from simple configurations to highly complex XML structures.

  3. Integration with Other XML Technologies: As an XML-based language, TREX seamlessly integrates with other XML technologies. This ensures compatibility with existing XML parsers, document-handling systems, and tools. Developers can use TREX alongside other XML tools to create robust validation solutions without worrying about compatibility issues.

  4. Human-Readable and Maintainable: Unlike some other validation languages, TREX patterns are designed to be human-readable. This is especially beneficial for teams working collaboratively on XML-based projects, as it simplifies communication and reduces the likelihood of errors. Furthermore, because of its simplicity, maintaining and updating TREX patterns is straightforward.

TREX Syntax and Structure

The syntax of a TREX pattern is designed to be declarative, where the pattern explicitly describes the allowed structure of XML elements. Here’s a basic example of how a TREX pattern might look:

xml
<trex> <pattern> <element name="book"> <element name="title" /> <element name="author" /> element> pattern> trex>

In this example, the pattern specifies that an XML document must contain a element with exactly two child elements: </code> and <code><author></code>. This is a simple example, but TREX patterns can be far more complex, supporting advanced constraints such as data types, occurrence patterns, and content models.</p> <p><strong>TREX vs. XML Schema (XSD)</strong></p> <p>While both TREX and XML Schema serve the same purpose β€” to validate XML documents β€” there are some key differences between the two:</p> <ol> <li> <p><strong>Expressiveness</strong>: XML Schema (XSD) is more powerful and expressive than TREX, offering a wide range of data types, constraints, and features such as default values, extensions, and inheritance. However, this comes at the cost of complexity. TREX, by contrast, focuses on simplicity and readability, providing just enough expressiveness to meet the needs of many use cases.</p> </li> <li> <p><strong>Complexity</strong>: XML Schema is considerably more complex than TREX, requiring developers to understand intricate data types and relationships between elements. TREX, on the other hand, is much simpler, focusing primarily on the structural validation of XML documents without delving too deeply into data types or other advanced concepts.</p> </li> <li> <p><strong>Syntax</strong>: XML Schema uses an XML-based syntax, but it can be quite verbose and difficult to read for non-experts. TREX, in comparison, uses a more straightforward and readable syntax that emphasizes the pattern rather than the technical details of data types or constraints.</p> </li> <li> <p><strong>Validation Scope</strong>: XML Schema can perform more comprehensive validations, including data type constraints, default values, and the ability to define complex relationships between elements. TREX is limited to validating the structure of an XML document and does not include the ability to validate data types or complex constraints.</p> </li> </ol> <p><strong>TREX in Practice: Use Cases and Applications</strong></p> <p>TREX is a powerful tool for validating XML documents, and its use cases span various industries and applications. Some of the most common applications of TREX include:</p> <ol> <li> <p><strong>Data Exchange</strong>: Many industries rely on XML for data exchange between systems. In such cases, it is essential to ensure that the exchanged documents adhere to a predefined structure. TREX is a useful tool for validating these documents before they are processed.</p> </li> <li> <p><strong>Configuration Files</strong>: TREX can be used to validate configuration files that use XML as their format. By defining a TREX pattern for the configuration file structure, developers can ensure that the file is correctly formatted before it is loaded into the system.</p> </li> <li> <p><strong>Document Management</strong>: In systems where XML is used to represent documents or data entities, TREX can be used to validate the document structure, ensuring that the documents conform to predefined formats before they are stored or processed.</p> </li> <li> <p><strong>Web Services</strong>: Many web services use XML-based messages for communication. TREX can be employed to validate the structure of incoming and outgoing messages, ensuring that they adhere to the correct format for successful communication.</p> </li> </ol> <p><strong>The Future of TREX</strong></p> <p>Despite its advantages, TREX is not as widely adopted as other XML validation technologies such as XML Schema. This may be due to the fact that XML Schema offers a more comprehensive feature set and is supported by a broader range of tools and libraries. However, TREX’s simplicity and readability make it a valuable tool for specific use cases, particularly for developers who prioritize ease of use and maintainability.</p> <p>As XML continues to play a central role in data exchange and document processing, TREX may see increased use, particularly as more organizations seek lightweight, human-readable solutions for XML validation. Additionally, with the rise of alternative data formats like JSON, the role of XML in certain industries may diminish, though XML will likely remain a critical part of the data landscape for the foreseeable future.</p> <p><strong>Conclusion</strong></p> <p>TREX offers a simple, readable, and effective way to validate the structure of XML documents. While it may not have the comprehensive feature set of XML Schema, its emphasis on simplicity and ease of use makes it an appealing choice for many developers. By focusing on the essential aspects of XML structure and content, TREX provides an efficient solution for ensuring that XML documents meet the required standards without unnecessary complexity. As the use of XML continues to evolve, TREX remains a valuable tool in the XML validation toolkit.</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> <!-- free --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3293364314201893" data-ad-slot="2108173765" 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"></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/understanding-trex-for-xml-validation/" 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=Understanding%20TREX%20for%20XML%20Validation&url=https://freesourcelibrary.com/understanding-trex-for-xml-validation/" 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/understanding-trex-for-xml-validation/&title=Understanding%20TREX%20for%20XML%20Validation" 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/understanding-trex-for-xml-validation/&name=Understanding%20TREX%20for%20XML%20Validation" 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/understanding-trex-for-xml-validation/&description=Understanding%20TREX%20for%20XML%20Validation&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/understanding-trex-for-xml-validation/&title=Understanding%20TREX%20for%20XML%20Validation" 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/understanding-trex-for-xml-validation/&redirect_uri=https://freesourcelibrary.com/understanding-trex-for-xml-validation/" 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/understanding-trex-for-xml-validation/&redirect_uri=https://freesourcelibrary.com/understanding-trex-for-xml-validation/" 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=Understanding%20TREX%20for%20XML%20Validation%20https://freesourcelibrary.com/understanding-trex-for-xml-validation/" 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="viber://forward?text=Understanding%20TREX%20for%20XML%20Validation%20https://freesourcelibrary.com/understanding-trex-for-xml-validation/" 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/?Understanding%20TREX%20for%20XML%20Validation%20https://freesourcelibrary.com/understanding-trex-for-xml-validation/" 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> <a href="mailto:?subject=Understanding%20TREX%20for%20XML%20Validation&body=https://freesourcelibrary.com/understanding-trex-for-xml-validation/" rel="external noopener nofollow" title="Share via Email" target="_blank" class="email-share-btn " data-raw="mailto:?subject={post_title}&body={post_link}"> <span class="share-btn-icon tie-icon-envelope"></span> <span class="screen-reader-text">Share via Email</span> </a> <a href="#" rel="external noopener nofollow" title="Print" target="_blank" class="print-share-btn " data-raw="#"> <span class="share-btn-icon tie-icon-print"></span> <span class="screen-reader-text">Print</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":"Article","dateCreated":"2024-12-23T14:16:38+03:00","datePublished":"2024-12-23T14:16:38+03:00","dateModified":"2024-12-23T14:16:38+03:00","headline":"Understanding TREX for XML Validation","name":"Understanding TREX for XML Validation","keywords":[],"url":"https:\/\/freesourcelibrary.com\/understanding-trex-for-xml-validation\/","description":"TREX: A Comprehensive Overview of the XML Validation LanguageIntroductionIn the realm of data processing, XML (eXtensible Markup Language) plays a central role in the exchange of structured informatio","copyrightYear":"2024","articleSection":"Programming languages","articleBody":"TREX: A Comprehensive Overview of the XML Validation LanguageIntroductionIn the realm of data processing, XML (eXtensible Markup Language) plays a central role in the exchange of structured information across various platforms and systems. As data complexity grows, so does the need for rigorous validation mechanisms to ensure that XML documents adhere to a specific structure and content format. One of the prominent tools in the XML validation landscape is TREX, a language designed to specify patterns that XML documents must conform to. This article delves into the intricacies of TREX, exploring its history, functionality, and significance in the broader context of XML validation.What is TREX?TREX, which stands for Tree Regular Expressions for XML, is a language created to define patterns that validate XML documents. These patterns specify both the structural and content-based constraints of XML documents, ensuring they meet the criteria set out by a particular schema or design. Developed by James Clark in 2001, TREX serves as an alternative to other schema languages such as XML Schema (XSD) and Document Type Definition (DTD). Its primary aim is to provide a more straightforward and expressive way to validate the structure of XML documents, addressing some of the limitations found in traditional XML validation technologies.A TREX pattern is itself an XML document. It defines a set of rules that must be followed by the XML content, including elements, attributes, and their interrelations. These patterns allow developers and systems to validate XML documents effectively, confirming that they adhere to the intended structure without ambiguity or error.The Core Concept of TREX PatternsAt its core, TREX works by defining a pattern that must be followed by the XML document being validated. This pattern dictates the arrangement of elements and attributes within the XML, including constraints on their content. The concept behind TREX is relatively simple: an XML document is considered valid if it matches the predefined TREX pattern. The validation process is akin to matching a document against a set of regular expressions, but instead of text matching, TREX focuses on the structure and content of XML data.A typical TREX pattern might specify that a certain XML element must contain a specific set of child elements or attributes, or it might impose constraints on the data types or formats used within the document. These patterns can be as simple or as complex as needed, depending on the validation requirements of the XML document in question.TREX and XML Document ValidationXML validation is a process that ensures an XML document conforms to a predefined set of rules and structure. Validation is a critical step in many workflows, as it ensures that XML data is not only syntactically correct but also conforms to the expected business rules and constraints. TREX achieves this by providing a means to specify the structure of an XML document using patterns that can be validated against the document's content.In comparison to other validation methods such as DTD and XML Schema, TREX offers a more concise and expressive syntax for specifying document structures. Where DTD might require complex declarations and XML Schema involves verbose XML definitions, TREX patterns are often simpler and more readable, making them a preferred choice for many developers working with XML data.Advantages of TREXSimplicity and Readability: One of the most notable advantages of TREX is its simplicity. The patterns are easy to understand, even for developers who may not be familiar with complex schema languages like XML Schema. The syntax used in TREX is designed to be concise and intuitive, which makes the process of designing and validating XML structures more accessible.Flexibility: TREX allows for the validation of XML documents with great flexibility. Patterns can define a wide range of constraints, from basic element-ordering rules to more intricate content-based validations. This makes it suitable for a variety of use cases, from simple configurations to highly complex XML structures.Integration with Other XML Technologies: As an XML-based language, TREX seamlessly integrates with other XML technologies. This ensures compatibility with existing XML parsers, document-handling systems, and tools. Developers can use TREX alongside other XML tools to create robust validation solutions without worrying about compatibility issues.Human-Readable and Maintainable: Unlike some other validation languages, TREX patterns are designed to be human-readable. This is especially beneficial for teams working collaboratively on XML-based projects, as it simplifies communication and reduces the likelihood of errors. Furthermore, because of its simplicity, maintaining and updating TREX patterns is straightforward.TREX Syntax and StructureThe syntax of a TREX pattern is designed to be declarative, where the pattern explicitly describes the allowed structure of XML elements. Here\u2019s a basic example of how a TREX pattern might look:xmlCopy code\n \n \n \n \n \n \n\nIn this example, the pattern specifies that an XML document must contain a element with exactly two child elements: and . This is a simple example, but TREX patterns can be far more complex, supporting advanced constraints such as data types, occurrence patterns, and content models.TREX vs. XML Schema (XSD)While both TREX and XML Schema serve the same purpose \u2014 to validate XML documents \u2014 there are some key differences between the two:Expressiveness: XML Schema (XSD) is more powerful and expressive than TREX, offering a wide range of data types, constraints, and features such as default values, extensions, and inheritance. However, this comes at the cost of complexity. TREX, by contrast, focuses on simplicity and readability, providing just enough expressiveness to meet the needs of many use cases.Complexity: XML Schema is considerably more complex than TREX, requiring developers to understand intricate data types and relationships between elements. TREX, on the other hand, is much simpler, focusing primarily on the structural validation of XML documents without delving too deeply into data types or other advanced concepts.Syntax: XML Schema uses an XML-based syntax, but it can be quite verbose and difficult to read for non-experts. TREX, in comparison, uses a more straightforward and readable syntax that emphasizes the pattern rather than the technical details of data types or constraints.Validation Scope: XML Schema can perform more comprehensive validations, including data type constraints, default values, and the ability to define complex relationships between elements. TREX is limited to validating the structure of an XML document and does not include the ability to validate data types or complex constraints.TREX in Practice: Use Cases and ApplicationsTREX is a powerful tool for validating XML documents, and its use cases span various industries and applications. Some of the most common applications of TREX include:Data Exchange: Many industries rely on XML for data exchange between systems. In such cases, it is essential to ensure that the exchanged documents adhere to a predefined structure. TREX is a useful tool for validating these documents before they are processed.Configuration Files: TREX can be used to validate configuration files that use XML as their format. By defining a TREX pattern for the configuration file structure, developers can ensure that the file is correctly formatted before it is loaded into the system.Document Management: In systems where XML is used to represent documents or data entities, TREX can be used to validate the document structure, ensuring that the documents conform to predefined formats before they are stored or processed.Web Services: Many web services use XML-based messages for communication. TREX can be employed to validate the structure of incoming and outgoing messages, ensuring that they adhere to the correct format for successful communication.The Future of TREXDespite its advantages, TREX is not as widely adopted as other XML validation technologies such as XML Schema. This may be due to the fact that XML Schema offers a more comprehensive feature set and is supported by a broader range of tools and libraries. However, TREX\u2019s simplicity and readability make it a valuable tool for specific use cases, particularly for developers who prioritize ease of use and maintainability.As XML continues to play a central role in data exchange and document processing, TREX may see increased use, particularly as more organizations seek lightweight, human-readable solutions for XML validation. Additionally, with the rise of alternative data formats like JSON, the role of XML in certain industries may diminish, though XML will likely remain a critical part of the data landscape for the foreseeable future.ConclusionTREX offers a simple, readable, and effective way to validate the structure of XML documents. While it may not have the comprehensive feature set of XML Schema, its emphasis on simplicity and ease of use makes it an appealing choice for many developers. By focusing on the essential aspects of XML structure and content, TREX provides an efficient solution for ensuring that XML documents meet the required standards without unnecessary complexity. As the use of XML continues to evolve, TREX remains a valuable tool in the XML validation toolkit.","publisher":{"@id":"#Publisher","@type":"Organization","name":"Free Source Library","logo":{"@type":"ImageObject","url":"https:\/\/freesourcelibrary.com\/wp-content\/uploads\/2023\/10\/free-source-library-high-resolution-logo-white-on-transparent-background.png"},"sameAs":["https:\/\/web.facebook.com\/freesourcelibrary\/"]},"sourceOrganization":{"@id":"#Publisher"},"copyrightHolder":{"@id":"#Publisher"},"mainEntityOfPage":{"@type":"WebPage","@id":"https:\/\/freesourcelibrary.com\/understanding-trex-for-xml-validation\/","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> <div id="share-buttons-bottom" class="share-buttons share-buttons-bottom"> <div class="share-links share-centered icons-only share-rounded"> <a href="https://www.facebook.com/sharer.php?u=https://freesourcelibrary.com/understanding-trex-for-xml-validation/" 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=Understanding%20TREX%20for%20XML%20Validation&url=https://freesourcelibrary.com/understanding-trex-for-xml-validation/" 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/understanding-trex-for-xml-validation/&title=Understanding%20TREX%20for%20XML%20Validation" 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/understanding-trex-for-xml-validation/&name=Understanding%20TREX%20for%20XML%20Validation" 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/understanding-trex-for-xml-validation/&description=Understanding%20TREX%20for%20XML%20Validation&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/understanding-trex-for-xml-validation/&title=Understanding%20TREX%20for%20XML%20Validation" 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="mailto:?subject=Understanding%20TREX%20for%20XML%20Validation&body=https://freesourcelibrary.com/understanding-trex-for-xml-validation/" rel="external noopener nofollow" title="Share via Email" target="_blank" class="email-share-btn " data-raw="mailto:?subject={post_title}&body={post_link}"> <span class="share-btn-icon tie-icon-envelope"></span> <span class="screen-reader-text">Share via Email</span> </a> <a href="#" rel="external noopener nofollow" title="Print" target="_blank" class="print-share-btn " data-raw="#"> <span class="share-btn-icon tie-icon-print"></span> <span class="screen-reader-text">Print</span> </a> </div><!-- .share-links /--> </div><!-- .share-buttons /--> </article><!-- #the-post /--> <div class="stream-item stream-item-below-post"><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> <!-- free --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3293364314201893" data-ad-slot="2108173765" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </div></div> <div class="post-components"> <div class="stream-item stream-item-below-post-comments"><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> <!-- free --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3293364314201893" data-ad-slot="2108173765" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </div></div> </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> <!-- free --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3293364314201893" data-ad-slot="2108173765" 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="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> © Copyright 2024, All Rights Reserved  |  <span style="color:red;" class="tie-icon-heart"></span>  |  <a href="https://freesourcelibrary.com/about-us/">About Us</a>  |  <a href="https://freesourcelibrary.com/terms-and-conditions/">Terms and Conditions</a> </footer> </div><div class="copyright-text copyright-text-second"><footer> <strong>🌐 Explore Our Websites:</strong>  |  <a href="https://mwade3.com/" target="_blank">πŸ“– Ω…ΩˆΨ§ΨΆΩŠΨΉ (AR)</a>  |  <a href="https://revistacompleta.com/" target="_blank">πŸ“š La Revista Completa (ES)</a>  |  <a href="https://lasujets.com/" target="_blank">πŸ“° Lasujets (FR)</a>  |  <a href="https://meukultura.com/" target="_blank">🎨 MEU Kultura (PT)</a>  |  <a href="https://freesourcelibrary.com/" target="_blank">πŸ“‚ Free Source Library (EN)</a>  |  <a href="https://lovewithrecipes.com/" target="_blank">🍴 Love with Recipes (EN)</a>  |  <a href="https://it-solutions.center/" target="_blank">πŸ’» IT Solutions Center (AR)</a> </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://web.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/understanding-trex-for-xml-validation/" 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=Understanding%20TREX%20for%20XML%20Validation&url=https://freesourcelibrary.com/understanding-trex-for-xml-validation/" 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/understanding-trex-for-xml-validation/&title=Understanding%20TREX%20for%20XML%20Validation" 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/understanding-trex-for-xml-validation/&name=Understanding%20TREX%20for%20XML%20Validation" 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/understanding-trex-for-xml-validation/&description=Understanding%20TREX%20for%20XML%20Validation&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/understanding-trex-for-xml-validation/&title=Understanding%20TREX%20for%20XML%20Validation" 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/understanding-trex-for-xml-validation/&redirect_uri=https://freesourcelibrary.com/understanding-trex-for-xml-validation/" 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/understanding-trex-for-xml-validation/&redirect_uri=https://freesourcelibrary.com/understanding-trex-for-xml-validation/" 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=Understanding%20TREX%20for%20XML%20Validation%20https://freesourcelibrary.com/understanding-trex-for-xml-validation/" 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="viber://forward?text=Understanding%20TREX%20for%20XML%20Validation%20https://freesourcelibrary.com/understanding-trex-for-xml-validation/" 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/?Understanding%20TREX%20for%20XML%20Validation%20https://freesourcelibrary.com/understanding-trex-for-xml-validation/" 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 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-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 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://web.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><!-- #mobile-container /--> </div><!-- .side-aside-wrapper /--> </aside><!-- .side-aside /--> </div><!-- #tie-container /--> </div><!-- .background-overlay /--> <style> .copy-tooltip { position: absolute; background-color: blue; color: #fff; padding: 12px 18px; border-radius: 8px; font-size: 14px; font-family: Arial, sans-serif; box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3); display: none; z-index: 9999; transition: opacity 0.3s ease, transform 0.3s ease; transform: translateY(-10px); } .copy-tooltip.show { opacity: 1; transform: translateY(0); } </style> <div class="copy-tooltip" id="copyTooltip"></div> <script type="text/javascript"> document.addEventListener('DOMContentLoaded', function () { var tooltip = document.getElementById('copyTooltip'); function showTooltip(e, message) { tooltip.innerHTML = message; tooltip.style.left = e.pageX + 20 + 'px'; tooltip.style.top = e.pageY + 20 + 'px'; tooltip.classList.add('show'); tooltip.style.display = 'block'; setTimeout(function() { tooltip.classList.remove('show'); setTimeout(function() { tooltip.style.display = 'none'; }, 300); }, 3000); // Tooltip will disappear after 3 seconds } document.addEventListener('copy', function (e) { e.preventDefault(); var pageUrl = window.location.href; e.clipboardData.setData('text/plain', pageUrl); showTooltip(e, 'Copying content is not allowed. Use sharing buttons instead.'); }); document.addEventListener('keydown', function (e) { if (e.ctrlKey && (e.key === 'c' || e.key === 'C')) { e.preventDefault(); var pageUrl = window.location.href; navigator.clipboard.writeText(pageUrl); showTooltip(e, 'Copying content is not allowed. Use sharing buttons instead.'); } }); document.addEventListener('contextmenu', function (e) { e.preventDefault(); showTooltip(e, 'Right-click is disabled.'); }); }); </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="1" 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" 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" 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="1" data-cky-tag="detail-title" style="color:#d0d0d0">Customize Consent Preferences</span> <button class="cky-btn-close" aria-label="[cky_preference_close_label]" data-cky-tag="detail-close"> <img src="https://freesourcelibrary.com/wp-content/plugins/cookie-law-info/lite/frontend/images/close.svg" alt="Close"> </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><!-- Matomo --> <script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="//all2.atico-jo.com/"; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '11']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); })(); </script> <!-- End Matomo Code --> <div id="autocomplete-suggestions" class="autocomplete-suggestions"></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 is-ajax-search" 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 type="text/javascript" src="https://freesourcelibrary.com/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-consent-mode-3d6495dceaebc28bcca3.js" id="googlesitekit-consent-mode-js"></script> <script type="text/javascript" id="tie-scripts-js-extra"> /* <![CDATA[ */ 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":"","lazyload":"","select_share":"true","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":"<div class=\"loader-overlay\"><div class=\"spinner-circle\"><\/div><\/div>","type_to_search":"1","lang_no_results":"Nothing Found","sticky_share_mobile":"true","sticky_share_post":"","sticky_share_post_menu":""}; /* ]]> */ </script> <script type="text/javascript" src="https://freesourcelibrary.com/wp-content/themes/jannah/assets/js/scripts.min.js?ver=7.0.2" id="tie-scripts-js"></script> <script type="text/javascript" id="tie-scripts-js-after"> /* <![CDATA[ */ jQuery.ajax({ type : "GET", url : "https://freesourcelibrary.com/wp-admin/admin-ajax.php", data : "postviews_id=220124&action=tie_postviews", cache: !1, success: function( data ){ jQuery(".single-post-meta").find(".meta-views").html( data ); } }); /* ]]> */ </script> <script type="text/javascript" src="https://freesourcelibrary.com/wp-content/themes/jannah/assets/ilightbox/lightbox.js?ver=7.0.2" id="tie-js-ilightbox-js"></script> <script type="text/javascript" src="https://freesourcelibrary.com/wp-content/themes/jannah/assets/js/sliders.min.js?ver=7.0.2" id="tie-js-sliders-js"></script> <script type="text/javascript" src="https://freesourcelibrary.com/wp-content/themes/jannah/assets/js/shortcodes.js?ver=7.0.2" id="tie-js-shortcodes-js"></script> <script type="text/javascript" src="https://freesourcelibrary.com/wp-content/themes/jannah/assets/js/desktop.min.js?ver=7.0.2" id="tie-js-desktop-js"></script> <script type="text/javascript" src="https://freesourcelibrary.com/wp-content/themes/jannah/assets/js/live-search.js?ver=7.0.2" id="tie-js-livesearch-js"></script> <script type="text/javascript" src="https://freesourcelibrary.com/wp-content/themes/jannah/assets/js/single.min.js?ver=7.0.2" id="tie-js-single-js"></script> <script type="text/javascript" id="wp-consent-api-js-extra"> /* <![CDATA[ */ var consent_api = {"consent_type":"","waitfor_consent_hook":"","cookie_expiration":"30","cookie_prefix":"wp_consent"}; /* ]]> */ </script> <script type="text/javascript" src="https://freesourcelibrary.com/wp-content/plugins/wp-consent-api/assets/js/wp-consent-api.min.js?ver=1.0.8" id="wp-consent-api-js"></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><!-- WP Fastest Cache file was created in 0.24483203887939 seconds, on 23-12-24 14:17:09 --><!-- via php --><script src="/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js" data-cf-settings="bf06702c2c2f2f4b0403567d-|49" defer></script>