XML Validator

Validujte syntaxi XML a zkontrolujte chyby správnosti dokumentu

Zkusit příklad

XML vstup

Běží lokálně · Bezpečné pro vkládání tajných údajů

Co je validace XML?

XML validátor ověřuje, zda XML dokument dodržuje strukturální pravidla definovaná specifikací XML 1.0 (doporučení W3C, páté vydání). V základu tento validátor potvrzuje, že dokument je správně utvořený: má jediný kořenový prvek, všechny značky jsou správně zanořeny a uzavřeny, hodnoty atributů jsou v uvozovkách a rezervované znaky používají předdefinované entity. Dokument, který nesplňuje některý z těchto požadavků, způsobí, že XML parsery vyhodí chybu místo toho, aby tiše produkovaly nesprávný výstup.

Rozdíl mezi správností (well-formedness) a platností (validity) je důležitý. Správně utvořený XML dokument splňuje syntaktická pravidla samotné specifikace XML. Platný XML dokument jde dál: musí také odpovídat omezením definovaným v externím schématu, jako je DTD (Document Type Definition), XSD (XML Schema Definition) nebo Relax NG schéma. Tento nástroj ověřuje správnost — první a nejčastější krok validace. Bez něj nemůže nic dalšího v procesu zpracování pokračovat.

Validace XML zachytí chyby dříve, než se dostanou do produkce. Neuzavřené značky, nespárované názvy prvků, nenahrazené ampersandy a duplicitní atributy patří k nejčastějším chybám při ručně upravovaném XML. Parsery v různých jazycích zpracovávají tyto chyby odlišně: některé selžou tiše, jiné vrátí neúplné výsledky a další vyhodí výjimku. Spuštění XML přes validátor tuto nejasnost odstraní a dá vám jasnou odpověď uspěl/neuspěl s informací o umístění chyby.

Proč použít online XML validátor?

Včasné zachycení syntaktických chyb XML předchází řetězovým selháním v aplikacích, které XML data zpracovávají. Validátor v prohlížeči poskytuje okamžitou zpětnou vazbu bez nutnosti instalovat nástroje příkazové řádky nebo konfigurovat zásuvné moduly IDE.

Okamžité odhalení chyb
Vložte XML a za méně než sekundu získáte výsledek s přesným umístěním chyby. Žádné čekání na build pipeline ani nastavování CLI nástrojů.
🔒
Zpracování zaměřené na soukromí
Veškerá analýza a validace probíhá ve vašem prohlížeči pomocí DOMParser API. Vaše XML nikdy neopustí váš počítač a nikdy se neodesílá na žádný server.
🎯
Přesné hlášení chyb
Vidíte přesný řádek a sloupec, kde validace selže, spolu s popisem chyby. To je rychlejší než čtení stack trace z parseru ve vašem kódu aplikace.
📋
Bez účtu nebo instalace
Otevřete stránku, vložte XML a prohlédněte si výsledek. Žádné registrační formuláře, žádný desktopový software, žádná rozšíření prohlížeče.

Případy použití XML validátoru

Vývoj frontendu
Validujte soubory SVG a fragmenty XHTML před jejich vložením do komponent React nebo Vue. Jediná neuzavřená značka v SVG může rozbít celý strom komponent.
Backendové inženýrství
Ověřujte odpovědi SOAP, payloady XML-RPC a RSS/Atom feedy z API třetích stran. Validujte surovou odpověď před psaním deserializační logiky, abyste předešli ladění výjimek parseru za běhu.
DevOps a CI/CD
Ověřte, že soubory Maven pom.xml, .csproj nebo build soubory Ant jsou správně utvořeny po automatických úpravách. Syntaktická chyba v konfiguraci sestavení může selhat celý pipeline s nesrozumitelnou chybovou zprávou.
QA a testování
Validujte XML testovací přípravky a soubory s očekávaným výstupem před spuštěním integračních testů. Chybně utvořené přípravky způsobují falešně negativní výsledky, které plýtvají časem při ladění.
Datové inženýrství
Kontrolujte XML exporty z databází, vládních portálů otevřených dat a ETL pipeline. Validace struktury před psaním XPath dotazů nebo XSLT transformací zabrání zbytečné práci s poškozenými zdrojovými daty.
Výuka XML
Studenti procházející tutoriály W3C XML nebo XSLT mohou vkládat cvičné soubory do validátoru a ověřit syntaxi. Chybové zprávy ukazují přesně na problém, čímž zrychlují průběh učení.

