最近我有一个要求,我需要将Idoc-xml转换为纯文本.txt文件并转移到外部合作伙伴。我是这个XSLT编程的新手,所以任何示例或链接都会非常有用。
我的XML看起来像这样:
<info>
<Segment1>
<Segment2>
<Segment3>
<PO>876522</PO>
</Segment3>
<Segment4>
<Date>20171224</Date>
</Segment4>
<Segment5>
<Invoice>312</Invoice>
</Segment5>
</Segment2>
</Segment1>
<Segment6>
<Segment7>
<Material>435-A90</Material>
<Quatity>7</Quatity>
<Price>12.00</Price>
<Expiry>01.12.2020</Expiry>
<Item>780AD09</Item>
<Descp>Pencil-56AP</Descp>
</Segment7>
</Segment6>
<Segment6>
<Segment7>
<Material>901-K78</Material>
<Quatity>7</Quatity>
<Price>12.00</Price>
<Expiry>25.01.2028</Expiry>
<Item>90KL76Y</Item>
<Descp>Rubber-90AP</Descp>
</Segment7>
</Segment6>
<Segment6>
<Segment7>
<Material>123-65D</Material>
<Quatity>10</Quatity>
<Price>67.00</Price>
<Expiry>01.01.2020</Expiry>
<Item>LOERF90</Item>
<Descp>Pen-19EU</Descp>
</Segment7>
</Segment6>
</info>
我的预期输出:
876522|24.12.2017|312|435-A90|7|12.00|01.12.2020|780AD09|Pencil-56AP
876522|24.12.2017|312|901-K78|7|12.00|25.01.2028|90KL76Y|Rubber-90AP
876522|24.12.2017|312|123-65D|10|67.00|01.01.2020|LOERF90|Pen-19EU
我需要在项目级别上循环,即“段6”。 非常感谢你。
答案 0 :(得分:0)
试试这个
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:output method="text"></xsl:output>
<xsl:template match="/">
<xsl:for-each select="//Segment6">
<xsl:if test="position() != 1"><xsl:text>
</xsl:text></xsl:if>
<xsl:value-of select="//Segment3/PO"/>
<xsl:text>|</xsl:text>
<xsl:value-of select="//Segment4/replace(Date, '([0-9][0-9][0-9][0-9])([0-9][0-9])([0-9][0-9])', '$3.$2.$1')"/>
<xsl:text>|</xsl:text>
<xsl:value-of select="//Segment5/Invoice|Segment7/*" separator="|"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>