-5
4

1 回答 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 回答