Pravidla správnosti XML

Specifikace XML 1.0 definuje přísnou sadu syntaktických pravidel. Dokument musí splňovat všechna, aby byl považován za správně utvořený. Níže jsou uvedena jednotlivá pravidla, jejich požadavky a správný příklad. Většina validačních chyb se vztahuje k jednomu z těchto pravidel.

PravidloPožadavekSprávný příklad
Single root elementDocument must have exactly one root<root>...</root>
Matched tagsEvery opening tag needs a closing tag<p>text</p>
Proper nestingTags must close in reverse order of opening<a><b>...</b></a>
Quoted attributesAttribute values must be in single or double quotes<el attr="val"/>
Entity escapingReserved characters must use predefined entities&lt; &gt; &amp; &quot; &apos;
Case sensitivityTag names are case-sensitive: <A> is not </a><Book>...</Book>
No duplicate attributesEach attribute name must appear once per element<el a="1" b="2"/>
Valid XML declarationIf present, must be the very first line<?xml version="1.0"?>

Správně utvořený vs. DTD-platný vs. schéma-platný

Validace XML má tři úrovně. Tento nástroj ověřuje první z nich (správnost), která je předpokladem pro ostatní dvě.

Správně utvořený
Splňuje syntaktická pravidla XML 1.0: jediný kořen, spárované značky, atributy v uvozovkách, správné zanoření. Každý XML parser to ověřuje jako první. Pokud dokument není správně utvořen, vůbec se nejedná o XML.
DTD-platný
Odpovídá Document Type Definition, která určuje, které prvky a atributy jsou povoleny, jejich pořadí a kardinalitu. DTD jsou deklarovány inline nebo prostřednictvím odkazu DOCTYPE. DTD validace je běžná v legacy systémech a XHTML.
Schéma-platný (XSD / Relax NG)
Odpovídá XML Schema Definition (XSD) nebo Relax NG schématu. Tato schémata podporují datové typy (integer, date, URI), jmenné prostory a komplexní obsahové modely. XSD validace je standardem ve webových službách SOAP, zdravotnických datech HL7 a podnikové integraci.

Ukázky kódu

Validujte XML programově v různých jazycích. Každý příklad ověřuje správnost dokumentu a vrátí chybovou zprávu, pokud dokument není správně utvořen.

JavaScript (DOMParser)
function validateXML(xmlString) {
  const parser = new DOMParser()
  const doc = parser.parseFromString(xmlString, 'application/xml')
  const error = doc.querySelector('parsererror')
  if (error) {
    return { valid: false, message: error.textContent }
  }
  return { valid: true, message: 'Well-formed XML' }
}

validateXML('<root><item>hello</item></root>')
// → { valid: true, message: "Well-formed XML" }

validateXML('<root><item>hello</root>')
// → { valid: false, message: "Opening and ending tag mismatch..." }
Python
import xml.etree.ElementTree as ET

def validate_xml(xml_string):
    try:
        ET.fromstring(xml_string)
        return True, "Well-formed XML"
    except ET.ParseError as e:
        return False, str(e)

valid, msg = validate_xml('<root><item>hello</item></root>')
# → (True, "Well-formed XML")

valid, msg = validate_xml('<root><item>hello</root>')
# → (False, "mismatched tag: line 1, column 27")

# With lxml — also supports XSD schema validation
from lxml import etree
schema = etree.XMLSchema(etree.parse('schema.xsd'))
doc = etree.fromstring(b'<root><item>hello</item></root>')
schema.validate(doc)  # → True or False
Go
package main

import (
    "encoding/xml"
    "fmt"
    "strings"
)

func validateXML(raw string) error {
    decoder := xml.NewDecoder(strings.NewReader(raw))
    for {
        _, err := decoder.Token()
        if err != nil {
            if err.Error() == "EOF" {
                return nil
            }
            return err
        }
    }
}

