Замена в тегах XML, слово или пару слов через XSLT
Здравствуйте помогите в xml сделать замену в атрибуте gotovnost. Нужно искать не всю строчку в атрибуте, а только слово или несколько слов и заменять на нужное. Например: gotovnost="8 декабря 2022, c 10 до 18 часов"
. Нужно в атрибуте gotovnost вместо слово декабрь поставить цифру месяца (12), вместо часов написать time, ну и тд. а все остальное осталось. Как это дописать в код XSLT 3
XML
<zakazy>
<params KodProverki=""
obrabotki1="Жесткий картон, 350 гр."
obrabotki1="KREATO_350_B3"
gotovnost="8 декабря 2022, c 10 до 18 часов"
/>
</zakazy>
XSL 3.0
<?xml version="1.0"?>
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" expand-text="yes" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:map="http://www.w3.org/2005/xpath-functions/map">
<xsl:output method="xml" encoding="utf-8" indent="yes" omit-xml-declaration="no"/>
<xsl:strip-space elements="*"/>
<xsl:mode on-no-match="shallow-copy"/>
<xsl:variable name="find_and_replace" as="map(xs:string, xs:string)">
<xsl:map>
<xsl:map-entry key="'Жесткий картон, 350 гр.'" select="'Картон 350 гр.'"/>
<xsl:map-entry key="'KREATO_350_B3'" select="'Креато 350 гр.'"/>
<!--Добавьте столько пар ключ/значение, сколько необходимо-->
</xsl:map>
</xsl:variable>
<xsl:template match="@*[.=map:keys($find_and_replace)]">
<xsl:attribute name="{local-name()}" select="map:get($find_and_replace, .)"/>
</xsl:template>
</xsl:stylesheet>
Желаемый результат XSLT 3.0
<?xml version='1.0'
encoding='utf-8' ?>
<zakazy>
<params KodProverki=""
obrabotki1Name="Картон 350 гр."
obrabotki1="Креато 350 гр."
gotovnost="8.12.2022, c 10 до 18 time"
/>
</zakazy>
Источник: Stack Overflow на русском