我有一個很大的XML文件,我拼命嘗試將它轉換爲一個帶有xsltproc
的CSV文件。使用帶有複雜文件的xsltproc將XML轉換爲CSV
我想提取的所有數據可以在[GRP alias="TRIUT" level="5"]
下找到。
我需要的僅僅是這些文件的標籤:從 「Rubrique」 的ELEMENT_1
- Matricule
- 名稱
- mount1的價值這是我XML:
<?xml version="1.0" encoding="UTF-8"?> <RPT> <GRP alias="Reglementation" level="1"> <FLD id="Reglementation">USA</FLD> <GRP alias="RUPT1" level="2"> <FLD id="RUPT1" /> <GRP alias="RUPT2" level="3"> <FLD id="RUPT2" /> <GRP alias="RUPT3" level="4"> <FLD id="RUPT3" /> <GRP alias="TRIUT" level="5"> <FLD id="TRIUT">00-532</FLD> <DTL> <FLD id="DateEdition" type="DATE">2017-02-01</FLD> <FLD id="Name">MR CHARLIE CHAPLIN</FLD> <FLD id="Matricule">12345678</FLD> <SRPT id="ELEMENT_1"> <DTL> <FLD id="Rubrique">038</FLD> <FLD id="Mount1" type="FLOAT">2200.95</FLD> <FLD id="Mount2" type="FLOAT">00000.00</FLD> </DTL> <DTL> <FLD id="Rubrique">976</FLD> <FLD id="Mount1">9926.96</FLD> <FLD id="Mount2">00000.00</FLD> </DTL> </SRPT> </DTL> </GRP> <GRP alias="TRIUT" level="5"> <FLD id="TRIUT">00186</FLD> <DTL> <FLD id="DateEdition">2017-03-31</FLD> <FLD id="Nom">MR JAMES BOND</FLD> <FLD id="Matricule">00000007</FLD> <SRPT id="ELEMENT_1"> <DTL> <FLD id="Rubrique">038</FLD> <FLD id="Mount1">2054.22</FLD> <FLD id="Mount2">000000.00</FLD> </DTL> <DTL> <FLD id="Rubrique">976</FLD> <FLD id="Mount1">2054.22</FLD> <FLD id="Mount2">00000.22</FLD> </DTL> </SRPT> </DTL> </GRP> </GRP> </GRP> </GRP> </GRP> </RPT>
什麼我想看到的是:
Matricule;Name;Rubrique976_Mount1 12345678;MR CHARLIE CHAPLIN;9926.96 00000007;MR JAMES BOND;2054.22
你認爲這是可能的嗎?
這就是我試圖做的,但它沒有在所有我所需要的答案...
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="text" encoding="UTF-8" /> <xsl:strip-space elements="*" /> <xsl:template match="/"> <xsl:text>Matricule;Name;Rubrique976_Mount1</xsl:text> <xsl:text>&#xA;</xsl:text> <xsl:for-each select="RPT/GRP/GRP/GRP/GRP/GRP/DTL"> <xsl:for-each select="FLD"> <xsl:value-of select="@id" /> <xsl:text>;</xsl:text> <xsl:value-of select="." /> <xsl:text>;</xsl:text> <xsl:for-each select="SRPT"> <xsl:value-of select="@id" /> <xsl:text>;</xsl:text> <xsl:value-of select="." /> <xsl:text>;</xsl:text> </xsl:for-each> </xsl:for-each> <xsl:text>&#xA;</xsl:text> </xsl:for-each> </xsl:template> </xsl:stylesheet>
這是我得到的,但不是我想要的東西......
Matricule;Name;Rubrique976_Mount1 DateEdition;2017-02-01;Name;MR CHARLIE CHAPLIN;Matricule;12345678; DateEdition;2017-03-31;Nom;MR JAMES BOND;Matricule;00000007;
感謝那些想要絞盡腦汁的人!
你應該發佈你所嘗試過的,因爲即使它可能不工作,它實際上表明你已經嘗試了一些東西。而且你永遠不知道,你的XSLT可能不會太離譜。謝謝! –
嗨@TimC我剛剛做到了,但是離我的期望很遠...... – Peter