I'm using XSLT 3.0 to transform this document JSON to this document XML with the function json-to-xml,
<xsl:variable name="input-as-xml" select="json-to-xml(.)"/>
From saxon I pass this json like document XML:
String XML = "<root>" + JSON + "</root>";
I get an XML when call the function json-to-xml:
<?xml version="1.0" encoding="utf-8"?>
<map
xmlns="http://www.w3.org/2005/xpath-functions">
<string key="_D">urn:oasis:names:specification:ubl:schema:xsd:Invoice-2</string>
<string key="_S">urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2</string>
<string key="_B">urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2</string>
<array key="Invoice">
<map>
<array key="ID">
<map>
<string key="IdentifierContent">123</string>
</map>
</array>
<array key="IssueDate">
<map>
<string key="DateContent">2011-09-22</string>
</map>
</array>
<array key="InvoicePeriod">
<map>
<array key="StartDate">
<map>
<string key="DateContent">2011-08-01</string>
</map>
</array>
<array key="EndDate">
<map>
<string key="DateContent">2011-08-31</string>
</map>
</array>
</map>
</array>
<array key="AccountingSupplierParty">
<map>
<array key="Party">
<map>
<array key="PartyName">
<map>
<array key="Name">
<map>
<string key="TextContent">Custom Cotter Pins</string>
</map>
</array>
</map>
</array>
</map>
</array>
</map>
</array>
<array key="AccountingCustomerParty">
<map>
<array key="Party">
<map>
<array key="PartyName">
<map>
<array key="Name">
<map>
<string key="TextContent">North American Veeblefetzer</string>
</map>
</array>
</map>
</array>
</map>
</array>
</map>
</array>
<array key="LegalMonetaryTotal">
<map>
<array key="PayableAmount">
<map>
<number key="AmountContent">100.00</number>
<string key="AmountCurrencyIdentifier">CAD</string>
</map>
</array>
</map>
</array>
<array key="InvoiceLine">
<map>
<array key="ID">
<map>
<string key="IdentifierContent">1</string>
</map>
</array>
<array key="LineExtensionAmount">
<map>
<number key="AmountContent">100.00</number>
<string key="AmountCurrencyIdentifier">CAD</string>
</map>
</array>
<array key="Item">
<map>
<array key="Description">
<map>
<string key="TextContent">Cotter pin, MIL-SPEC</string>
</map>
</array>
</map>
</array>
</map>
</array>
</map>
</array>
</map>
Is it correct pass this XML as parameter?
<xsl:apply-templates select="$input-as-xml" />
Please, any suggestion in how can I use templates to transform the XML that I want? I just want some suggestions.
The information about prefixes does not seem to be included in the JSON so I have decided to declare them as parameters and I have assumed you know the name/key of the element to start with (e.g.
Invoice
):