我想解析一个SOAPUI Project文件并从该文件生成一些文档。我编写了一个XSLT来解析项目(我的计划是使用Msxsl运行预定作业,为我的冒烟测试自动生成最新的“文档”)。
问题>> 我的xml文件将包含多个项目,在这些项目中有测试用例列表。理想情况下,我希望将这些测试用例包装在一个可折叠的div中,以便整个文档更具可读性。目前正在创建我的div,并且我试图使用Testsuite节点的位置给它一个唯一的名称。
<?xml version="1.0" encoding="ISO-8859-1"?>
<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 language="javascript">
function toggleDiv(divid){
if(document.getElementById(divid).style.display == 'none')
{
document.getElementById(divid).style.display = 'block';
}
else
{
document.getElementById(divid).style.display = 'none';
}
}
</script>
<style type="text/css">
body {font-family:Arial,Helvetica; }
h1 {color:black;
font-size:0.975em;
}
h2.ex {color:black;
font-size:0.875em;
}
li.tc {
font-size:0.875em;
}
p.desc {
margin: 2%;
border: 1px dotted black;
font-size:0.775em;
line-height:90%
}
</style>
</head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="con:soapui-project">
<h1>
Project Name:<xsl:value-of select="@name"/>
</h1>
<br />
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="con:testSuite">
<hr></hr>
<a href="javascript:;" onmousedown="toggleDiv('<xsl:value-of select="position()"/>');">
<xsl:attribute name="onmousedown"><xsl:value-of select="position()"/></xsl:attribute>
<h2 class="ex">
TestSuite: <xsl:value-of select="@name"/>
</h2>
</a>
<br>
<p class="desc">
Description: <xsl:value-of select="con:description"/>
</p>
</br>
<br />
<div id="mydiv" style="display:none">
<xsl:apply-templates />
</div>
</xsl:template>
<xsl:template match="con:testCase">
<ul>
<li class="tc">
(#<xsl:value-of select="position()-3"/>) Testcase: <xsl:value-of select="@name"/>
</li>
<xsl:if test="con:description=''">
(RICHARD - PLEASE PROVIDE A DESCRIPTION!!)
</xsl:if>
<p class="desc">
Description: <xsl:value-of select="con:description"/>
</p>
</ul>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="*"></xsl:template>
</xsl:stylesheet>
当我尝试将XSLT语法放入Javascript时,由于验证错误,当前失败了。我觉得我很接近,但通常的逃生方法对我不起作用。
有人可以提供最后一块吗?
干杯, - 理查德
答案 0 :(得分:3)
一个明显的问题:
<a href="javascript:;"
onmousedown="toggleDiv(<xsl:value-of select="position()"/>');">
<xsl:attribute name="onmousedown">
<xsl:value-of select="position()"/>
</xsl:attribute>
必须:
<a href="javascript:;"/>
<xsl:attribute name="onmousedown">
<xsl:value-of select="position()"/>
</xsl:attribute>
此问题的原因是标记(元素)不允许作为任何格式良好的XML文档中的属性值。
答案 1 :(得分:1)
使用:
<![CDATA[
javascript code here
]]>
任何自尊的XML解析器都会完全忽略其中的所有内容。
答案 2 :(得分:0)
如何将JavaScript和CSS放入外部.js和.css文件并使用适当的HTML标记来引用它们?