Следуйте за деталями для лучшего понимания.
У меня есть этот пример ввода
<?xml version="1.0" encoding="UTF-8"?>
<csv-xml>
<record>
<csv-field-1>1</csv-field-1>
<csv-field-2>4919</csv-field-2>
<csv-field-3>3520656</csv-field-3>
<csv-field-4>1</csv-field-4>
<csv-field-5>17/1/19</csv-field-5>
<csv-field-6>17/1/19</csv-field-6>
<csv-field-7/>
</record>
<record>
<csv-field-1>2</csv-field-1>
<csv-field-2>4919</csv-field-2>
<csv-field-3>03451141</csv-field-3>
<csv-field-4>1</csv-field-4>
</record>
<record>
<csv-field-1>3</csv-field-1>
<csv-field-2>4919</csv-field-2>
<csv-field-3/>
</record>
</csv-xml>
Это мой код
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="csv-xml">
<xsl:copy>
<xsl:apply-templates select="record[1]/csv-field-5" />
<xsl:value-of select="
concat(format-number( number( substring-before(.,'/')), '00') , '/',
format-number( substring-before(substring-after(.,'/'),'/'), '00'), '/',
substring-after(substring-after(.,'/'),'/')
)
" />
</xsl:copy>
<xsl:variable name="header" select="record[1]" />
<orders>
<order POref="{$header/csv-field-2}" accountNo="{$header/csv-field-3}" orderDate="$date1">
<orderItems>
<xsl:for-each select="record[position() != 1 and position() != last()]">
<orderItem productCode="{csv-field-3}" quantity="{csv-field-4}"/>
</xsl:for-each>
</orderItems>
</order>
</orders>
</xsl:template>
</xsl:stylesheet>
Это мой текущий вывод.
<?xml version="1.0" encoding="UTF-8"?>
<csv-xml>17/1/19NaN/01/19
17/1/19
2
4919
03451141
1
3
4919
</csv-xml>
<orders>
<order POref="4919" accountNo="3520656" orderDate="$date1">
<orderItems>
<orderItem productCode="03451141" quantity="1"/>
</orderItems>
</order>
</orders>
The $Переменная date1 должна иметь значение результата этой функции в XPath для csv-field-5
concat(
format-number( number( substring-before(.,'/')), '00') , '/',
format-number( substring-before(substring-after(.,'/'),'/'), '00'), '/',
substring-after(substring-after(.,'/'),'/')
) " />
Мне нужно выше, потому что csv-field-5 не является форматом DD / MM / YY.
Это то, чего я пытаюсь достичь.
</csv-xml>
<orders>
<order POref="4919" accountNo="3520656" orderDate="17/01/19">
<orderItems>
<orderItem productCode="03451141" quantity="1"/>
</orderItems>
</order>
</orders>