1
嗨,我是一名初學者,希望學習XSLT。 我偶然發現了一個問題,使用XSLT輸入的XML文件轉換爲其他XML文件使用xslt將輸入xml轉換爲其他XML
我輸入XML文件:
<album>
<album_num>hi.hello</album_num>
<album_name>Cocktail</album_name>
</album>
<album>
<album_num>hey.hello</album_num>
<album_name>Mocktail</album_name>
</album>
<album>
<album_num>hey.mello</album_num>
<album_name>Monkeytail</album_name>
</album>
<album>
<album_num>hey.yellow</album_num>
<album_name>Donkeytail</album_name>
</album>
<album>
<album_num>swallow</album_num>
<album_name>abc</album_name>
</album>
我想獲得一個輸出XML文件:
<album>
<album_num>
<hi>
<hello>cocktail</hello>
</hi>
</album_num>
<album_num>
<hey>
<hello>MockTail</hello>
<mello>Monkeytail</mello>
<yellow>Donkeytail</yellow>
</hey>
</album_num>
<album_num>
<swallow>abc</swallow>
</album_num>
</album>
我通過創建變量嘗試了第一部分。但是在合併一個元素下的相似元素時遇到了問題。任何代碼都可以幫助我學習。提前致謝。
我的代碼:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<album>
<xsl:variable name="fstval" select='substring-before(//album/album_num,".")'/>
<xsl:variable name="secval" select='substring-after(//album/album_num,".")'/>
<xsl:variable name="valtoappend" select='//album/album_name'/>
<album_num>
<xsl:element name="{$fstval}">
<xsl:element name="{$secval}">
<xsl:value-of select="$valtoappend"/>
</xsl:element>
</xsl:element>
</xsl:for-each>
</album_num>
</album>
</xsl:template>
</xsl:stylesheet>
謝謝迪米特雷。我很高興爲像我這樣的初學者提供幫助。 – Ramana
@Ramana:我很高興我的回答對你有幫助。您能否請*接受*(通過點擊答案旁邊的複選標記)? –
@Ramana:請參閱此答案的更新 - 它解決了您修改的問題。你不覺得你必須*接受*這個答案嗎? –