# XSDHub: XML and XSD validation tools Source: https://xsdhub.com/ Free local XML syntax checks, XML against XSD validation and XML formatting. Founder: Daniel Haket. Support: support@xsdhub.com. Limits: UTF-8, 10 MB XML and 1 MB per schema, XSD 1.0 with local imports/includes, up to 100 schemas and 10 MB per project. Optional server validation supports XSD 1.1 and Schematron XPath 1.0 with consent. Projects can be saved on the device with five revisions, exported, or saved to Pro/Team cloud storage with up to 50 revisions. No DTDs or implicit network fetching. Public HTTPS schemas can be imported separately, and Pro/Team projects can be saved in the cloud with version history. Browser tools: [xml-validator](https://xsdhub.com/xml-validator), [xsd-validator](https://xsdhub.com/xsd-validator), [xml-formatter](https://xsdhub.com/xml-formatter). Schema conformance does not verify business rules that the supplied schema does not express. --- # Validate XML online. Keep your data local. Source: https://xsdhub.com/xml-validator Validate XML syntax in your browser, find malformed tags and read errors with line numbers. Free, no document uploads. UTF-8 XML files up to 10 MB. ## What does an XML validator check? An XML syntax check determines whether the document is well-formed: tags must be properly nested, attribute values must be quoted, and the document needs a single root element. A document can pass these checks while still containing the wrong fields for your application. To check allowed elements, sequence and data types, use the XSD validator with the schema supplied by your integration partner. ## How to validate an XML file Open a UTF-8 XML file or paste its contents into the editor. Select XML syntax only, then choose Validate XML. Review each diagnostic and its line number when available. Fix the underlying problem and check the document again; one missing closing tag can cause later error messages too. You can export a JSON report after a validation run. ## A common XML syntax error For example, Notebook is malformed because item has no closing tag. The corrected document is Notebook. A literal ampersand in text must be escaped as &. A syntax check does not decide whether a price is correct or an invoice meets a business specification. ## Privacy and supported input The parser runs locally using libxml2 compiled to WebAssembly. Documents are not sent to a validation server. Each input is limited to 1 MB. This beta rejects DTD and entity declarations. If you deliberately save an XSD to a paid schema library, that schema is stored in the account; that optional action is separate from local XML validation. --- # Validate XML against XSD. Find the mismatch. Source: https://xsdhub.com/xsd-validator Check XML against an XSD 1.0 schema online. Find missing fields, wrong element order and invalid data types, privately in your browser. Free to use. ## What XSD validation adds XML Schema Definition, or XSD, describes the structure a class of XML documents is expected to follow. A schema can require an attribute, restrict an element to a number, define the order of children and limit how many times an item appears. Well-formed XML can still fail its schema: two is valid XML syntax but fails when quantity is defined as xs:positiveInteger. ## How to validate XML against a schema Open or paste your XML in the left editor and your XSD in the right editor. Keep XML + XSD selected, then run Validate XML. Use the exact schema version required by the system receiving the document. Start with the included order example; the invalid example deliberately puts text in numeric fields so you can see the resulting diagnostics. ## Namespaces and order matter An element called order in a namespace is different from an order element with no namespace. Compare the XML namespace with the schema targetNamespace before renaming elements. For xs:sequence, child elements must also appear in the declared order. Missing child element errors can therefore point to either an absent field or an unexpected field appearing too early. ## What this beta supports XSDHub uses the libxml2 validation engine and supports XSD 1.0 schemas, including local imports and includes. Load XSD files, a folder or a ZIP and choose the main schema. Projects support up to 100 schemas and 10 MB total. Optional server modes support XSD 1.1 and ISO Schematron with XPath 1.0 after upload consent. DTDs and implicit remote fetching are blocked. Public HTTPS schemas can be imported explicitly as a snapshot. A passing result confirms conformance to the supplied schema; it does not certify compliance with external business, tax or industry rules. Inputs must be UTF-8: XML allows 10 MB and each schema allows 1 MB. --- # Format your XML. See the structure. Source: https://xsdhub.com/xml-formatter Format and pretty print XML in your browser. Make nested elements easier to read, preserve mixed content and copy the result. No XML uploads required. ## What pretty printing does XML formatting adds indentation and line breaks where the serializer can do so. That makes nested elements easier to inspect while debugging a feed or integration. The formatter parses the document first, so malformed XML must be corrected before it can be formatted. Formatting alone does not check the document against an XSD. ## How to format an XML document Paste XML or open a UTF-8 file, then choose Format XML. The result replaces the document in the editor. Use Copy to put it on your clipboard. To inspect schema requirements too, open the XSD validator and run a separate validation with the relevant schema. ## Whitespace and mixed content Whitespace can be meaningful in XML, especially when text and elements are mixed, such as

Hello world!

