У меня есть источник XML, который выглядит следующим образом -
В настоящее время XML выглядит следующим образом:
<FIXML xmlns="http://www.fixprotocol.org/FIXML-4-4" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Order ID="337228967" ID2="2867239" >
<Instrmt ID="764635" Src="101" CFI="" SecTyp="Swap" SubTyp="Multi-currency IRS" >
</Instrmt>
<Stip Typ="TEXT" Val="ASSETALL" />
<OrdQty Qty="250000" />
</Order>
</FIXML>
После преобразования я хочу, чтобы он выглядел следующим образом -
<FIXML xmlns="http://www.fixprotocol.org/FIXML-4-4" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Order ID="337228967" ID2="2867239" >
<Instrmt ID="764635" Src="101" CFI="" SecTyp="Swap" SubTyp="Interest Rate Swap" >
</Instrmt>
<Stip Typ="TEXT" Val="ASSETALL" />
<OrdQty Qty="250000" />
</Order>
</FIXML>
По сути, я хочу заменить текст SubTyp, когда SubTyp = "Мультивалютный IRS" заменить на SubTyp = "Процентный своп". Если SubType <> «Мультивалютный IRS», вернуть текущее значение.
Я пытаюсь использовать следующий код, но вижу только то же, что и ввод. Я не вижу замены значения
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:f="fixprotocol.org/FIXML-4-4">
<xsl:output method="xml" indent="yes" />
<xsl:template match="f:Instrmt/@SubTyp">
<xsl:choose>
<xsl:when test="f:Instrmt/@SubTyp='Multi-currency IRS'">
<xsl:text>Interest Rate Swap</xsl:text>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Новое в XSLT. Любая помощь будет высоко ценится.