У меня есть следующий XML, который дал мне и который я передаю в моей XSLT для целей трансформации ..Получение значения атрибута из XML с помощью XPath различного
<Report xmlns:fpml="http://www.fpml.org/FpML-5/confirmation"
xmlns="http://www.eurexchange.com/EurexIRSFullInventoryReport"
name="CB202 Full Inventory Report">
<reportNameGrp>
<CM>
<acctTypGrp name="A4">
<ProductType name="Swap">
<currTypCod value="EUR">
<rateIndex name="EURIBOR">
<rateIndexTenor name="6M">
<idxSource>EURIBOR01</idxSource>
</rateIndexTenor>
</rateIndex>
</currTypCod>
<currTypCod value="GBP">
<rateIndex name="LIBOR">
<rateIndexTenor name="1Y">
<idxSource>LIBOR01</idxSource>
</rateIndexTenor>
</rateIndex>
</currTypCod>
</ProductType>
</acctTypGrp>
</CM>
</reportNameGrp>
</Report>
я разработал следующий XSLT для этого , который я позже буду использовать для целей преобразования. В приведенном ниже XSLT Я пытаюсь получить значения из приведенного выше XML:
<xsl:stylesheet version="1.0" xmlns:fpml="http://www.fpml.org/FpML-5/confirmation"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:eur="http://www.eurexchange.com/EurexIRSFullInventoryReport">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" omit-xml-declaration="yes" />
<xsl:template match="/eur:Report">
<Eurexflows>
<xsl:apply-templates select="eur:reportNameGrp/eur:CM/eur:acctTypGrp/eur:ProductType/eur:currTypCod/eur:rateIndex/eur:rateIndexTenor" />
</Eurexflows>
</xsl:template>
<xsl:template match="eur:rateIndexTenor">
<EurexMessageObject>
<CCPTradeId><xsl:value-of select="eur:CCPTradeId/@id" /></CCPTradeId>
<novDateTime><xsl:value-of select="eur:CCPTradeId/eur:novDateTime" /></novDateTime>
<feename><xsl:value-of select="eur:CCPTradeId/eur:feeType/@name"/></feename>
<feePayAmnt><xsl:value-of select="eur:CCPTradeId/eur:feeType/eur:feePayAmnt"/></feePayAmnt>
<feeCurrTypCod><xsl:value-of select="eur:CCPTradeId/eur:feeType/eur:feeCurrTypCod"/></feeCurrTypCod>
<feeDate><xsl:value-of select="eur:CCPTradeId/eur:feeType/eur:feeDate"/></feeDate>
<idxSource><xsl:value-of select="eur:idxSource"/></idxSource>
<rateIndexTenorname><xsl:value-of select="@name"/></rateIndexTenorname>
<rateIndexname>
<!--<xsl:value-of select="eur:report/eur:reportNameGrp/eur:CM/eur:acctTypGrp/@name/eur:ProductType/@name"/>-->
<xsl:for-each select="eur:report/eur:reportNameGrp/eur:CM/eur:acctTypGrp/eur:ProductType/eur:currTypCod">
<xsl:value-of select="eur:rateIndex/@name" />
</xsl:for-each>
</rateIndexname>
</EurexMessageObject>
</xsl:template>
</xsl:stylesheet>
Теперь, как вы можете видеть, что в выше XSL я хочу, чтобы получить значение атрибута <rateIndex name>
, не наступающем идеально. Значение <rateIndexname>
должно быть EURIBOR
, LIBOR
.
Просьба сообщить, как я могу получить значение атрибута name
на элементе rateIndex
. Пожалуйста, объясните, что пошло не так в моем XPath, примененном в моем XSLT.