Эй, ребята,
У меня есть этот довольно неуклюжий кусок xslt, который я использую для преобразования тестовых случаев SOAPUI в более читаемый формат. В настоящее время он перечисляет тестовые случаи, используя следующее
<xsl:value-of select="position()-3"/>
Мой вопрос Иногда перечисление тестового примера начинается с 0, а иногда с 1. Я не понимаю, почему это происходит? Это как-то связано с тем, как реализован селектор положения? Есть ли более аккуратный способ подсчета экземпляров узла?
Большое спасибо,
Richard
Вот код целиком - без стиля.
`
<!-- Edited by XMLSpy® -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:con="http://eviware.com/soapui/config">
<xsl:output method="html" encoding ="utf-8"/>
<xsl:template match="/">
<html>
<head>
<script type="text/javascript">
function toggleDiv(divid){
var ele = document.getElementById(divid);
if(ele.style.display == 'none')
{
ele.style.display = 'block';
}
else
{
ele.style.display = 'none';
}
}
</script>
<style type="text/css"></style>
</head>
<body>
<xsl:apply-templates/>
<div class="help">This report is generated automatically by a scheduled job running on Richard Fortune's machine. The SOAPUI project files it references are located in sourcecontrol SVN (https://svn.xxx.xxxxxx.com/svn/network/TEST). These reports are generated daily as the projects they reference are subject to change.</div>
</body>
</html>
</xsl:template>
<xsl:template match="con:soapui-project">
<div><h1>Project Name : <xsl:value-of select="@name"/></h1></div>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="con:testSuite">
<xsl:if test="con:description=''">
<p class="warn"> (RICHARD - PLEASE PROVIDE A DESCRIPTION!!)</p>
</xsl:if>
<div id="content" onmousedown="toggleDiv('{position()}');"><h2 class="ex">TestSuite: <xsl:value-of select="@name"/></h2></div>
<br>
<p class="descSuite"><b>Suite Description: </b><xsl:value-of select="con:description"/></p>
</br>
<div style="display:none" id="{position()}"><xsl:apply-templates />
</div>
</xsl:template>
<xsl:template match="con:testCase">
<ul>
<li class="tc"><b>
(#<xsl:value-of select="position()-3"/>) Testcase: </b><xsl:value-of select="@name"/>
</li>
<xsl:if test="con:description=''">
<p class="warn">(Gentle reminder Richard - PLEASE PROVIDE A DESCRIPTION!!)</p>
</xsl:if>
<p class="descTc">
<strong><i>Description:</i></strong> <xsl:value-of select="con:description"/>
</p>
<ol class="step">
<xsl:for-each select="con:testStep"><li>TestStep: <xsl:value-of select="@name"/> </li></xsl:for-each>
</ol>
</ul>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="*"></xsl:template>
</xsl:stylesheet>
`