Я использую XSLT для преобразования XML-схемы в формат JSON, где есть фасет шаблона, как показано ниже:
<simpleType>
<restriction base="string">
<pattern value="[A-Z0-9a-z_]+(@\{UUID\}|@\{TIMEMILLIS\})?[A-Z0-9a-z]*"/>
</restriction>
</simpleType>
Хотя для выхода из регулярного выражения требуются символы '\', при преобразовании в JSON их необходимо дополнительно экранировать.
Я использую XSLT 3.0 с Saxon следующим образом:
<if test="child::xsi:simpleType/child::xsi:restriction/child::xsi:pattern">
<text>,"pattern":"</text><value-of select="replace(attribute::value,'\\','\\')"/><text>"</text>
</if>
Выход по-прежнему составляет
"pattern": "[A-Z0-9a-z_]+(@\{UUID\}|@\{TIMEMILLIS\})?[A-Z0-9a-z]*"
в формате JSON. Я пробовал много комбинаций, а функция replace () здесь не работает.
Я, наверное, что-то упустил. Я имею в виду определение функции из здесь .
Любая помощь будет оценена.