#json #xml #xslt #xslt-3.0 #saxon-js
#json #xml #xslt #xslt-3.0 #саксонский-js
Вопрос:
Я пытаюсь преобразовать входные данные json в xml с помощью saxonjs, это упрощенная версия моего кода
const fs = require('fs'); const saxonJS = require('saxon-js'); const input = JSON.stringify({issue: {id: 'A001', number: 200 }}); saxonJS.transform({ stylesheetLocation: './issues.sef.json', sourceType: 'json', sourceText: JSON.stringify(input), destination: 'serialized'}, 'async').then(data =gt; { console.log(data.principalResult); res.status(200).send('Ok'); }); }) .catch(err =gt; { console.log(err); res.status(500).send('error'); });
Моя таблица стилей xslt выглядит так:
lt;?xml version="1.0" encoding="utf-8"?gt; lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"gt; lt;xsl:output method="xml" encoding="utf-8" indent="yes"/gt; lt;xsl:template match="/"gt; lt;Issue xmlns="urn:mycompany:2021"gt; lt;/Issuegt; lt;/xsl:templategt; lt;/xsl:stylesheetgt;
Результат всегда пуст или, точнее lt;?xml version="1.0" encoding="utf-8"?gt;
, если я заменю match=»/» на match=»проблема» или «/проблема», результат будет тот же, что и раньше, что я делаю не так?
Ответ №1:
/
соответствует узлу документа или узлу фрагмента документа, ваш элемент не является узлом, а картой XPath 3.1, используется match="."
для сопоставления любого элемента, match=".[. instance of map(*)]"
для сопоставления любого элемента карты.