Javascript中使用的内联XSLT语法
我想解析一个SOAPUI项目文件,并从该文件生成一些文档。我已经编写了一个XSLT来解析该项目(我的计划是使用Msxsl运行一个计划作业,以自动生成烟雾测试的最新“文档”) 问题>> 我的xml文件将包含多个项目,在这些项目中有测试用例列表。理想情况下,我希望将这些测试用例包装在一个可折叠的div中,以便整个文档更具可读性。目前正在创建我的div,我正试图使用Testsuite节点的位置给它一个唯一的名称Javascript中使用的内联XSLT语法,javascript,xml,xslt,Javascript,Xml,Xslt,我想解析一个SOAPUI项目文件,并从该文件生成一些文档。我已经编写了一个XSLT来解析该项目(我的计划是使用Msxsl运行一个计划作业,以自动生成烟雾测试的最新“文档”) 问题>> 我的xml文件将包含多个项目,在这些项目中有测试用例列表。理想情况下,我希望将这些测试用例包装在一个可折叠的div中,以便整个文档更具可读性。目前正在创建我的div,我正试图使用Testsuite节点的位置给它一个唯一的名称 <?xml version="1.0" encoding="ISO-8859-1"?
<?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>
函数切换div(divid){
if(document.getElementById(divid.style.display=='none')
{
document.getElementById(divid).style.display='block';
}
其他的
{
document.getElementById(divid).style.display='none';
}
}
正文{字体系列:Arial,Helvetica;}
h1{颜色:黑色;
字号:0.975em;
}
h2.ex{颜色:黑色;
字号:0.875em;
}
li.tc{
字号:0.875em;
}
p、 描述{
利润率:2%;
边框:1px点黑色;
字号:0.775em;
线高:90%
}
项目名称:
说明:
-
(#)测试用例:
(理查德-请提供描述!!)
说明:
由于我试图将XSLT语法放入Javascript中时出现了验证错误,因此该操作目前失败。我觉得我离这里很近,但通常的逃跑方法对我不起作用
有人能提供最后一块吗
干杯,
-Richard将JavaScript和CSS放入外部的.js和.CSS文件中,并使用适当的HTML标记引用它们,怎么样 使用:
<![CDATA[
javascript code here
]]>
任何自尊的XML解析器都会完全忽略其中的所有内容。一个明显的问题是:
<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>
必须是:
<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文档中,不允许将标记(元素)作为属性值 除此之外,脚本的语言通常由
type=“text/javascript”
指定。严格来说,它应该是application/javascript
,但某些浏览器不支持它。您的样式表有一些问题。但是验证是第一步:这个开始标记
无效,您必须避开好问题+1。请参阅我的答案,其中指出了代码中的一个明显问题,并提供了标准解决方案。谢谢Alejandro。您和Dimitres的回复都解决了这个问题。就本解决方案而言,一个文件比多个文件更有效。这是为了支持一个进程,而不是我想用额外的文件来扩充它。谢谢