1 — The interface
Debug XML Tool fits in a single window, organised into five fixed areas. This chapter describes them one by one: what they hold, what makes them appear, and how to rearrange them.
None of these areas opens from a menu: they react to what you do.
1.1 The five areas
┌──────────────────────────────────────────────────────────────────────┐
│ Toolbar ⚙ [IDLE] message │
├───────────────┬──────────────────────────────────┬───────────────────┤
│ │ │ │
│ Explorer │ Editor │ Structure │
│ │ (file tabs) │ (active file) │
│ │ │ │
├───────────────┴──────────────────────────────────┴───────────────────┤
│ Bottom panel — 13 tabs (console, inspection, analysis, validation) │
└──────────────────────────────────────────────────────────────────────┘
| Area | Contents | When it appears |
|---|---|---|
| Toolbar | every global command, the debugger state | always |
| Explorer (left) | the workspace tree | as soon as a workspace is open |
| Editor (centre) | your files, one tab each | as soon as a file is open |
| Structure (right) | the logical tree of the active file | depending on the type of the active file |
| Bottom panel | 13 inspection and analysis tabs | always |
While no workspace is open, the central area shows the welcome screen: XSLT/XML Debugging IDE, the prompt « Open a workspace ( 📂 ) or drag and drop a folder here », and a reminder of the main shortcuts.
1.2 The toolbar
Every button is icon-only: hover over one to read its role and its shortcut. They read from left to right in four groups.
Workspace and files
| Button | Role | Active |
|---|---|---|
| New file (Ctrl+N) | creates a file from a skeleton | always |
| Open workspace folder | chooses the working folder | always |
| Close workspace | closes the folder and its tabs | if a workspace is open |
Transformation and debugging
| Button | Role | Active |
|---|---|---|
| Transformation scenarios | saved configurations, re-run with one click | always |
| Transformation settings (⚙) | files, output format, parameters, entry point | always |
| Run transformation (F5) | runs — and stops on your breakpoints | IDLE |
| Step Into (F11), Step Over (F10), Step Out (Shift+F11) | stepping | PAUSED |
| Run to cursor (Ctrl+F10) | resumes and stops at the cursor line | PAUSED |
| Resume execution (F8) | resumes until the next breakpoint | PAUSED |
| Stop execution (Shift+F9) | interrupts the session | RUNNING or PAUSED |
The six debugging commands are greyed out outside a pause. This is deliberate: whether they are enabled tells you on its own where execution stands.
Tools
| Button | Role | Active |
|---|---|---|
| Validate active file | validation on demand of the open file | always |
| Validate an XML against a schema (XSD or DTD) | opens a menu: validate against an XSD, a DTD, or associate one | always — greyed out while a validation runs |
| Format document (Shift+Alt+F) | re-indents the active file | always |
| Compare two files (structural XML diff) | structural comparison | always |
| Run with Saxon Profiler | measures time per template | IDLE |
State — at the right of the bar
Two pieces of information, side by side, at the far right:
- the state badge —
IDLE,RUNNINGorPAUSED; - a status message, which repeats the last significant action: No workspace open, XML source set: input.xml, Finished in 136 ms, or an error message.
This is where configuration diagnostics appear — not in the console. If a run produces nothing, look at this message first.
The Language selector and the Settings button occupy the end of the bar (§1.8).
1.3 The explorer
The explorer shows the tree of your workspace, filtered: only the files that concern the tool
appear (.xml, .xsl, .xslt, .xsd, .dtd, .xspec…), each with an icon of its own type.
Your images, your scripts and your hidden folders do not clutter it.
- Double-click a file: it opens in a tab.
- Right-click: the context menu, which gathers most of the per-file actions.
The menu adapts to what you pointed at:
| On a file | On a folder | On empty space |
|---|---|---|
| Open | New file… | Validate workspace |
Set as XML source (.xml) | New folder… | |
Set as main XSL (.xsl/.xslt) | Validate folder | |
| Compare with… | Delete | |
Hierarchy/dependencies (.xsl, .xslt, .xsd) | ||
Use as XML catalog (.xml) | ||
Run XSpec tests (.xspec) | ||
Generate XSpec skeleton (.xsl/.xslt) | ||
| Delete |
Deletion asks for confirmation — « Permanently delete "…"? This action cannot be undone. » — and really does act on the disk.
While no workspace is open, the explorer shows No workspace open — open a folder to get started.
1.4 The editor
Each open file takes a tab. The active tab determines a great deal: the contents of the structure panel, the target of the Validate button, of the Format button, and — failing an explicit configuration — the stylesheet that F5 runs.
Three things to spot:
- the gutter (to the left of the line numbers) takes your breakpoints with a single click;
- the dot « • » before a tab name signals unsaved changes. It disappears on saving — and also if you undo all your changes: it reflects the real difference from the file on disk, not the fact of having typed;
- the wavy underlines signal errors detected as you type (chapter Editing).
1.5 The structure panel
The right-hand panel shows the logical tree of the active file. Its contents depend on the file type, and it switches automatically when you change tab:
| Active file | Panel | Contents |
|---|---|---|
.xml | XML STRUCTURE | the tree of the document nodes |
.xsd | XSD STRUCTURE | the schema tree: sequences, choices, types |
.xsl / .xslt | XSL STRUCTURE | the outline of the stylesheet |
A stylesheet outline is grouped by category, each with its count: Match templates, Named
templates, Functions, Variables / params, Keys, Modules. The match templates
show their pattern, their mode and their priority.
Double-click an entry: the matching name is selected in the editor.
Two behaviours worth knowing:
- a stylesheet outline follows your edits live, without saving — add a template and it appears within the second;
- the XML STRUCTURE and XSD STRUCTURE views are built when the file is opened or when the tab changes: switch tab and come back to rebuild them;
- a malformed file gives Malformed XML — structure unavailable. A stylesheet with no top-level declaration gives No top-level declarations.
The ✕ in the header hides the panel; it comes back with the next file.
Only global variables and parameters appear in the outline. Variables local to a template are deliberately absent from it.
1.6 The bottom panel
Thirteen tabs, icon-only: hover to read their names.
| Tab | What it shows | Chapter |
|---|---|---|
| Console | messages, errors, transformation trace | §1.7 |
| Variables | XSLT variables and current node at the pause | Debugging |
| XPath Evaluator | evaluation of XPath expressions | Debugging |
| Call Stack | chain of templates up to the breakpoint | Debugging |
| Watch XPath | expressions re-evaluated at every pause | Debugging |
| Profiler | time per template, hot spots, call tree | Analysing |
| Templates | templates declared, fired or not | Analysing |
| Search | search and replace across the whole workspace | Navigating & refactoring |
| References | uses of an XSLT symbol | Navigating & refactoring |
| Hierarchy | graph of xsl:include / xsl:import | Navigating & refactoring |
| Problems | results of a batch validation | Validating & comparing |
| Comparison | differences between two files | Validating & comparing |
| XSpec | results of XSLT unit tests | Validating & comparing |
An empty panel always tells you what will fill it rather than staying silent: Run the profiler (⏱) to analyze performance., Right-click a folder in the explorer to validate it, No variables — the debugger is not paused.
Detaching a panel
The bottom panel is wide but not tall — which suits a console, less so a call tree. Any tab can be moved to the right-hand column, where it gains height:
- Right-click the tab;
- Detach to right.
The detached panel takes a header with its name and a button to send it back. Reattach to bottom puts it back in place.
Only one panel can be detached at a time. If you detach a second one, the first returns to the bottom automatically and a fleeting message tells you so — « … was automatically reattached to the bottom ». Nothing is lost, nothing overlaps.
1.7 The console
First tab of the bottom panel, under the LOCAL header. It receives:
- the
xsl:messagemessages from your stylesheets, as execution proceeds; - the trace of each transformation: files used, format, duration;
- auto-configuration decisions, prefixed
[Auto-config]; - errors, prefixed
[ERROR].
Two buttons in its bar: Clear console and Copy all. A third collapses or expands it to free space for the editor.
Right-clicking in the console offers Copy (the selection), Select all and Clear.
The console traces what the engine does. Configuration errors — no XSLT designated, no XML in the workspace — appear instead in the status message on the toolbar (§1.2).
1.8 Adapting the interface
The Settings button (the last icon on the toolbar) opens a menu in three sections.
| Section | Setting | Effect |
|---|---|---|
| Appearance | Theme | Dark or Light — applies immediately, editor included |
| Appearance | Language | French, English, Spanish, Russian, Chinese — without restarting |
| Appearance | Font Size | also Ctrl + +, Ctrl + −, Ctrl + 0 (back to the default size) |
| Editor | Word Wrap | folds long lines |
| Editor | Minimap | miniature preview of the file to the right of the editor |
| Editor | Highlight Current Line | brings out the cursor line |
| Preferences | Live validation | switches on or off the detection of errors as you type |
| Preferences | Output back-mapping | lets you jump from the output back to the instruction that produced it |
| Preferences | XML Catalogs… | resolution of public/system identifiers |
Changing language and theme is instant and two-way: the whole interface follows, including the texts of empty panels and the editor.
1.9 What the application remembers
From one session to the next, without asking you anything:
| Remembered | Scope |
|---|---|
| The last workspace opened | application |
| The size and position of the window | application |
| Theme, language, font size | application |
| Live validation, back-mapping | application |
| Your transformation scenarios | workspace |
| Your watch expressions (Watch XPath) | workspace |
| The XML file ↔ schema associations | workspace |
| The XML catalogues declared | workspace |
Two different workspaces therefore have their own scenarios, their own watches and their own catalogues — without interference.
What next
- Editing — completion, formatting, validation as you type.
- Transforming & exporting — formats, parameters, scenarios.
- Debugging — breakpoints, stepping, inspection.
- Analysing — profiler, template coverage, back-mapping.
- Navigating & refactoring — definitions, references, renaming, search across the workspace.
- Validating & comparing — batch validation, catalogues, structural comparison, XSpec tests.
- Reference — every shortcut, button, menu and gesture, in tables.