func main() {
    err := validateXML("<root><item>hello</item></root>")
    fmt.Println(err) // → <nil>

    err = validateXML("<root><item>hello</root>")
    fmt.Println(err) // → XML syntax error: unexpected end element </root>
}
CLI (xmllint)
# Check well-formedness (part of libxml2, pre-installed on macOS/Linux)
xmllint --noout document.xml
# Exit code 0 = valid, non-zero = errors printed to stderr

# Validate against an XSD schema
xmllint --noout --schema schema.xsd document.xml

# Validate against a DTD
xmllint --noout --dtdvalid schema.dtd document.xml

# Validate from stdin
echo '<root><unclosed>' | xmllint --noout -
# → :1: parser error : Premature end of data in tag unclosed line 1

Často kladené otázky

Jaký je rozdíl mezi správně utvořeným a platným XML?
Správně utvořené XML dodržuje syntaktická pravidla specifikace XML 1.0: jeden kořenový prvek, spárované a správně zanořené značky, atributy v uvozovkách. Platné XML jde dál a musí také odpovídat DTD nebo XSD schématu, které definuje povolené prvky, atributy a datové typy. Dokument může být správně utvořený, ale neplatný, pokud má správnou syntaxi, ale porušuje omezení schématu.
Může být XML dokument platný, ale ne správně utvořený?
Ne. Správnost je předpokladem platnosti. Pokud dokument porušuje jakékoli syntaktické pravidlo XML (neuzavřená značka, atribut bez uvozovek atd.), parsery z něj nemohou sestavit strom, takže validace schématu vůbec nemůže začít. Nejprve opravte chyby správnosti, pak ověřte shodu se schématem.
Jaké jsou nejčastější chyby při validaci XML?
Pět nejčastějších chyb je: neuzavřené nebo nespárované značky, nenahrazené ampersandy v textovém obsahu, hodnoty atributů bez uvozovek, chybějící kořenový prvek a nesprávná velikost písmen v názvech značek (XML rozlišuje velká a malá písmena). Většina z nich vzniká ručními úpravami XML nebo skládáním řetězců v kódu místo použití správného XML serializátoru.
Je validace XML totéž co lintování XML?
Překrývají se, ale nejsou totožné. Validace ověřuje, zda dokument odpovídá specifikaci XML (správnost) nebo schématu (DTD/XSD). Lintování jde obvykle dále a upozorňuje také na stylistické problémy: nekonzistentní odsazení, nepoužívané deklarace jmenných prostorů nebo nadbytečné výchozí hodnoty atributů. Nástroj xmllint z libxml2 kombinuje oboje: --noout ověřuje správnost, --schema přidává XSD validaci.
Čím se validace XML liší od validace JSON?
XML má přísnější a složitější gramatiku než JSON. XML vyžaduje spárované otevírací a uzavírací značky, podporuje atributy, jmenné prostory, smíšený obsah (text a prvky dohromady) a má více jazyků schémat (DTD, XSD, Relax NG, Schematron). Validace JSON ověřuje párování závorek, uvozované klíče a umístění čárek. JSON Schema existuje, ale je jednodušší než XSD. XML dokument je obvykle 2–3× větší než ekvivalentní JSON pro stejná data.
Validuje tento nástroj vůči XSD nebo DTD schématům?
Tento nástroj ověřuje pouze správnost: potvrzuje, že vaše XML dodržuje syntaktická pravidla specifikace XML 1.0. Nevaliduje vůči externím DTD nebo XSD schématům. Pro validaci schémat použijte xmllint --schema na příkazové řádce nebo lxml v Pythonu, který podporuje XSD i Relax NG.
Proč moje XML selže při validaci, i když vypadá správně?
Nejčastější neviditelné příčiny jsou: značka pořadí bajtů (BOM) před deklarací XML, zatoulané znaky za uzavíracím kořenovým tagem, nenahrazený ampersand v textovém obsahu (použijte &amp; místo toho) nebo prefix jmenného prostoru, který byl použit, ale nikdy deklarován. Zkopírujte své XML do hex editoru nebo ho spusťte přes xmllint --noout pro získání přesného bajtového posunu chyby.