2012-05-04 52 views
0

我有xml文件,看起來像這樣從XML檢索數據:如何將屬性添加到每個標籤同時使用XSLT

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE pointList SYSTEM "point.dtd"> 
<pointList> 
<point unit="mm"> 
<x>2</x> 
<y>3</y> 
</point> 
<point unit="cm"> 
<x>9</x> 
<y>3</y> 
</point> 
<point unit="px"> 
<x>4</x> 
<y>7</y> 
</point> 
</pointList> 

使用XSLT我轉化成HTML文件:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="html"/> 

    <xsl:template match = "/pointList"> 
    <table border = "1"><xsl:apply-templates/></table> 
    </xsl:template> 
    <xsl:template match = "/pointList/point"> 
    <tr><xsl:apply-templates/></tr> 
    </xsl:template> 
    <xsl:template match="pointList/point/x"> 
    <td><xsl:value-of select="text()"/></td> 
    </xsl:template> 
    <xsl:template match="pointList/point/y"> 
    <td><xsl:value-of select="text()"/></td> 
    </xsl:template> 

</xsl:stylesheet> 

現在我的html看起來像這樣:

<table border="1"> 

<tr> 

<td>2</td> 
<td>3</td> 

</tr> 

<tr> 

<td>9</td> 
<td>3</td> 

</tr> 

<tr> 

<td>4</td> 
<td>7</td> 

</tr> 

</table> 

但我還有一件事要做,我卡住了。我的單元屬性在我的xml文件中。我必須增加單位的值到每個點,所以它看起來像這樣:2mm 3mm 9cm 3 cm 4px 7 px。任何人都可以告訴我應該如何修改我的xslt文件,以便得到我想要的? 感謝

回答

3

變化

<xsl:template match="pointList/point/x"> 
    <td><xsl:value-of select="text()"/></td> 
</xsl:template> 

<xsl:template match="pointList/point/y"> 
    <td><xsl:value-of select="text()"/></td> 
</xsl:template> 

<xsl:template match="pointList/point/*"> 
    <td><xsl:value-of select="concat(text(), ../@unit)"/></td> 
</xsl:template> 
+0

不,這是行不通的。你看到我的x和y標籤在點標籤中,我需要將點屬性的值添加到x和y屬性中。是否有意義? – Gipsy

+0

@Gipsy Woops,你是對的。查看修改後的解 – Tomalak

+0

是的,謝謝,我知道了。但是你知道任何其他方式而不使用concat()?我還沒有研究過它。 – Gipsy

相關問題