问问题
473 次
1 回答
0
看起来您只想为您在 XML 中找到的第一个svrl:failed-assert元素输出“结果观察 - 警告验证阶段”消息的段落,而不是其他任何元素。
你需要做的是有一个模板来匹配第一个这样的元素,它可以输出第一段,然后调用命名模板svrl:failed-assert也将匹配所有其他元素。
<xsl:template match="svrl:failed-assert[1]">
<p>
<u>
<xsl:value-of select="(preceding-sibling::svrl:active-pattern)/@name[1]"/>
</u>
</p>
<xsl:call-template name="svrl:failed-assert"/>
</xsl:template>
<xsl:template match="svrl:failed-assert" name="svrl:failed-assert">
<!-- Existing code here -->
这是一个简化的 XSLT(没有任何查找和替换代码)
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:svrl="oh:no" exclude-result-prefixes="svrl">
<xsl:output method="html" indent="yes"/>
<xsl:template match="svrl:failed-assert[1]">
<p>
<u>
<xsl:value-of select="(preceding-sibling::svrl:active-pattern)/@name[1]"/>
</u>
</p>
<xsl:call-template name="svrl:failed-assert"/>
</xsl:template>
<xsl:template match="svrl:failed-assert" name="svrl:failed-assert">
<table width="800">
<tr>
<td colspan="2">
<font color="red">
<xsl:value-of select="svrl:text"/>
</font>
</td>
</tr>
<tr>
<td width="50">Test:</td>
<td width="750">
<i>
<xsl:value-of select="@test"/>
</i>
</td>
</tr>
</table>
</xsl:template>
</xsl:stylesheet>
当应用于以下简化的 XML 时:
<a xmlns:svrl="oh:no">
<svrl:active-pattern name="Result observation - warning validation phase"/>
<svrl:fired-rule context="Context 1"/>
<svrl:failed-assert test="Test 1" location="Location 1">
<svrl:text>Text 1</svrl:text>
</svrl:failed-assert>
<svrl:failed-assert test="Test 2" location="Location 2">
<svrl:text>Text 2</svrl:text>
</svrl:failed-assert>
<svrl:fired-rule context="Context 2"/>
<svrl:failed-assert test="Test 3" location="Location 3">
<svrl:text>Text 3</svrl:text>
</svrl:failed-assert>
</a>
输出以下 HTML:
<p>
<u>Result observation - warning validation phase</u>
</p>
<table width="800">
<tr>
<td colspan="2">
<font color="red">Text 1</font>
</td>
</tr>
<tr>
<td width="50">Test:</td>
<td width="750">
<i>Test 1</i>
</td>
</tr>
</table>
<table width="800">
<tr>
<td colspan="2">
<font color="red">Text 2</font>
</td>
</tr>
<tr>
<td width="50">Test:</td>
<td width="750">
<i>Test 2</i>
</td>
</tr>
</table>
<table width="800">
<tr>
<td colspan="2">
<font color="red">Text 3</font>
</td>
</tr>
<tr>
<td width="50">Test:</td>
<td width="750">
<i>Test 3</i>
</td>
</tr>
</table>
于 2012-04-28T13:31:45.470 回答