Ochrestack

Xsdtrail quick start

Installing Xsdtrail, your first Design tab, and the licence. Back to the Xsdtrail product page.

Install (IntelliJ IDEA 2025.1 or later, or another JetBrains IDE on the 2025.1 platform with XML support)

  1. In the IDE, open Settings > Plugins > Marketplace, search for Xsdtrail (once the listing is live; it has not been submitted yet), and click Install.
  2. Restart the IDE if asked.

Xsdtrail registers no file type and changes no file type association, so installing it does not change how your files open.

Open the Design tab

  1. Open any file whose root element is xs:schema or wsdl:definitions. The extension does not matter: .xsd, .XSD, .wsdl and .xml all work, because the tab is offered from the file's content.
  2. Two tabs appear under the editor: Text and Design. Click Design.
  3. The diagram opens at the first level: global elements and types, and the include, import and redefine lines of the file. It builds in the background, so the Text tab stays typeable. The status line under the diagram shows the number of files, the number of components and the build time.
IntelliJ IDEA with the project invoice-gateway open and UBL-Invoice-2.1.xsd in the Design tab: the file box, its three imports with the files they resolved to, and Invoice unfolded into elements labelled with the file that declares each; the Text and Design tabs under the diagram; the status line '14 files, 2843 components, built in 967 ms'
The OASIS UBL 2.1 Invoice schema in the Design tab. The tabs are under the editor: Text and Design.

Read the diagram

Toolbar: Expand All (unfolds up to 4,000 boxes, counting those already shown; when the next unfold would pass that, it stops and says so), Collapse All, Zoom In, Zoom Out, Actual Size, Fit to Window, Rebuild Diagram. Ctrl+mouse wheel zooms around the pointer. The search box on the right finds a global element or type by name; when several match equally well, the status line says "Match 1 of 2" with the file name, and Enter steps to the next.

The editor split on UBL-CommonAggregateComponents-2.1.xsd: the caret on the cac:PostalAddress reference at line 22479 on the left, and the cac:PostalAddress box selected in the Design tab on the right
Text on the left, Design on the right: the selection follows the caret.

Multi-file schemas (licence)

xs:include, xs:import and xs:redefine are followed through relative schemaLocation values. An import with a namespace but no schemaLocation, or with one that does not resolve, is matched by targetNamespace:

  1. against schema files in the same folder (.xsd, .wsdl and .xml, any case);
  2. then against .xsd files elsewhere in the project;
  3. then against .xsd files in the project's libraries, for example a JAR of generated contracts.

Types and elements from other files appear in place, labelled with their file name. When a schema file is added, renamed or changed on disk, for example after a pull or a branch switch, the diagram rebuilds. While the IDE is still indexing, the project and library search waits: the import says so, and the diagram rebuilds when indexing ends. Nothing is ever downloaded: a schemaLocation that is a URL is reported as not downloaded.

WSDL operation view (operation names free, messages with a licence)

For a WSDL 1.1 file the Design tab has two sections. Types holds the schemas inline in wsdl:types. Services and operations lists each service, its ports with their addresses, each port's binding with SOAP 1.1 or 1.2 and the document or rpc style, and the operations; without a licence you see all of that for the open file, with each operation locked. With a licence an operation unfolds to its input, output and fault messages, their parts, and the XSD elements or types those parts reference. A missing message, part element or binding, and a binding that no port uses, appear as red boxes that say what is missing. An abstract WSDL, with operations in a wsdl:portType and no binding, lists those operations, each naming its portType.

checkVatService.wsdl in the Design tab: binding checkVatBinding (SOAP 1.1 · document), operation checkVat with its input and output messages, their parameters parts, and the fields of checkVat and checkVatResponse
The EU's VIES checkVatService.wsdl with a licence, unfolded from the binding to the fields of each message.
The same WSDL without a licence: service checkVatService, port checkVatPort with its address, binding checkVatBinding (SOAP 1.1 · document), and the operations checkVat and checkVatApprox, each locked
Without a licence: service, port, binding and operation names; each operation's messages are locked.

Licence and trial

Without a licence, every box from another file is shown with its name, its file label, a lock and "Locked: needs a licence". In a WSDL, each operation is shown by name and locked; double-clicking it says what the licence adds. Nothing pops up. Whenever something in the diagram is locked, a line under the status line reads "Free: this file and WSDL operation names. Other files and operation messages are locked." followed by Get a licence or trial, which opens the IDE's own licence dialog only when you click it. In IntelliJ IDEA Community the licence dialog is also under Help > Manage Licenses….

When the trial or licence becomes active, open Design tabs unlock by themselves; nothing needs reopening. The licence is a JetBrains Marketplace perpetual licence: $12 once, personal or commercial, every update included, nothing to renew. A 30-day trial unlocks everything, and the free features never lock.

UBL Invoice without a licence: boxes from the common-component files grey with a lock, the file name and 'Locked: needs a licence'; under the diagram, 'Free: this file and WSDL operation names. Other files and operation messages are locked. Get a licence or trial'
Without a licence: the open file works, boxes from other files are locked, and one line explains why.

Known limits

Privacy

Xsdtrail makes no network calls and collects nothing: no telemetry, no analytics, no personal data. It reads only the files of the open project: the file you open, the files it includes or imports, and, to match imports by namespace, the start of schema files in the same folder and of the .xsd files in the project and its libraries. Licence status comes from your IDE's JetBrains Marketplace licensing. See also the privacy policy.

Support

Email [email protected] with the IDE version (Help > About) and, if you can, the schema or a reduced copy of it. Bug reports and feature requests are welcome at the same address.