🌐 XQuery HTML – Generate HTML Output from XML Data
🧲 Introduction – Why Learn XQuery HTML?
XQuery isn’t just for querying and filtering XML—it can also generate structured HTML documents directly from XML data. This is extremely useful for building HTML reports, dashboards, or XML-based web pages, without needing a separate templating engine. By embedding HTML tags within the return
clause, you can create dynamic, styled output entirely with XQuery.
🎯 In this guide, you’ll learn:
- How to write XQuery that outputs valid HTML
- Use of
for
,let
,where
, andreturn
to build HTML templates - How to wrap XML data in HTML tags
- Real-world HTML rendering examples using XQuery
📄 Sample XML: books.xml
<catalog>
<book id="101">
<title>Learn XQuery</title>
<author>Jane Doe</author>
<price>499</price>
</book>
<book id="102">
<title>Advanced XML</title>
<author>John Smith</author>
<price>699</price>
</book>
</catalog>
🧾 Example – Output HTML Book List
<html>
<body>
<h1>Book Catalog</h1>
{
for $b in doc("books.xml")//book
return
<div class="book">
<h2>{$b/title/text()}</h2>
<p>Author: {$b/author/text()}</p>
<p>Price: ₹{$b/price/text()}</p>
</div>
}
</body>
</html>
✅ Output in browser or viewer:
<h1>Book Catalog</h1>
<div class="book">
<h2>Learn XQuery</h2>
<p>Author: Jane Doe</p>
<p>Price: ₹499</p>
</div>
🧠 Key Concepts
- ✅ You can embed HTML tags directly in XQuery using angle brackets
- ✅ Use
{}
to evaluate XPath expressions inside HTML output - ✅ XQuery will return well-formed XML/HTML unless otherwise specified
🎨 Example – HTML Table Output
<html>
<body>
<table border="1">
<tr><th>Title</th><th>Author</th><th>Price</th></tr>
{
for $b in doc("books.xml")//book
return
<tr>
<td>{$b/title/text()}</td>
<td>{$b/author/text()}</td>
<td>{$b/price/text()}</td>
</tr>
}
</table>
</body>
</html>
✅ Outputs a full HTML table based on XML content.
🎯 Use Cases for XQuery HTML Output
Scenario | Use Case |
---|---|
📄 HTML reports | Generate sales/product reports from XML data |
📊 Dashboards | Display structured data as HTML from real-time feeds |
📦 CMS preview | Transform stored XML content into rendered HTML views |
📰 Feed rendering | Output RSS/Atom XML into readable blog format |
🔧 Output Type Declaration
To ensure browsers treat the result as HTML, set output like this (engine dependent):
declare option output:method "html";
✅ This is supported in BaseX, eXist-db, and other XQuery processors.
✅ Best Practices for XQuery HTML
- ✔️ Always wrap expressions in
{}
inside tags - ✔️ Use
let
for reusable values - ✔️ Keep HTML structure valid (start with
<html>
/<body>
if full doc) - ✔️ Style using CSS classes or inline styles
- ❌ Don’t forget to escape special characters (
&
,<
,>
) in raw text
📌 Summary – Recap & Next Steps
XQuery makes it easy to turn raw XML into styled, semantic HTML. Whether you’re generating web pages, dashboards, or HTML-based reports, it’s a powerful tool for transforming data into readable and shareable formats.
🔍 Key Takeaways:
- Embed HTML tags directly into
return
clauses - Use
{}
to inject XML content into HTML - Ideal for data presentation, dashboards, and live previews
⚙️ Real-world relevance: Used in dynamic reporting tools, e-learning modules, enterprise CMS previews, and XML web interfaces.
❓ FAQs – XQuery HTML
❓ Can XQuery output HTML tags directly?
✅ Yes. HTML is just XML in this context—as long as it’s well-formed.
❓ Do I need to close all tags in XQuery HTML?
✅ Yes. XQuery requires all tags to be valid XML.
❓ Can I use CSS with XQuery output?
✅ Yes. Use <style>
blocks or add class attributes for styling.
❓ Will browsers render XQuery output as HTML?
✅ If returned as text/html
or with a proper html
root node, yes.
❓ Can I embed dynamic values in the HTML?
✅ Yes. Wrap XPath expressions in {}
inside tags.
Share Now :