У меня есть Input xml, используя приведенный ниже DateTransform.xslt. Я могу изменить StartDate в поле «Элемент ввода» с строки на формат даты, я также хочу добавить одну и ту же StartDate (в формате Date) для всех элементов учетной записи. Я также хочу удалить пространства имен. Я новичок в XSLT. Я попробовал приведенное ниже преобразование, но не получил требуемый вывод, может кто-нибудь, пожалуйста, помогите мне в этом
Input.xml
<?xml version="1.0" encoding="UTF-8"?>
<Input>
<BankName>SBI</BankName>
<BranchCode>03</BranchCode>
<StartDate>20080331</StartDate>
<Account>
<AccountName>ABC</AccountName>
<AccountNumber>123</AccountNumber>
<Balance>-0000123345</Balance>
</Account>
<Account>
<AccountName>PQR</AccountName>
<AccountNumber>234</AccountNumber>
<Balance>000349015</Balance>
</Account>
<Account>
<AccountName>XYZ</AccountName>
<AccountNumber>345</AccountNumber>
<Balance>0949710</Balance>
</Account>
</Input>
DateTransform.xslt
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" >
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="Input">
<xsl:copy>
<xsl:copy-of select="node()[not(self::Account)][not(self::StartDate)]"/>
<xsl:variable name="in"><xsl:value-of select="StartDate"/>
</xsl:variable>
<xsl:variable name="date" select="xs:date(concat(
substring($in,1,4),'-',
substring($in,5,2),'-',
substring($in,7,2)))"/>
<StartDate>
<xsl:value-of select="format-date($date,'[D01]/[M01]/[Y0001]')"/>
</StartDate>
<Accounts>
<xsl:apply-templates select="Account"/>
</Accounts>
</xsl:copy>
</xsl:template>
<xsl:template match="Account">
<xsl:copy>
<xsl:copy-of select="node()"/>
<xsl:copy-of select="preceding-sibling::StartDate"/>
</xsl:copy>
</xsl:template>
Output.xml
<Input>
<BankName>SBI</BankName>
<BranchCode>03</BranchCode>
<StartDate
xmlns:xs="http://www.w3.org/2001/XMLSchema">31/03/2008</StartDate>
<Accounts xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Account>
<AccountName>ABC</AccountName>
<AccountNumber>123</AccountNumber>
<Balance>-0000123345</Balance>
<StartDate>20080331</StartDate>
</Account>
<Account>
<AccountName>PQR</AccountName>
<AccountNumber>234</AccountNumber>
<Balance>000349015</Balance>
<StartDate>20080331</StartDate>
</Account>
<Account>
<AccountName>XYZ</AccountName>
<AccountNumber>345</AccountNumber>
<Balance>0949710</Balance>
<StartDate>20080331</StartDate>
</Account>
</Accounts>
</Input>
Ожидаемый результат:
<Input>
<BankName>SBI</BankName>
<BranchCode>03</BranchCode>
<StartDate>31/03/2008</StartDate>
<Accounts>
<Account>
<AccountName>ABC</AccountName>
<AccountNumber>123</AccountNumber>
<Balance>-0000123345</Balance>
<StartDate>31/03/2008</StartDate>
</Account>
<Account>
<AccountName>PQR</AccountName>
<AccountNumber>234</AccountNumber>
<Balance>000349015</Balance>
<StartDate>31/03/2008</StartDate>
</Account>
<Account>
<AccountName>XYZ</AccountName>
<AccountNumber>345</AccountNumber>
<Balance>0949710</Balance>
<StartDate>31/03/2008</StartDate>
</Account>
</Accounts>
</Input>