Javascript中使用的内联XSLT语法

Javascript中使用的内联XSLT语法,javascript,xml,xslt,Javascript,Xml,Xslt,我想解析一个SOAPUI项目文件,并从该文件生成一些文档。我已经编写了一个XSLT来解析该项目(我的计划是使用Msxsl运行一个计划作业,以自动生成烟雾测试的最新“文档”) 问题>> 我的xml文件将包含多个项目,在这些项目中有测试用例列表。理想情况下,我希望将这些测试用例包装在一个可折叠的div中,以便整个文档更具可读性。目前正在创建我的div,我正试图使用Testsuite节点的位置给它一个唯一的名称 <?xml version="1.0" encoding="ISO-8859-1"?

我想解析一个SOAPUI项目文件,并从该文件生成一些文档。我已经编写了一个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>

函数切换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的回复都解决了这个问题。就本解决方案而言,一个文件比多个文件更有效。这是为了支持一个进程,而不是我想用额外的文件来扩充它。谢谢