2012-03-16 62 views
0

我開發一個應用程序轉換XML是我需要改變看起來像這樣的XML文檔:使用XSL樣式表

<?xml version='1.0' encoding='ISO-8859-1'?> 
<!DOCTYPE words SYSTEM "words.dtd"> 
<words> 
<word id="word_1">Alfa</word> 
<word id="word_2">Beta</word> 
<word id="word_3">Gamma</word> 
<word id="word_4">Pi</word> 
</words> 

使用XSLT樣式表。我想轉換的結果是(在這種情況下)Alfa Beta Gamma Pi這是我使用的XSL:

<?xml version='1.0' encoding='ISO-8859-1'?> 

<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:template match="/"> 
    <html> 
    <body> 
    <xsl:for-each select="words/word"> 
    <tr> 
     <td><xsl:value-of select="@id"/></td> 
     <td> 
     <xsl:attribute name="word"> 
     <xsl:value-of select="@id" /> 
     </xsl:attribute> 
     </td> 
    </tr> 
    </xsl:for-each> 
    </body> 
    </html> 
</xsl:template> 

</xsl:stylesheet> 

結果是不是我要找的人。我必須在XSLT中更改哪些內容?

+1

您在兩個值參數中拉兩次id屬性。如果要輸出文本,則需要將其中一個值更改爲select = word或select =。如下所示。 – FloppyDisk 2012-03-16 11:30:21

+0

如果你正在生成HTML,那麼你不想生成一個名爲「word」的屬性,因爲HTML中沒有這樣的屬性,它將被忽略。 – 2012-03-16 14:37:08

回答

2

讓我猜...它輸出的是ID而不是值。

你可能想:

<td><xsl:value-of select="."/></td> 

<td><xsl:value-of select="text()"/></td> 
1

樣式表缺少開放<xsl:stylesheet元素。

+0

可能是一個複製/粘貼問題,因爲我看到最後一個 - 但很好的抓住! – 2012-03-16 11:47:45

+0

嗯,我已經爲你的答案+1了,因爲它看起來就像那個排序的@haritz。 – 2012-03-16 11:49:30

+0

'xsl:transform'也有效。請參閱http://www.w3schools.com/xsl/xsl_transformation.asp假設開始和結束標記符合:) – PhillyNJ 2014-03-24 16:33:16