
XML represents structured information with named elements, attributes, and text. Identify the root and its children, then check how names and values are interpreted. This FAQ uses fictional inventory that also appears in the downloadable exercises.
What am I looking at?
<catalog xmlns="urn:yenra:catalog">
<item id="A1">
<name>Desk & Lamp</name>
<quantity>2</quantity>
</item>
</catalog>The root catalog contains an item, which has an id attribute and two children. A parser returns the name “Desk & Lamp”: the serialized entity reference represents an ampersand. The namespace declaration associates unprefixed element names with an example vocabulary.
XML supplies syntax; a schema or application assigns meaning to quantity. It must establish types, units, and business rules. The W3C XML specification defines basic document and processor rules.
Why does the parser reject the file?
| Symptom | Look for | Repair |
|---|---|---|
| Mismatched tag | Spelling, case, or nesting mismatch | Close the most recently opened element correctly. |
| Error at ampersand | Unescaped ampersand in text | Use & through an XML serializer. |
| Multiple roots | Two top-level elements | Use the root structure expected by the contract. |
| Attribute error | Unquoted or duplicate attribute | Quote values and keep each name once. |
| Encoding error | Bytes disagree with encoding declaration | Identify the actual encoding and save a correct copy. |
Inspect the first error and the preceding line: a missing quote can produce a later error location. Preserve the original before editing. Stripping unfamiliar characters until a file parses can corrupt names and identifiers.
CDATA can hold text that otherwise needs escaping, with its own closing-delimiter restriction. It still represents text. A consumer does not automatically process a string inside it as a second XML document.
Why does my query find nothing?
A namespaced element is identified by namespace URI and local name. Prefixes are shorthand bindings. Bind c to urn:yenra:catalog and query /c:catalog/c:item. Choosing another prefix with the same binding preserves the intended names.
The Namespaces specification distinguishes default namespaces on elements from unprefixed attributes. In this example, id is an unprefixed attribute. A namespace URI identifies a vocabulary; a parser need not download a page from that URI to use it.
Inspect the expanded root name, query bindings, and starting context when a query finds nothing. Removing namespaces can combine names the producer deliberately kept separate.
Does well-formed mean valid?
Well-formed XML follows syntax rules. A schema adds a contract for elements, order, repetition, and types. Application rules add checks such as whether a stock identifier exists. Treat these as separate gates.
In the XML practice pack, invalid-quantity.xml parses but fails the supplied schema because its quantity is negative. A nonexistent warehouse product could pass that schema yet fail a database lookup. These are different failures requiring different repairs.
An XML declaration is optional in many XML 1.0 documents, though encoding rules still apply. The .xml extension is a convention. Use a parser and the required schema to check actual bytes.
How should I edit and share XML?
Use an editor that preserves the intended encoding. For generated files, use an XML library to write elements and attributes. Read the saved result back and compare significant values. Pretty-printing changes whitespace, which can matter in mixed content and signed documents.
Choose XML or another format according to the receiving contract. XML element order, namespaces, attributes, and interleaved text need explicit mapping when converting to JSON or a table. A generic conversion may discard distinctions your application needs.
Inspect shared files for personal information, internal paths, and identifiers. Configure limits for outside inputs and check the actual parser behavior. Continue with the parser guide to run the sample catalog in code.