您好,请帮我在 xml 中替换gotovnost属性。您不需要查找属性中的整行,而只需查找一个或几个词,然后将其替换为您需要的词。例如: gotovnost="8 декабря 2022, c 10 до 18 часов"
。有必要在gotovnost属性中放置月份数 (12)而不是December一词,写时间而不是小时,等等。剩下的一切。如何将此添加到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>
请尝试以下 XSLT。
xsd:analyze-string
对于这种情况,它使用了一个非常有用的运算符。让我们将整个报价分为 3 组:
regex-group(1)
- 对于数字。regex-group(2)
- 对于被空格包围的单词。xsl:non-matching-substring
对于其他一切。XSLT