. This formatter uses libxml2 serialization and avoids forcibly stripping all whitespace or inserting breaks inside mixed text. Always review serialized output before replacing a signed, hashed or whitespace-sensitive document. Pretty printing is not XML canonicalization. ## Local processing and limits Formatting runs in a disposable browser worker. No XML is uploaded. Files are limited to 1 MB and UTF-8 encoding; DTD and entity declarations are rejected. If a document exceeds the processing time limit, simplify the input or use a tool designed for large files. The browser does not save your document after you close the page. --- # XML vs XSD: what each check tells you Source: https://xsdhub.com/learn/xml-vs-xsd Understand the difference between XML syntax and XSD validation, with a working quantity example, namespace guidance and a practical debugging sequence. ## XML carries the data XML is a text-based format for representing structured information. Elements, attributes and namespaces give a document its shape. For example, two is well-formed XML: the start and end tags match and the text is allowed. At this level, XML does not know whether the receiving application expects a number. ## XSD describes permitted structure An XSD is a separate schema written in XML. It can declare quantity as xs:positiveInteger, require an order identifier, and specify the sequence of customer and item fields. Against that schema, quantity containing two is invalid; quantity containing 2 can pass. The schema determines the rule, not the field name alone. ## Check syntax before schema conformance First make the XML well-formed. Then compile and apply the exact XSD version expected by the receiving system. Finally check application rules that go beyond the schema, such as whether a calculated invoice total matches its line items. Passing one layer does not imply the next layer passes. ## Namespaces identify vocabulary A namespace URI is part of an element name. An order in urn:example:orders is not the same element as an order without that namespace. Prefixes such as xs and xsd are labels bound to namespace URIs; choosing a different prefix does not itself change the underlying name. When debugging, compare the namespace bindings and targetNamespace as well as the visible tag text. ## Choose the smallest check that answers the question Use an XML validator for broken tags and quoting problems, an XSD validator for structure and typed values, and a formatter to inspect a dense document. For multi-file XSD 1.0 schemas, load the complete folder or ZIP into the project loader. Choose the optional server engine for XSD 1.1 assertions or ISO Schematron XPath 1.0 rules; this uploads the inputs with your permission. ## Primary references - [W3C XML 1.0 specification](https://www.w3.org/TR/xml/) - [W3C XML Schema primer](https://www.w3.org/TR/xmlschema-0/) --- # Fix XML validation errors at the right layer Source: https://xsdhub.com/learn/fix-xml-validation-errors Debug malformed XML, missing child elements, invalid numeric values and namespace mismatches. Practical examples explain what to inspect before changing data. ## Start with the first syntax error A missing closing tag can make several later lines look wrong. For Notebook, close item before order. Read the earliest parser diagnostic first, inspect the surrounding opening and closing tags, and validate again after each correction. Line numbers identify where the parser noticed a problem; the cause can be on an earlier line. ## Expected a number, found text When a schema declares an element as xs:decimal or xs:positiveInteger, words and formatted currency labels are not accepted as those numeric types. For a decimal field, 24.50 can be valid while EUR 24.50 is not. Do not silently replace an unknown value with zero: obtain the intended value from the source system. ## Missing child element or unexpected element An xs:sequence defines child order as well as which children can occur. If the schema expects customer followed by items, placing items first can trigger an error even when customer exists later. Compare the document with the relevant complexType. Check minOccurs and maxOccurs before adding or removing repeated elements. ## No matching global declaration A root element may have the right local name but the wrong namespace. Compare its namespace URI to targetNamespace in the XSD. Also confirm that you selected the right schema version. Copying a namespace prefix from an example is not enough if it is bound to a different URI. ## A schema that cannot be compiled Distinguish an invalid document from an invalid or unsupported schema. Check that the schema itself is well-formed XML and declares the XML Schema namespace. If it relies on includes or imports, load every referenced schema in the project loader and select the main schema. Preserve relative folder paths. Missing dependencies are errors; do not delete schema references to weaken validation. ## Retest the complete document After fixing the source of an error, validate the complete document again and keep the result with the schema version used. A successful XSD check does not verify arithmetic totals, business identifiers or external regulatory rules unless the supplied schema actually expresses them. ## Primary references - [W3C XML Schema primer](https://www.w3.org/TR/xmlschema-0/) - [libxml2-wasm validation engine](https://github.com/jameslan/libxml2-wasm) --- # How to validate XML against XSD, step by step Source: https://xsdhub.com/learn/validate-xml-against-xsd Use a complete XML and XSD example to check required attributes, numbers and element order. Learn how to read a failed result and retest the fix. ## Start with the schema your receiver expects An XSD check answers a specific question: does this document follow this schema? Before editing data, confirm the schema version with the receiving application. A similar-looking sample schema can accept the wrong document or reject a correct one. For this walkthrough, the order contains a positive quantity, a decimal price and a required id attribute. ## 1. Copy this complete XSD Open the XSD validator and paste this schema in the XSD editor. It is self-contained and uses XSD 1.0, so it does not need a network download or another schema file. ```xml ``` ## 2. Add a matching XML document Paste this document in the XML editor. Keep XML + XSD selected and choose Validate XML. The example passes because the child elements appear in the declared order, the values match their types and the id attribute is present. ```xml 3 12.50 ``` ## 3. Make one deliberate error Replace the quantity value 3 with three and validate again. The document remains well-formed XML, but it fails the positiveInteger requirement. Correct the value in the source system rather than just hiding the diagnostic. Try removing id next: that is a separate schema error. ## 4. Read the first useful diagnostic A line number points to where a problem was detected. Inspect the surrounding element and its declaration. If syntax parsing fails, repair the XML before interpreting schema errors. When a field is unexpected, check order, namespace and spelling before deleting it. Export the JSON validation report if you need to share the result with a colleague. ## 5. Know what a passing result leaves open This schema does not calculate totals, check that an order exists, or verify that a price is commercially correct. A successful result only covers rules expressed in the supplied XSD. XSDHub supports UTF-8 XML inputs up to 10 MB and schemas up to 1 MB each and XSD 1.0 schemas with local imports/includes through the project loader; XSD 1.1 is available through the optional server engine with explicit upload consent. ## Primary references - [W3C XML Schema primer](https://www.w3.org/TR/xmlschema-0/) --- # Fix XML namespace mismatches without guessing Source: https://xsdhub.com/learn/xml-namespaces-explained Understand xmlns, prefixes, targetNamespace and elementFormDefault with a complete XML/XSD pair and a practical namespace debugging checklist. ## Compare the full name, not just the tag If a validator cannot find a declaration for stock, changing its spelling may not help. An XML element is identified by its namespace URI together with its local name. First compare those two pieces with the root declaration in the schema. Prefixes are shorthand; two prefixes bound to the same URI can refer to the same element. ## A matching document Here the default namespace applies to stock and its unprefixed child sku. The unprefixed warehouse attribute has no namespace. That difference is deliberate: a default element namespace does not automatically qualify unprefixed attributes. ```xml BK-204 ``` ## The matching schema targetNamespace supplies the vocabulary URI. elementFormDefault="qualified" requires locally declared elements such as sku to use that namespace too. The warehouse attribute remains unqualified under the default attribute rules. Copy both examples into the validator to check the complete pair. ```xml ``` ## A prefix is optional, the URI is not The document could instead use s:stock and s:sku with xmlns:s="urn:example:stock". Both elements would have the same expanded names as before. Renaming only the prefix will not repair a wrong URI. Treat namespace names as exact identifiers: a trailing slash or a change in letter case can produce a different name. A namespace URI does not have to be a downloadable schema. ## When only the child element fails Check elementFormDefault and any local form override. A schema with unqualified local elements may expect a qualified root but children without a namespace. In a document that uses a default namespace, xmlns="" can reset it for a subtree. Do not add that reset everywhere: use it only when the schema requires unqualified elements. ## A focused debugging sequence Check the root namespace, the schema targetNamespace, local element qualification and attribute qualification in that order. Then confirm the schema version. Keep namespace declarations when formatting or copying fragments: moving a fragment outside its original scope can change its meaning or leave a prefix unbound. ## Primary references - [W3C Namespaces in XML](https://www.w3.org/TR/xml-names/) - [W3C XML Schema primer](https://www.w3.org/TR/xmlschema-0/) --- # Escape XML characters without double-encoding data Source: https://xsdhub.com/learn/xml-escape-characters Fix unescaped ampersands and less-than signs, choose attribute quotes correctly, and understand when CDATA helps. Includes valid and invalid XML examples. ## Why a normal sentence can break XML A customer name such as Pine & Paper contains an ampersand that the XML parser treats as the start of a reference. In element text, write Pine & Paper. Likewise, use < for a literal less-than sign. The parser returns the original characters to the application; escaped markup is a representation of the text, not a change to the customer name. ## Element text and attributes In text content, a quote normally needs no special treatment. Inside an attribute, escape whichever quote character delimits the value, or choose the other delimiter. This example represents a company name containing an ampersand and a message containing double quotes. ```xml Say "hello" when 2 < 3. ``` ## The five predefined references Use & for &, < for <, > for >, " for a double quote and ' for an apostrophe when the context calls for them. A plain > is usually allowed in text, but the sequence ]]> cannot appear there as ordinary character data. Numeric references such as & represent characters too. HTML-only names such as   are not automatically available in XML; use a literal non-breaking space or   instead. ## When CDATA is useful CDATA can make a block of text containing markup-like characters easier to read. It belongs in element content, not inside an attribute. References inside CDATA are literal text rather than decoded entities, and the closing sequence ]]> cannot occur inside a single CDATA block. CDATA blocks cannot nest. ```xml ``` ## Avoid escaping twice If your source value is already the character &, pass that value to an XML serializer and let it escape once. Manually converting it to & before serialization can produce &amp;. After parsing, that double-escaped document contains the visible text & instead of the intended ampersand. Decide whether an input is raw data or serialized XML before applying replacements. ## Validate the serialized result Paste the complete output into the XML syntax validator. Fix the earliest reference or quoting error, then check again. Formatting makes the structure easier to read but does not recover the intended data from a broken escape. XSDHub does not allow custom entity declarations or DTDs, so use predefined references, numeric references or normal Unicode text. ## Primary references - [W3C XML syntax and character references](https://www.w3.org/TR/xml/) --- # Use minOccurs and maxOccurs to control repetition Source: https://xsdhub.com/learn/xsd-minoccurs-maxoccurs See how XSD occurrence limits affect missing, optional and repeated elements. Test a complete basket schema and learn why an empty element is not an absent one. ## Count occurrences of the declaration minOccurs and maxOccurs control how often an element or model group can occur in its enclosing content model. When omitted, both default to 1. Setting minOccurs="0" permits absence; it does not make every possible value valid. maxOccurs="unbounded" removes the fixed upper count for that declaration, while other schema constraints still apply. ## A complete basket schema The note is optional and occurs at most once. Between one and three sku children must follow it. Each sku uses xs:string, so the schema demonstrates counts and order rather than enforcing a catalogue code format. ```xml ``` ## A basket that passes This basket has no note and two sku elements. It meets both limits. To test the boundaries, try a single sku, then three, then four. The fourth should fail. Removing all sku elements also fails because the minimum is one. ```xml BK-204 PN-018 ``` ## Optional does not mean empty Omitting an element is different from including an empty one. An absent optional xs:integer element can be allowed while an empty fails because it has no integer value. An empty xs:string can be allowed unless another restriction forbids it. xsi:nil is a third case and requires a nillable declaration; it is not a general replacement for missing data. ## Repetition still respects sequence The optional note in this example belongs before the sku children. Putting it at the end fails the sequence even if the element counts look correct. For nested groups, consider both the group occurrence and the declarations inside it; an element maximum is not always a global count across the whole document. ## Choose constraints from the data contract Do not set every field to optional just to obtain a green result. Work out which fields the consumer needs, how it treats an empty list and whether a practical upper limit is required. Update the schema and producer together, then test zero, one, maximum and above-maximum cases using the same XSD version. ## Primary references - [W3C XML Schema primer](https://www.w3.org/TR/xmlschema-0/) --- # Read XSD data-type errors with concrete examples Source: https://xsdhub.com/learn/xsd-data-types Check valid lexical forms for common XSD types with a complete schema. Fix decimal commas, boolean labels and date formats without changing the intended value. ## A field name does not define a type A value called amount is text until a schema assigns it a type. XSD checks the written representation and any restrictions on the value. A numeric-looking identifier may still belong in xs:string if leading zeros matter. Start with the actual declaration instead of inferring the rule from the element name. ## A small typed schema This schema requires four values in a fixed order. It uses built-in XSD 1.0 types without additional restrictions. Real schemas may narrow them further with ranges, lengths, enumerations or patterns. ```xml ``` ## Values that match The integer is a whole number, the decimal uses a dot, the boolean uses true and the date uses year-month-day. For ordinary modern dates this is a useful starting example. XSD date types also have rules for timezones and years that a simple visual pattern does not fully describe. ```xml 8 10.25 true 2026-10-25 ``` ## Decimal and integer mistakes 10,25 and EUR 10.25 are not xs:decimal values. A decimal exponent such as 1e2 is not accepted as xs:decimal either; floating-point types have different lexical rules. xs:integer does not accept 8.0. Convert a localized input only when you know its intended numeric value. Do not strip punctuation blindly from mixed international data. ## Boolean and date mistakes For xs:boolean, true, false, 1 and 0 are accepted forms; yes and no are not. For xs:date, 25/10/2026 is not the year-month-day representation. A correctly shaped but impossible date such as 2026-02-30 also fails. xs:dateTime is a separate type and includes a T between date and time. ## Check restrictions after the base type A positiveInteger must be greater than zero, so 0 fails even though it is an integer. A custom decimal restriction might allow a base decimal value but reject its scale or range. Read the simpleType and its facets, then retest one field at a time. Schema success does not establish that a number is the right price or that a date matches an external event. ## Primary references - [W3C XML Schema datatypes](https://www.w3.org/TR/xmlschema-2/) --- # Choose between xs:sequence and xs:choice Source: https://xsdhub.com/learn/xsd-sequence-vs-choice Learn why XML child order can fail validation and how xs:choice expresses alternatives. Includes a complete contact schema and examples of both failure modes. ## Start with the shape the receiver needs Use sequence when children must follow a declared order. Use choice when the next content must match one of the declared alternatives. Neither automatically means optional or repeatable: occurrence limits belong to the group or declaration that carries them. Pick the structure that expresses the actual data contract. ## A sequence containing a choice A contact must contain name first, then either email or phone. The choice has the default occurrence range of exactly once. Because the two options have different element names, the alternatives are straightforward for the validator to distinguish. ```xml ``` ## A contact that passes This document chooses email after name. Replacing email with a single phone element also passes. Moving email before name fails the outer sequence. Adding phone after email fails because the choice is already satisfied and does not repeat. ```xml Sam sam@example.com ``` ## The group changes the meaning of repetition If the choice had maxOccurs="unbounded", multiple alternatives could occur and the same alternative could appear again. That is different from saying exactly one email and exactly one phone in any order. Write sample documents for each allowed shape before choosing group limits; the schema should describe those shapes without accidentally allowing extra combinations. ## When order should not matter XSD 1.0 also has xs:all for restricted unordered content models. Its child element occurrence limits are much narrower than an arbitrary repeated sequence or choice. Do not replace a sequence with all without checking those constraints. Likewise, two alternatives that can match the same incoming element can make a schema ambiguous; schema compilation errors are separate from document validation failures. ## Debug the model rather than shuffling at random Find the parent complexType and read the content model from left to right. Mark which required items have already appeared, which optional ones were skipped and whether a choice has already been used. After changing the producer, validate the entire document again. The examples here use self-contained XSD 1.0, which the XSDHub workbench supports. ## Primary references - [W3C XML Schema primer](https://www.w3.org/TR/xmlschema-0/) --- # Fix an XML opening and ending tag mismatch Source: https://xsdhub.com/learn/xml-tag-mismatch Find mismatched XML tags with a tested broken example, corrected XML and an in-browser validator. Check nesting, spelling and case. ## The quick fix Match each closing tag to the most recent opening tag that has not yet been closed. In our example, itemz must be item. XML names are case-sensitive: Item and item are different names. Fix the source XML rather than changing the schema. ## Read the first mismatch XSDHub reports the opening name and the unexpected closing name. Inspect both lines and the enclosing element. A missing close tag earlier in the document can cause a mismatch later, so the reported line is a starting point rather than proof that only that line is wrong. ## Check nesting as well as spelling Closing names may all exist and still be in the wrong order. is malformed; close b before a. An empty element can use or the pair . Do not remove content simply to make a parser accept the file. ## Prevent the error at its source Generate XML with an XML serializer rather than assembling strings. If this came from an export, repair the template or generator and regenerate the document. Check a small failing sample before processing a batch. ## What a successful check means A syntax pass confirms well-formed XML. It does not verify element order, required fields or data types against an XSD. After repairing syntax, run schema validation if your receiver provides a schema. ## Primary references - [W3C XML: start-tags, end-tags and empty-element tags](https://www.w3.org/TR/xml/#sec-starttags) --- # Fix “This element is not expected” in XSD validation Source: https://xsdhub.com/learn/xsd-element-not-expected Debug unexpected XML elements by checking sequence, namespace, spelling and occurrence rules. Try a complete failing and corrected XML/XSD pair. ## Start with the expected element The example places price before quantity, while xs:sequence requires quantity first. Reorder the XML to follow the agreed schema. The message names price because that is where the document stops matching the content model. ## Use the complete schema below The schema is deliberately small: an order has one positive quantity followed by one decimal price. The same principle applies to larger schemas, but use the actual schema supplied by your receiver before changing production data. ## When changing the order does not fix it Compare namespace URI and local element name, including case. Then inspect the parent declaration: an element might be permitted elsewhere but not here. Check whether an earlier required element is missing, a choice branch has already been used, or maxOccurs has been exceeded. ## Avoid weakening the schema to hide the error Changing xs:sequence to an unrestricted model or adding xs:any may accept documents the receiver cannot use. Fix the document or agree a schema change with the system owner. Do not delete an unexpected field without understanding its meaning. ## Retest both syntax and schema Well-formed XML can still fail this check. Use XML + XSD mode with both inputs. This example uses a single self-contained XSD 1.0 file; XSDHub can resolve local imports and includes when the referenced files are loaded in the project loader, but does not fetch remote schema URLs. ## Primary references - [W3C XML Schema primer: content models](https://www.w3.org/TR/xmlschema-0/) --- # Fix an invalid xs:date value in XML Source: https://xsdhub.com/learn/xsd-invalid-date Replace ambiguous date formats with valid xs:date values. Test a complete XML/XSD example and check calendar dates, time zones and empty values. ## Use year-month-day for ordinary modern dates For 26 October 2026, use 2026-10-26 rather than 26/10/2026. In this example the element is typed as xs:date. The slash-separated value is well-formed XML but fails schema validation. A dateTime field is a different type and can require a time component. ## Check the calendar, not only the format 2026-02-30 has the expected visual shape but is not a valid date. Leap years matter too. Validate generated values rather than merely checking them with a format-only regular expression. ## Do not guess an ambiguous date 03/04/2026 may mean March 4 or April 3. Confirm the source locale or data contract before converting it. Reordering digits without that context can produce schema-valid but factually wrong data. ## Time zones and missing values xs:date permits an optional timezone such as Z or +02:00; the receiving contract may impose narrower rules. An empty element is not automatically a valid date. Omitting an optional element and using xsi:nil on a nillable element are distinct choices that depend on the schema. ## Validate after export Keep the intended calendar date intact when your source uses timestamps and timezone conversion. Test the exported XML against the receiver’s XSD. Passing xs:date validation confirms its datatype, not a business rule such as delivery occurring after order placement. ## Primary references - [W3C XML Schema datatypes: date](https://www.w3.org/TR/xmlschema-2/#date) --- # XML and XSD guides Source: https://xsdhub.com/learn Practical explanations and complete examples. - [XML vs XSD: what each check tells you](https://xsdhub.com/learn/xml-vs-xsd): Understand the difference between XML syntax and XSD validation, with a working quantity example, namespace guidance and a practical debugging sequence. - [Fix XML validation errors at the right layer](https://xsdhub.com/learn/fix-xml-validation-errors): Debug malformed XML, missing child elements, invalid numeric values and namespace mismatches. Practical examples explain what to inspect before changing data. - [How to validate XML against XSD, step by step](https://xsdhub.com/learn/validate-xml-against-xsd): Use a complete XML and XSD example to check required attributes, numbers and element order. Learn how to read a failed result and retest the fix. - [Fix XML namespace mismatches without guessing](https://xsdhub.com/learn/xml-namespaces-explained): Understand xmlns, prefixes, targetNamespace and elementFormDefault with a complete XML/XSD pair and a practical namespace debugging checklist. - [Escape XML characters without double-encoding data](https://xsdhub.com/learn/xml-escape-characters): Fix unescaped ampersands and less-than signs, choose attribute quotes correctly, and understand when CDATA helps. Includes valid and invalid XML examples. - [Use minOccurs and maxOccurs to control repetition](https://xsdhub.com/learn/xsd-minoccurs-maxoccurs): See how XSD occurrence limits affect missing, optional and repeated elements. Test a complete basket schema and learn why an empty element is not an absent one. - [Read XSD data-type errors with concrete examples](https://xsdhub.com/learn/xsd-data-types): Check valid lexical forms for common XSD types with a complete schema. Fix decimal commas, boolean labels and date formats without changing the intended value. - [Choose between xs:sequence and xs:choice](https://xsdhub.com/learn/xsd-sequence-vs-choice): Learn why XML child order can fail validation and how xs:choice expresses alternatives. Includes a complete contact schema and examples of both failure modes. - [Fix an XML opening and ending tag mismatch](https://xsdhub.com/learn/xml-tag-mismatch): Find mismatched XML tags with a tested broken example, corrected XML and an in-browser validator. Check nesting, spelling and case. - [Fix “This element is not expected” in XSD validation](https://xsdhub.com/learn/xsd-element-not-expected): Debug unexpected XML elements by checking sequence, namespace, spelling and occurrence rules. Try a complete failing and corrected XML/XSD pair. - [Fix an invalid xs:date value in XML](https://xsdhub.com/learn/xsd-invalid-date): Replace ambiguous date formats with valid xs:date values. Test a complete XML/XSD example and check calendar dates, time zones and empty values. --- # XSDHub Affiliate Pilot — Earn 30% for 12 Months Source: https://xsdhub.com/partners Apply for the XSDHub affiliate pilot. 30% commission on eligible subscription revenue for 12 months, with manual approval and clear product limits. A SMALL, CAREFULLY RUN PARTNER PILOT ## Teach something useful.Share in the subscription. Help developers understand XML errors and introduce them to XSDHub. We are inviting a first group of 5–10 educators, technical publishers and integration specialists. Applications open · manual approvalApply through our partner portal. We review every application and confirm activation before you promote your referral link. There is no application fee. 30% ## Eligible subscription revenue After discounts, excluding tax, refunds and chargebacks. No commission on free accounts. 12 months ## From the first paid purchase Commission on eligible payments during the customer's first year. No lifetime commitment. 60 days ## Referral window The last eligible referral before a new customer's first paid purchase receives credit, subject to consent and verified attribution. ## What that can mean for one customer PlanCustomer pays, before taxCommission per eligible paymentPro monthlyUS$19US$5.70Pro annualUS$190US$57.00Team monthlyUS$49US$14.70Team annualUS$490US$147.00Illustrations at current undiscounted prices, not guaranteed earnings. Annual commission is based on the actual annual payment; it is not paid again each month. Refunds and chargebacks reduce commission. ## Who this is for Developer educators, XML/XSD tutorial writers, integration consultants and technical communities with an audience that already works with structured data. A small relevant audience is more useful than a large unrelated one. We are not accepting coupon directories, cashback traffic, self-referrals or paid search bidding on XSDHub's brand during the pilot. ## Tell us about your audience Create a partner account, then email [support@xsdhub.com](mailto:support@xsdhub.com) with your public website or channel, audience and the content you would like to create. We review each application before activation. [Apply to become a partner →](https://xsdhub.firstpromoter.com/signup/45122)[Existing partner? Sign in](https://xsdhub.firstpromoter.com/login) The portal is hosted by FirstPromoter. No application fee. Do not email bank details, identity documents or customer files. Unsuccessful applications are normally removed within 90 days of the decision. ## Honest recommendations, clear boundaries Individual checks are free. Paid plans add batches and saved schemas. XSDHub supports XSD 1.0 with local imports/includes, up to 100 schemas and 10 MB per project (1 MB per file). Optional server modes add XSD 1.1 and Schematron XPath 1.0 with explicit upload consent. DTDs are blocked; public HTTPS schemas can be imported explicitly before validation, and a schema pass is not a guarantee of business accuracy. Disclose your commission next to your recommendation. Do not present a paid partnership as an independent endorsement. [Download the partner facts and disclosure examples](/partner-kit.txt). ## How payouts work Commissions are reviewed before payout, including refunds and duplicate transactions. Approved balances are paid monthly once at least US$50 is available and each payment has passed a minimum 30-day review period. The payout method and any fees will be confirmed before enrollment. [Read the pilot terms](/affiliate-terms) · [Privacy policy](/privacy) · [Current product prices](/pricing) --- # XSDHub Affiliate Pilot — Terms Source: https://xsdhub.com/affiliate-terms Eligibility, attribution, commission, payout and promotion rules for the XSDHub affiliate pilot. Participation requires manual approval and acceptance of the terms. PILOT TERMS · 26 OCTOBER 2026 ## A clear agreement.Before the first referral. Participation requires approvalApplying does not create a partnership or commission entitlement. Enrollment starts only after written approval, acceptance of these terms and activation of your referral link. ## 1. Operator and approval The program is operated by Daniel Haket in the Netherlands for XSDHub. Contact [support@xsdhub.com](mailto:support@xsdhub.com). The first group is limited to selected partners. Provide accurate identity and promotion-channel details and be legally able to enter the agreement. Any additional contracting and payout information must be confirmed before enrollment. ## 2. Attribution and eligible customers The rule is last eligible affiliate referral within 60 days before a new customer's first successful paid purchase. Only an approved, activated link qualifies. One customer can be assigned to one partner; an existing assignment is not overwritten by later clicks. Existing paying customers, your own purchases, purchases controlled by you, fraudulent referrals and test transactions are excluded. Tracking requires the visitor's consent where applicable. Blocked tracking, deleted cookies or a device change can prevent attribution. We will not bypass a visitor's choice. Disputed referrals may be reviewed using non-sensitive evidence; commission is not guaranteed without verified attribution. Raise a dispute within 30 days of the relevant statement. ## 3. Commission basis and duration The rate is 30% of eligible subscription amounts actually paid, after discounts and excluding sales tax, refunds and chargebacks. Ordinary payment-processing fees are not deducted from this commission basis. The earning period starts with the first paid purchase and ends immediately before its 12-month anniversary. Subsequent renewals outside that period earn no commission. Annual plans earn commission on the eligible annual payment once. Monthly plans earn on each eligible collected payment. Upgrades and downgrades use the actual eligible amount charged or refunded; canceled or unpaid invoices do not earn commission. No commission is earned for clicks, signups or free usage alone. ## 4. Review and payout Commissions remain pending for at least 30 days after payment. Approved, undisputed balances of at least US$50 are included in the next monthly payout run; smaller balances roll forward. Required identity, tax and payout details must be complete. The available payout method, timing and any conversion or transfer fees will be agreed before activation. Refunds, chargebacks and payment reversals reduce the corresponding commission, including proportionate reductions for partial refunds. A reversal after payout may be offset against future commissions; unresolved balances require review. No automated withdrawals from a partner's bank account are authorized by these terms. ## 5. Promotion rules Clearly disclose compensation next to your recommendation and affiliate link. Do not make unsupported claims, guarantee outcomes, invent discounts or customer testimonials, send spam, impersonate XSDHub, use cookie stuffing, install unwanted software or provide incentives without written approval. No self-referrals, brand-keyword bidding, misleading domains, coupon directories or cashback traffic during the pilot. Use only approved assets and current product facts. Do not imply that XML validation certifies regulatory compliance or business accuracy. Do not submit customer XML, schemas, payment details or personal data to support a referral claim. ## 6. Changes, suspension and leaving Either party may end participation by written notice. Material program changes apply prospectively with notice; valid earned commissions are not retroactively reduced merely because terms change. On termination, valid accrued balances remain subject to refund review and are settled after that review even if below the normal payout threshold. Unrelated disputed or fraudulent activity does not automatically invalidate otherwise legitimate earnings. We may suspend links while investigating suspected misuse and explain the reason where possible. Contact support to contest a decision. Stop using program assets and referral links when participation ends. ## 7. Data and legal framework Application data is used to assess and administer the partnership. Approved partners will receive only the referral and commission information needed for their program, not customer documents or unrestricted customer records. FirstPromoter operates the partner portal and attribution system. Paddle provides subscription and transaction events for commission calculation. See our privacy policy for details. Payout arrangements are confirmed before activation. Dutch law applies subject to mandatory applicable rights. No employment, agency or exclusivity is created. Partners remain responsible for their own taxes and lawful promotion. Nothing excludes liability or rights that cannot lawfully be excluded. [← Back to the affiliate pilot](/partners) --- # XML validation API and CLI Source: https://xsdhub.com/developers Automate XSD 1.0, XSD 1.1 and Schematron XPath 1.0 checks with explicit server-processing consent. AUTOMATE YOUR XML CHECKS # XML validation API & CLI Run XSD 1.0, XSD 1.1 or ISO Schematron checks from a script or CI job. This is an early-access public endpoint with bounded capacity, not an unlimited enterprise service. ## Choose local or server processing The default browser engine checks XSD 1.0 locally. This API sends documents to XSDHub over HTTPS. Request content is not logged, and temporary files are removed after processing. Only submit files you are allowed to share. A request must explicitly contain "consent": true. [Read the privacy policy](/privacy). ## Endpoint and request POST https://xsdhub.com/api/validate Content-Type: application/json { "engine": "xsd11", "consent": true, "xml": "2", "xsd": "" }Engines: xsd10, xsd11, schematron. For Schematron, send the rules as schematron instead of xsd. For an XSD project, send rootSchema and schemaFiles, an array of objects with path and content. All dependencies must be included. Validation does not fetch remote URLs. The workbench has a separate opt-in public HTTPS importer that produces a local snapshot. ## Use the Python CLI [Download xsdhub-cli.py](/xsdhub-cli.py). It requires Python 3 and uses only its standard library. Read the short script before running it. python3 xsdhub-cli.py order.xml \ --schema schemas/main.xsd \ --project-dir schemas \ --engine xsd11 \ --allow-upload \ --output validation.jsonExit codes: 0 means validation passed; 1 means validation failed; 2 means a connection, input or service error. In CI, keep the JSON report as an artifact and fail the job on a nonzero exit code. The upload flag is required; no credentials are needed for this public early-access endpoint. ## Ready-to-use CI workflow [Download the CI starter ZIP](/xsdhub-ci-starter.zip) with the CLI, a GitHub Actions workflow and valid/invalid fixtures. Commit it to your repository, open Actions and run XML validation with upload consent enabled. Adapt the file paths before using your own documents. The workflow retains the JSON report for seven days and fails on validation or service errors. You can add a push trigger after deciding which documents may be uploaded. Uses the official [checkout](https://github.com/actions/checkout) and [artifact](https://github.com/actions/upload-artifact) actions. [Inspect the workflow](/xsdhub-ci.yml). ## Limits and responses - XML: up to 10 MB; each schema: 1 MB; schema project: up to 100 files and 10 MB total. - 20 seconds per request, at most two concurrent server jobs, and 10 requests per minute per client address. Shared networks may share a rate limit. - HTTP 200 contains ok, engine, stage, errors and warnings. A validation failure is ok: false, not a transport error. - HTTP 429 means rate limited; 503 means busy; 422 means a timeout or resource failure. Never treat a service failure as a successful validation. - At most 100 validation errors are returned. Line numbers or paths are shown when the engine supplies them. ## Supported standards and boundaries The server uses xmlschema 4.3.1 for XSD 1.0/1.1 and lxml 6.0.2 for ISO Schematron with XPath 1.0 / XSLT 1.0 binding. Schematron XPath 2.0/3.0 bindings, external includes and embedded XSLT are not accepted. DTDs and resource-reading XPath functions are disabled. Remote resources are never fetched implicitly during validation. These are validation tools, not certification of compliance with a particular industry or legal standard. Test representative documents before depending on the service. For support, contact [support@xsdhub.com](mailto:support@xsdhub.com). ## Open-source components The local engine uses [libxml2-wasm](/vendor/libxml2/LICENSE); ZIP handling uses [fflate](/vendor/fflate/LICENSE). Server component source and license information: [xmlschema](https://github.com/sissaschool/xmlschema), [elementpath](https://github.com/sissaschool/elementpath) and [lxml](https://lxml.de). --- # About XSDHub and Daniel Haket Source: https://xsdhub.com/about Founder, development process, scope and corrections. [XSDHub](/) / About THE PERSON BEHIND XSDHUB # Hi, I'm Daniel Haket. An entrepreneur, an AI enthusiast, and the founder of XSDHub. Curious about technology. I love family life, animals, Asia, and meeting people from around the world. [Connect on LinkedIn ↗](https://www.linkedin.com/in/daniel-haket) Daniel Haket · Founder of XSDHub [My background](#background)[How we work](#how-we-work)[Tool scope](#tool-scope)[Contact](#contact) ## From international finance to building with AI My professional background is in international finance, including trade finance, operations and risk & control at ABN AMRO and Deutsche Bank. Working across borders is something I have always enjoyed: different perspectives, new relationships and the people behind a process. Today, that international curiosity goes hand in hand with a strong drive to build. I am fascinated by what AI makes possible for an independent founder: turning an idea into something people can actually use, then making it better as they use it. Outside work, family comes first. I love animals, have a lasting affection for Asia and enjoy meeting people from around the world. Those connections matter to me as much as the technology. ## Why XSDHub exists XSDHub focuses on a small, practical problem: making XML easier to check and understand. A syntax error, a namespace mismatch or a value that fails a schema can interrupt a much larger workflow. The tools bring the document, the schema and the validation result together in one browser workbench. You can [check XML syntax](/xml-validator), [validate against an XSD](/xsd-validator) or [format a document](/xml-formatter) without an account. The [guides](/learn) explain the rules behind common errors with examples you can try yourself. ## How the tools and guides are built XSDHub is developed with AI assistance. AI helps with code, explanations and examples; a generated explanation is not, by itself, proof that a rule is correct. The guides link to primary references, including W3C specifications, so readers can check the underlying definitions. The workbench uses libxml2 compiled to WebAssembly. The new practical guides have 17 automated checks covering valid and invalid XML/XSD pairs, namespace prefixes, occurrence boundaries, child order, escaping and CDATA. These checks use the same validation module as the tools. They cover those examples, not every possible schema or application. I am the founder and project owner, bringing an interest in dependable workflows from my finance background. The guides are published by XSDHub and should be checked against your receiving system's own schema and requirements. ## What the tools do, and where they stop Default XML and XSD 1.0 validation runs locally on your device. Optional server modes send the inputs to XSDHub only after explicit consent. Saving a schema to an account library is a separate action that stores it on the server; Team libraries share those saved schemas with workspace members. The current tools support UTF-8 files up to 10 MB XML and 1 MB per schema and XSD 1.0 schema projects with local imports and includes (up to 100 schemas, 10 MB total). Optional server modes add XSD 1.1 and ISO Schematron XPath 1.0, with explicit upload consent and up to 10 MB XML. DTDs remain blocked. A separate opt-in public HTTPS importer creates local schema snapshots. Pro and Team cloud projects store complete schemas and their saved versions. A successful schema check does not establish that invoice totals, business identifiers or other application rules are correct. ## Other projects I build XSDHub is one of my independent projects. You can read more about my background at [AIBuilder Marketplace](https://aibuildermarketplace.com/about/), explore my work on [ZeroTouch Support](https://zerotouchsupport.com/about.html), or visit [BatteryPayback](https://batterypayback.co.uk/about/). Each project has its own purpose and subject matter. ## Questions, feedback or a correction? Email [support@xsdhub.com](mailto:support@xsdhub.com). For an error in a guide, include the page URL, the claim you think needs changing and a source or small reproducible example if you have one. For a tool problem, describe what you expected and what happened. Remove confidential information before sharing sample XML. Corrections are checked against the relevant source or reproduced in the tool before the affected explanation or code is changed. General enquiries sent to [hello@xsdhub.com](mailto:hello@xsdhub.com) reach the same inbox. --- # XSDHub plans Source: https://xsdhub.com/pricing Current plan descriptions and subscription availability. Prices exclude applicable tax. PAY FOR FLOW, NOT FOR A SINGLE CHECK # Less repetition. More momentum. A quick check is always free. Choose Pro for repeat work, or give your team one shared place for its schemas. MonthlyYearly 2 months free Subscriptions are billed in US dollars through Paddle. Applicable tax is shown before you pay. ## Free For a quick check and a clear answer. US$0 / forever No account needed for the workbench. - Unlimited individual XML checks - Multi-file XSD 1.0 projects - XML formatting and JSON reports - Local checks; optional server engines with consent - Up to 10 MB per XML document and 1 MB per schema [Open free workbench →](/)FOR REGULAR XML WORK ## Pro Your own library. Your whole batch. US$19 / month Billed monthly. Excludes applicable tax. - Everything in Free - Validate up to 25 XML files per batch - 10 cloud projects, up to 50 versions each - Save 10 reusable individual XSD schemas - Access your library across devices - Export batch results as JSON Choose Pro → ## Team One schema library. One source of truth. US$49 / month Billed monthly. Excludes applicable tax. - Everything in Pro - Validate up to 100 XML files per batch - 50 shared cloud projects, up to 50 versions each - 100 schemas in a shared library - 5 seats, including the owner - Invite links and member management Choose Team → Paddle handles checkout, recurring payments and subscription management. Checkout availability is checked when you choose a plan. EVERY FEATURE, SIDE BY SIDE ## Choose how you want to work. Free, Pro and Team capabilitiesCapabilityFreeProTeamXML syntax, formatting, JSON reportsIncludedIncludedIncludedXSD 1.0 multi-file projectsIncludedIncludedIncludedXSD 1.1, Schematron XPath 1.0, two-engine comparisonWith upload consentWith upload consentWith upload consentPublic HTTPS schema import, graph, sample XML, structural comparisonIncludedIncludedIncludedLocal project saves and export5 revisions5 revisions5 revisionsCloud schema projects—10 projects50 shared projectsVersions per cloud project—Up to 50Up to 50Local batch sizeIndividual files25 XML files100 XML filesOptional server batch size—10 XML files10 XML filesAccount-saved individual schemas—10100 sharedWorkspace seats—15 including ownerAPI, Python CLI & GitHub Actions starterRate-limited accessSame API limitsSame API limits All plans: up to 10 MB per XML document, 1 MB per schema and 100 schemas / 10 MB per project. Public import: up to 20 schema files. Cloud storage contains schemas, not your XML documents. Server validation requires upload consent and is limited to 10 requests per minute with a 20-second processing timeout. Paid plans do not increase those API limits or include an enterprise SLA. [Read the API limits](/developers) or [explore every feature](/#features). ## A few things, clearly. Questions about a plan or your account? Email [support@xsdhub.com](mailto:support@xsdhub.com). What happens when I choose a plan?Sign in with Google, GitHub, email and password, or your existing ChatGPT account, then continue to Paddle to review the price and recurring billing terms. Paid access begins only after payment is confirmed. If checkout setup is incomplete, no payment is taken. How does annual billing work?Pro is US$190 per year. Team is US$490 per year. You pay the annual total upfront and it renews annually until cancelled. These prices exclude applicable tax, shown at checkout. Can I cancel or switch plans?Open My account and choose Manage billing to use the Paddle customer portal. A cancelled paid subscription keeps its features until its paid period ends. Plan changes depend on the options enabled in the store. Do you upload my documents?Default XML syntax, formatting and XSD 1.0 checks run on your device. XSD 1.1, Schematron and second-engine checks upload documents only with your permission. Cloud saving uploads project schemas, not XML documents; Team members share saved schemas and projects. Public HTTPS import contacts the schema hosts. See our privacy page for processing details. Does this include an API or business-rule validation?Yes. Optional XSD 1.1 and Schematron XPath 1.0 checks are available with upload consent, including on Free. The public validation API, Python CLI and GitHub Actions starter are documented at /developers. API rate and processing limits apply equally to all plans; a paid plan does not include a dedicated API or enterprise SLA. What happens when a subscription ends?The free workbench remains available. Paid batch and schema-library access stops. Saved schemas remain stored; there is no automatic deletion in this beta. Export or delete schemas while your paid access is active. --- # Terms of Service Source: https://xsdhub.com/terms Terms for using XSDHub XML tools, accounts, subscriptions and shared schema libraries. Last updated: 26 October 2026. ## Who provides XSDHub XSDHub is operated by Daniel Haket in the Netherlands. For questions about the service or these terms, contact [support@xsdhub.com](mailto:support@xsdhub.com). These terms cover the software service; the seller identified at checkout provides separate purchase terms for a paid transaction. ## What the tools do XSDHub checks XML syntax, validates supported XML against XSD 1.0 schemas with local imports and includes, and formats XML. The current limit is 10 MB per XML file and 1 MB per schema; projects allow up to 100 schemas and 10 MB total. Optional server validation supports XSD 1.1 and ISO Schematron with XPath 1.0 after explicit upload consent. Server XML inputs can be up to 10 MB. DTDs are blocked. A separate opt-in importer downloads public HTTPS schema dependencies into a local snapshot; validation itself does not fetch network resources. Pro and Team accounts can store complete schema projects and up to 50 versions per project. A successful validation only confirms the checks performed against the supplied document and schema. It does not certify business accuracy, regulatory compliance or suitability for a particular purpose. Keep your own copies of documents and schemas, and review results before using them in production. The [pricing page](/pricing) describes the current plan limits. ## Accounts and shared libraries Use an account you are authorised to control and protect your sign-in credentials. You must have permission to process or store any content you supply. You retain your rights in that content and allow us to process it only as needed to provide, secure and support the service. Default XSD 1.0 checks and formatting take place in your browser. Optional advanced engines process documents on our server after you explicitly allow the upload. The separate public-schema importer contacts HTTPS hosts and their referenced schema hosts at your request; those hosts receive our server request and the schema path. It forwards no account credentials or browser cookies. Imported copies remain in your browser until you explicitly save them. Saving an XSD to an account library sends that schema to our server-side storage. Members of a Team workspace can access its shared schemas. Workspace owners manage membership. Do not place secrets or third-party personal data in a shared schema unless you have the necessary authority and arrangements. ## Acceptable use Do not use XSDHub unlawfully, access another person's account or schemas without permission, distribute malicious content, interfere with availability, or bypass usage limits and access controls. We may restrict access where reasonably necessary to address misuse or a security issue. Where practicable, we will explain the reason and provide a way to contact us. ## Prices, billing and renewal Plan prices are displayed in US dollars and exclude applicable tax unless checkout states otherwise. The final amount, billing interval and seller are shown before a purchase. Monthly subscriptions are billed each month; annual subscriptions are billed for a full year and renew at that interval until cancelled. Paddle handles new XSDHub subscription purchases as merchant of record, including payment processing and applicable sales taxes. The seller and final recurring amount are shown in checkout and on your receipt. Separate, explicitly labelled sandbox checkouts are for testing only and do not charge real money. We will communicate material subscription price changes before they take effect and obtain agreement where required. Changes will not retroactively alter a completed purchase. ## Cancellation and refunds You can stop a subscription from renewing through the billing-management link in your account or receipt. If you cannot access that link, contact support. Cancellation normally takes effect at the end of the paid billing period. It does not by itself refund a previous payment. Withdrawal, defective-service and other mandatory rights are preserved; see the [Refund Policy](/refunds). When paid access ends, the free tools remain available. Access to paid schema libraries and team features may stop. Subscription cancellation does not automatically delete an account or stored schemas. Contact support to request deletion or help retrieving your own data. ## Availability and responsibility We aim to keep XSDHub useful and available, but maintenance, browser limitations and service interruptions can occur. No specific uptime commitment is included unless separately agreed in writing. Contact us about a material problem with a paid feature so we can investigate and provide the remedy required by the purchase terms and applicable law. Nothing in these terms excludes liability that cannot lawfully be excluded or restricts mandatory consumer guarantees. The service is a technical tool, and its output should be reviewed in the context of your own systems. ## Changes, applicable law and complaints The version applicable to your use or purchase does not lose mandatory protections because we later update this page. We will give notice of material changes affecting an ongoing paid service where required. Dutch law applies to the software-service relationship with Daniel Haket, subject to any mandatory protections and court rights available to consumers in their country of residence. Separate merchant-of-record purchase terms may apply to the payment transaction. Send complaints to [support@xsdhub.com](mailto:support@xsdhub.com), describing the issue and the resolution you seek. --- # Privacy Policy Source: https://xsdhub.com/privacy How XSDHub handles local XML processing, account information, saved schemas, server logs and privacy requests. [XSDHub](/) / Privacy PolicyXSDHUB POLICIES ## Privacy Policy What stays on your device, what you choose to save, and how to contact us about your data. Last updated: 26 October 2026 · Daniel Haket · Netherlands [Who is responsible](#policy-1)[XML files and saved schemas](#policy-2)[Accounts, sign-in and billing](#policy-3)[Aggregate tool usage](#policy-4)[Service logs and traffic measurement](#policy-5)[Why we process data](#policy-6)[Providers and international processing](#policy-7)[Cookies and browser storage](#policy-8)[Retention and deletion](#policy-9)[Your choices and rights](#policy-10) ## Who is responsible Daniel Haket, based in the Netherlands, operates XSDHub and is responsible for the personal data processed to provide this service. Contact [support@xsdhub.com](mailto:support@xsdhub.com) for privacy questions and requests. A payment provider or sign-in provider may separately be responsible for data it processes for its own purposes. ## XML files and saved schemas Default XSD 1.0 validation and formatting run on your device. Optional XSD 1.1, second-engine XSD 1.0 and Schematron validation send XML and schemas over HTTPS to our isolated Hostinger-hosted processing service only after explicit permission. These request contents are not logged or kept as an account record; temporary processing files are deleted when the request finishes or times out. Network metadata can appear in infrastructure logs. The validation API and CLI also process uploaded documents on the server. Closing or reloading the page can clear unsaved work; keep your own copies. If you explicitly save a schema to your library, we receive its name, XSD content, account/workspace identifier and creation time. Those schemas are stored server-side so you can reuse them. Complete schema projects and their saved versions can also be uploaded to cloud storage when you choose Save project to cloud; XML documents are excluded. Team library content is available to the workspace's members. A schema can contain personal data or confidential information; consider its contents before saving or sharing it. ## Accounts, sign-in and billing Account data can include your name, email address, sign-in provider, provider account identifier, verification status and profile image supplied by that provider. Google and GitHub sign-in provide basic identity information; the GitHub integration requests email access, not repository access. Email/password sign-in is handled by Google Firebase Authentication. XSDHub does not store your password in its application database. We store account links, workspace membership, invitation records, subscription identifiers, plan, billing interval and subscription status to enforce access rights. We send the selected plan and account reference, and may send your account email, to the checkout provider. Card details are entered into the payment provider's checkout and are not stored in the XSDHub application database. Paddle processes new subscription purchases. Historical Lemon Squeezy test records may remain for account and integration support. The provider shown in a checkout processes information under its own privacy terms. Existing ChatGPT-based accounts also use OpenAI's sign-in services. ## Aggregate tool usage We count guide views, example-link clicks, example loads, validation outcomes and clicks towards plans by day and a fixed topic label. These counters contain no XML, XSD, filenames, error messages, email addresses or user identifiers. We do not join these events into personal browsing histories. Network requests still reach our infrastructure as described below. Counts may include repeat use or unrecognised bots and are not unique visitor counts. We honour browser Do Not Track and Global Privacy Control signals for these optional counters. You can also change this browser’s preference below; only that preference is stored locally. Paid subscription records are counted separately after verified payment and are not linked to a guide visit. Usage measurement preference ## Service logs and traffic measurement Our website infrastructure receives connection information such as your IP address, request path, browser information, time and response status to deliver and protect the service. The dedicated XSDHub access log replaces the client IP address with a shortened hash and removes query strings and selected authentication and cookie headers. This reduces exposure but does not make the log completely anonymous. We use these logs to estimate browser visits, sessions, popular public pages and recognisable bot traffic. We send aggregate traffic summaries to the operator through Telegram. Individual request records, account information and document contents are not included in those summaries. Infrastructure providers may maintain additional operational or security logs under their own retention rules. ## Why we process data We process account, library and subscription data to provide the service you request and perform our agreement with you. We use proportionate security logs, support records and aggregate usage information for our legitimate interests in operating, protecting and improving XSDHub. We retain records where needed to meet applicable legal obligations. If we introduce optional processing requiring consent, we will ask before enabling it; consent can be withdrawn without affecting earlier lawful processing. Providing account information is necessary for account features. You can use the public XML tools without creating an account. We do not use these account and traffic records to make automated decisions with legal or similarly significant effects on you. ## Providers and international processing We use Hostinger for website infrastructure and support email, Google Firebase for authentication, and OpenAI Sites with Cloudflare-backed infrastructure for account APIs and stored libraries. Google, GitHub or OpenAI handle sign-in when you choose them. The checkout provider handles billing, and Telegram delivers aggregate operational reports. Access is limited to what is needed for the relevant service, support, security or a lawful disclosure. We do not sell your personal information. Optional affiliate attribution is described below. Providers may process data outside the European Economic Area. Their service terms and privacy documentation describe processing locations and transfer safeguards. Contact us for information about the safeguards applicable to your data. ## Cookies and browser storage Authentication uses cookies or browser storage as needed to keep you signed in and complete a sign-in flow. Saved local schema projects and their last five revisions use IndexedDB on your device. Clearing site data deletes them; export backups first. The public tools do not require advertising or marketing cookies. External authentication and checkout pages may use their own necessary storage and fraud-prevention technologies. Signing out or clearing browser data can remove your local sign-in state but does not itself delete your server-side account. ## Retention and deletion The dedicated XSDHub access log is configured to retain rotated logs for up to 14 days. Aggregate daily traffic reports can be kept longer for comparison. Account and saved-schema data are kept while needed to provide the account and library; cancelling a subscription does not automatically erase them. An active subscription owner can remove saved schemas through the library. Cloud project and version deletion is currently handled through support. Other account or schema deletion requests can be sent to support. We keep support and transaction-related records only as long as needed to handle the request, maintain the service, resolve disputes or meet applicable legal duties. Records subject to a legal retention duty or a legitimate unresolved dispute may need to be retained after a deletion request. Providers may have separate retention periods for their own records and backups. ## Your choices and rights Subject to applicable law, you can request access, correction, deletion, restriction, portability or object to processing based on legitimate interests. Email [support@xsdhub.com](mailto:support@xsdhub.com) from the account concerned where possible. We may need to verify that the request is yours, and will respond within the applicable legal timeframe. You can also complain to the [Dutch Data Protection Authority](https://autoriteitpersoonsgegevens.nl/) or your local supervisory authority. Please do not email passwords, payment-card details or unnecessary identity documents. We will explain a suitable verification method if one is needed. Material changes to our data practices will be reflected here and communicated where required. ## Optional affiliate attribution If you follow a partner link, you can allow or decline FirstPromoter referral tracking. We load its tracking script only after you allow it. It receives the referral identifier, page URL, browser and connection information, and uses first-party referral cookies for up to 60 days. Your choice is stored on this device for 60 days. XML, schemas and editor contents are never sent to FirstPromoter. With permission, we attach the referral identifier and your verified account email to the Paddle checkout. FirstPromoter receives customer identifiers, subscription and transaction amounts, status and refund information from Paddle to calculate and review commissions. The integration also receives billing events without a referral match; these do not earn commission. Card details are not shared with affiliates. Partners receive the referral and commission information necessary to administer the program. Choose Referral privacy in the footer to withdraw permission for future tracking. This clears referral cookies on this site and stops new attribution from this browser; existing transaction and commission records may remain for reconciliation, disputes and legal obligations. You can use the tools and buy a subscription without allowing tracking. For deletion or a specific retention question, contact support@xsdhub.com. [FirstPromoter privacy information](https://firstpromoter.com/privacy). --- # Refund Policy Source: https://xsdhub.com/refunds How to cancel an XSDHub subscription, request a refund or exercise applicable consumer withdrawal rights. Last updated: 26 October 2026. ## Current checkout status New XSDHub subscriptions use Paddle checkout. The seller and payment provider are identified in checkout and on your receipt. The rules below apply to real purchases. Explicitly labelled sandbox purchases do not charge real money and cannot produce a cash refund. ## Request help or a refund Email [support@xsdhub.com](mailto:support@xsdhub.com) with your purchase email, order or subscription reference, transaction date and a short description of the issue. Contact us promptly so we can investigate. Do not include card numbers, passwords or confidential XML documents. We assess requests against what was purchased, the circumstances, the merchant-of-record terms and applicable law. A request is not automatically approved just because it was submitted. This does not limit any mandatory right to withdraw, receive a refund or obtain a remedy for a faulty or misdescribed service. ## Your consumer rights Depending on where you live and the transaction, consumer law may give you a withdrawal period, including a 14-day period for certain online service contracts in the EU/EEA. The rules can depend on when service performance began and what you expressly agreed to at checkout. Simply using this website does not waive a statutory withdrawal right. Send a clear statement that you wish to withdraw to support or the seller shown on your receipt within the applicable period. We will help route the request. Rights relating to non-delivery, defects or a service that does not match its description continue to apply where required by law. ## Payment-provider handling For an order sold by Paddle, you can also request help or a refund through [Paddle buyer support](https://paddle.net). The [Paddle Refund Policy](https://www.paddle.com/legal/refund-policy) and [Buyer Terms](https://www.paddle.com/legal/buyer-terms) apply to that transaction alongside any stronger mandatory rights. For an order sold by Lemon Squeezy, use the support or billing link in its receipt, or contact XSDHub for assistance. Approved refunds are processed by the seller/payment provider, normally to the original payment method. Processing time depends on the provider and your bank; statutory deadlines take priority. A refund can end access to the refunded subscription. ## Cancel a renewal Use the billing-management link in your account or purchase receipt to cancel future renewal. If it does not work, email support. Cancellation normally keeps paid access until the end of the already-paid period and prevents the next renewal. It does not automatically refund the current period or unused time. Applicable withdrawal, refund and consumer rights remain unaffected. If you believe a renewal was charged after a timely cancellation, or you were charged twice, send the relevant references so we and the payment provider can investigate. This policy does not restrict your lawful rights to dispute a charge. ## Technical problems If a paid feature does not work as described, contact support with the affected feature, your browser and a non-confidential description of what happened. We will investigate and seek an appropriate fix or other remedy. Do not send production data unless there is an agreed safe way to share it. For questions about this policy, contact Daniel Haket at [support@xsdhub.com](mailto:support@xsdhub.com). --- # XSDHub for AI assistants Source: https://xsdhub.com/ai Public MCP connection and machine-readable documentation. [XSDHub](/) / AI access PUBLIC DOCUMENTATION FOR PEOPLE AND AGENTS # Connect your assistant. Keep the source in view. Read XSDHub's guides as clean text or connect a compatible MCP client to search them. All the information exposed here is public. The connector does not access accounts, saved schemas, payments or documents in the workbench. ## Start with the documentation [llms.txt](/llms.txt) is a short directory of the tools, guides and limits. [llms-full.txt](/llms-full.txt) combines the public page text in one file. Each public page also links to a Markdown version. For search crawlers, use the [XML sitemap](/sitemap.xml) and [robots policy](/robots.txt). These files are generated from the same public page list. ## Read-only MCP connection In a client that supports remote Streamable HTTP MCP servers, use this endpoint. Authentication is not required for the public documentation server. https://xsdhub.com/mcpThe endpoint accepts JSON-RPC POST requests. Opening it as a normal web page returns HTTP 405; that is expected. A client can initialize the connection, list tools, then call a tool. - search_xsdhub_guides: find explanations and source URLs for an XML/XSD question. - get_xsdhub_page: read one public page by its slug, such as learn/xml-namespaces-explained. - get_xsdhub_capabilities: check supported tools, limits, privacy and subscription availability. The server does not accept XML for validation. For a local check, open the [browser validator](/xsd-validator). ## What this does for discovery Public pages are available as HTML without requiring JavaScript to read them. Markdown and MCP provide additional ways for compatible assistants to retrieve the same information and cite the original URL. They do not automatically install a connector in ChatGPT, Claude or Gemini, and do not guarantee that a service will index or recommend XSDHub. Report a broken link or incorrect result to [support@xsdhub.com](mailto:support@xsdhub.com).