我試圖從uniprot XML文件中選擇一些數據,並且我能夠獲得我想要的大部分內容,但是我在獲取數據時遇到了問題在同一個節點中有更多的條目。爲了使它更容易,我將使用衆所周知的CD收集數據來顯示我想要的。我還想知道將輸出保存爲.csv或.txt文件的最簡單方法是什麼。謝謝!如果有什麼不清楚,請告訴我。具有相同節點名稱時選擇併合並XML數據
XML代碼:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<company>ABC</company>
<price>10.90</price>
<year>1985</year>
</cd>
<cd>
<title>Hide your heart</title>
<artist>Bonnie Tyler</artist>
<country>UK</country>
<company>CBS Records</company>
<company>ABC</company>
<price>9.90</price>
<year>1988</year>
</cd>
<cd>
<title>Greatest Hits</title>
<artist>Dolly Parton</artist>
<country>USA</country>
<company>RCA</company>
<price>9.90</price>
<year>1982</year>
</cd>
</catalog>
當前XSLT代碼:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
<th>Company</th>
</tr>
<xsl:apply-templates />
</table>
</body>
</html>
</xsl:template>
<xsl:template match="catalog/cd">
<tr>
<xsl:apply-templates select="title|artist|company"/>
</tr>
</xsl:template>
<xsl:template match="title|artist|company">
<td>
<xsl:value-of select="."/>
</td>
</xsl:template>
</xsl:stylesheet>
電流輸出:
My CD Collection
Title Artist Company
Empire Burlesque Bob Dylan Columbia ABC
Hide your heart Bonnie Tyler CBS Records ABC
Greatest Hits Dolly Parton RCA
所以我得到的所有數據出來,我想,但我想「公司」結果在1列中,如下所示:Columbia; ABC
另外,在我使用的文件中,通常在同一個節點中有更多的條目。但是,對於大多數我只是想要第一個而不是全部,只有一些節點。你怎麼能區分這兩個?當我使用
<xsl:for-each select="uniprot/entry">
<tr>
<td>
<xsl:value-of select="name"/>
</td>
</tr>
它只是返回第一項。所以我主要想這個,但我想我需要其他節點,我想要所有條目。如果你能幫助我解決這個問題,那將會很棒。
謝謝!這有很大幫助。唯一的問題是,公司的第二個條目還有一個額外的列。你怎麼能確保這不會發生? (在原始文件中,這意味着很多額外的列使得處理更加困難) – user1941884 2013-05-14 06:57:40
附加問題(不必要,但可能使事情更美麗)。設想2個節點有幾個條目,但條目數量是相同的。第一個節點包含例如:第二個節點包含: 一二三四五 ,而不是領輸出: 1; 2; 3; 4; 5;二則,三,四,五 有可能得到這個: 1 - 1; 2 - 2; 3 - 3; 4 - 4; 5 - 5 – user1941884 2013-05-14 06:58:25
我已經更新了我的回覆,解決您的第一個查詢 - 額外的列。你的第二個問題也是可以接受的,但你需要分享輸入XML和期望的輸出。 – 2013-05-14 07:10:30