我使用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