Publishing and transforming XML web content using XSLT
You can now publish XML files as web content, and have the XML source be automatically transformed to a web page using XSL transforms (XSLT). This feature is available from build 2025-08-26
. The XSLT can transform the XML to either Markdown or directly to HTML. By doing this you can publish the content directly using its source in XML, without worrying about having to update any corresponding content pages. The XSLT will automatically transform the underlying source data to its presentable form when a user wants to see it.
Example
Consider the following source XML file. It describes a harmonized interface, and the XML acts as a definition for the interface:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="/Xsl/InterfaceToMarkdown.xslt"?>
<interface xmlns="urn:nfi:iot:hi:1.0" id="urn:nfi:iot:hi:actuator:analogOutput:1.0">
<description>Generical analog output.</description>
<sensorData>
<field name="Analog Output" use="Optional" m="true" type="q" description="Momentary output value."/>
<field name="Analog Output, Raw" use="Optional" m="true" type="integer" description="Momentary raw binary output value."/>
<field name="Analog Output, Bits" use="Optional" s="true" type="integer" description="Number of bits of precision of output value."/>
<field name="Analog Output, Range, Low" use="Optional" s="true" type="q" description="Lowest possible value."/>
<field name="Analog Output, Range, High" use="Optional" s="true" type="q" description="Highest possible value."/>
<comment><![CDATA[The output value must be reported using the correct precision and unit. Examples of units that could be used:
* `%` - for instance 0-100 %
* `mA` - for instance 4-20 mA
* `V` - for instance 0-10 V]]></comment>
</sensorData>
<controlParameters>
<parameter name="Analog Output" use="Mandatory" type="numeric" range="RangeElement" description="Desired state of output."/>
<parameter name="Analog Output, Raw" use="Optional" type="integer" range="RangeElement" description="Desired raw state of output. The int version must always be supported. If the range supports numbers larger than that supported by the int type, the device must also support the long version."/>
</controlParameters>
</interface>
Notice the second row. It contains a processing instruction that references an XSL Transform document that can be used to transform the XML:
<?xml-stylesheet type="text/xsl" href="/Xsl/InterfaceToMarkdown.xslt"?>
You can review the XSLT transform referenced here. See if you can see how it works. Otherwise, review the XSLT tutorial on w3schools to learn how XSLT works.
XSLT on the Neuron
On the TAG Neuron®, the XSL Transform procedure works a bit differently than on a traditional web server. In the traditional case, it is the browser that transforms the XML into a presentable page. This means that all the information is returned, including information you might not want to present. The process is also somewhat slowed down, since two requests have to be made.
On the Neuron, it is the the web server that transforms the XML into a presentable page, not the browser. This means that only one request has to be made. Furthermore, the web server can transform the content in two passes, simplifying the construction of the XSLT: The developer can choose to transform the XML to Markdown first. This Markdown then gets implicitly transformed into HTML in a second step:
A developer can also choose to transform the XML directly to HTML, as in the traditional case. Still, on the Neuron, this transform would be performed on the server:
An added benefit of transforming the content on the web server, is that you get consistent results regardless of browser used to view the page.
Embedding PDF Documents in Markdown
It is now (from build 2025-07-24
) possible to embed a PDF document into a Markdown page using a simple code block. The basic syntax is as follows:
```application/pdf:PDF Document
JVBERi0xLjcNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL....
....
```
The code block is rendered to an embedded object in HTML (<embed/>
), which, if the browser supports this tag, will display the PDF document directly embedded in the text.
This can be used for multiple purposes:
- Sharing and displaying documents in posts or documentation.
- Using PDF documents in KyC.
- Uploading PDF documents to smart contracts, for documentation purposes.
- etc.
Example:
This makes it seamless, for instance, to include PDF documents in idendity applications. It will be displayed embedded in the application for the operator:

Public Publish/Subscribe Web Service
Nodes that have been declared as open in XMPP Publish/Subscribe can be accessed as RSS Feeds (from build 2025-07-15
). The feed contains links to the most recent items published on the node. Accessing the links will return the XML of the corresponding item.
Syntax of the URLs to access the RSS feed and corresponding items is:
https://DOMAIN/PubSub/NODE_ID
URLs of this type will return an RSS Feeds of the most recent items of the public Publish/Subscribe node with the name NODE_ID
.
https://DOMAIN/PubSub/NODE_ID/ITEM_ID
URLs of this type will return the XML of the item ITEM_ID
published on the public Publish/Subscribe node with the name NODE_ID
.
Examples
You can try these examples to try the API:
https://lab.tagroot.io/PubSub/ReleaseNotes
https://lab.tagroot.io/PubSub/ReleaseNotes/2025-07-15/Build_2025_07_15_This_release_contains_the_following
The ReleaseNotes
publish/subscribe node is also a Web Node, i.e. used for publishing information online. Compare the source publish/subscribe information accessible via the links above, to the corresponding web links:
Reverse Proxy Domain
Earlier articles [1] [2] [3] describe how the Neuron® can be used as a reverse proxy, and how web folders on the Neuron® can be mapped to resources on remote web servers. From build 2025-07-15
it is also possible to map an entire domain via the reverse proxy to a remote web server.
Configuration is done in the gateway.config
file. You can also access the contents of this file via the Sources & Nodes option and then Gateway Configuration and Web Server from the Administrator portal.

Enter the local domain, and information about the remote web server to which the requests for this domain will be forwarded. Note that you will need to have defined the local domain as the domain or alternative domain of the Neuron® for the reverse proxy to work.

Security Note: Always use TLS encryption, even in the internal network, especially if sensitive information is communicated. Otherwise the TLS encryption used between the client and the domain only reaches the Neuron®, and the connection in the internal network is unencrypted, making it possible to eavesdrop on sensitive communication.
Geo-spatial contract parameters in LegalLab
LegalLab has been updated to support geo-spatial contract parameters. An example contract is also available showing how geo-spatial parameters in contracts can work. Make sure the Neuron® to which you are connected is updated to include support for geo-spatial parameters.
Adding to templates
A new button is available that you can click to add a geo-spatial parameter to a contract template you are designing:

Note: When editing geo-spatial parameter values, use GPS Coordinate syntax.
Geo-spatial Publish/Subscribe
When signing contracts with geo-spatial parameters, one of the parmeters can be used to give the contract a location. The example contract contains one such parameter. This means the contract, when signed, is assigned the geo-spatial coordinate provided in the parameter. The contract position is also published using the Neuron’s geo-spatial publish/subscribe service. If the visibility of the contract is set to Public & Searchable, the publication will be persisted. Otherwise, the publication will be ephemeral, i.e. shown only at the time of signature.
Posts tagged #features
No more posts with the given tag could be found. You can go back to the main view by selecting Home in the menu above.