我使用XSLT格式化XML文件以生成HTML時遇到了問題。通常我想依次檢索XML元素中包含的每個屬性的值。 Currentlz它在XSLT中被硬編碼,我意識到如果我的XML文件會改變,XSLT將無法完成它的工作。 我試圖使用類似<xsl:value-of select="@(name(@*[1]))" />
的東西來檢索元素的第一個屬性值,但它不起作用。XSLT從XML文件中順序檢索屬性值
如何做到這一點?
在此先感謝。
這裏是如何看起來像此刻:
<xsl:for-each select="testsuites/testsuite/testcase">
<xsl:if test="@failure='PASSED'">
<tr style="color:green;font-weight:bold">
<td style="text-align:center">
<xsl:value-of select="@classname" />
</td>
<td style="text-align:center">
<xsl:value-of select="@name" />
</td>
<td style="text-align:center">
<xsl:value-of select="@Plate" />
</td>
<td style="text-align:center">
<xsl:value-of select="@Distance" />
</td>
<td style="text-align:center">
<xsl:value-of select="@Side" />
</td>
<td style="text-align:center">
<xsl:value-of select="@Angle" />
</td>
<td style="text-align:center">
<xsl:value-of select="@failure" />
</td>
<td style="text-align:center">
<xsl:value-of select="failure/@message" />
</td>
</tr>
</xsl:if>
... and so one
這裏是我的XML文件的一部分:
<testsuites disabled="0" errors="0" failures="1" passes="16" skipped="0" tests="17" time="1">
<testsuite disabled="0" id="0" name="Bok" time="1" tests="4">
<testcase classname="XYZ" name="description" Plate="blah" Distance="A" Side="L" Angle="15" failure="PASSED">
<system-out/>
<system-err/>
</testcase>
<testcase classname="XYZ" name="description" Plate="blah" Distance="A" Side="L" Angle="60" failure="PASSED">
<system-out/>
<system-err/>
</testcase>
<testcase classname="XYZ" name="description" Plate="blah" Distance="A" Side="L" Angle="30" failure="PASSED">
<system-out/>
<system-err/>
</testcase>
<testcase classname="XYZ" name="description" Plate="blah" Distance="A" Side="L" Angle="60" failure="PASSED">
<system-out/>
<system-err/>
</testcase>
</testsuite>
... and so one
編輯: 好,因爲@TimC回答我不知道需要括號和名稱@(name(@*[1]))
,這對我來說很好。
現在的問題是如何使一個循環,這將是迭代的元素從1到讓我們說7,我的意思是這樣的:
<xsl:for-each select="$var=1 to 7">
<td style="text-align:center">
<xsl:value-of select="@*[$var]" />
</td>
</xsl:for-each>
在您的示例失敗不是第一個屬性,實際上沒有失敗但失敗。 – derloopkat
@derloopkat無論如何,屬性是無序的,它們在源代碼中的順序並不意味着什麼。 – Tomalak
好吧,你說你想要第一個屬性值 – derloopkat