msxml4.dll xsl转换中提供哪些脚本语言?

时间:2011-08-10 09:59:50

标签: c++ xslt msxml

我正在使用一个本机应用程序,它使用msxml4.dll进行所有与xml相关的工作,我需要添加xsl转换。我需要xsl的<msxsl:script language="...."脚本。

如果我使用MSXML2命名空间从本机代码调用这些xsl转换,我可以使用哪些脚本语言(C#,JScript,VBScript,...)? 我可以在使用System.Xml中的托管xml类时使用C#吗?

2 个答案:

答案 0 :(得分:1)

据我了解,您可以将JScript和VBScript语言与MSXML和msxsl:script一起使用。如果它们实现ActiveX脚本引擎接口http://msdn.microsoft.com/en-us/library/xawadt95%28v=VS.85%29.aspx,则可以使用其他语言。我认为以前有一个PerlScript第三方脚本引擎,但我不知道它是否仍然存在。

C#是一种.NET语言,我确信它不支持MSXML和msxsl:script。

答案 1 :(得分:0)

我在使用MSXML 4.0的本地XP上使用了JScript / WScript(相同的语法)。完美的工作。如果您需要灵感,我使用MSXSL.exe作为控制台变速器 - 我将它用于数学和crono。

像这样:

    <line id="hrHand"  stroke-width="4" x2="1000" y2="1000"  marker-start="url(#hrPointer)">
      <xsl:attribute name="x1"><xsl:value-of select="1000-crono:returnX(12) * 200" /></xsl:attribute>
      <xsl:attribute name="y1"><xsl:value-of select="1000-crono:returnY(12) * 200" /></xsl:attribute>
    </line>
  </g>      
   <g>
    <line id="secHand" stroke-width="4" x2="1000" y2="1000"  marker-start="url(#secPointer)">
      <xsl:attribute name="x1"><xsl:value-of select="1000-crono:returnX(12) * 380" /></xsl:attribute>
      <xsl:attribute name="y1"><xsl:value-of select="1000-crono:returnY(12) * 380" /></xsl:attribute>
    </line>
  </g>  
  <g font-family="sans-serif" font-size="64" font-weight="100">    
    <circle  r="50" cx="1000" cy="1000" fill="#a00000" />
    <text fill="#e0e0e0" text-anchor="middle" x="1000" y="1260">CLOCK BY M.RASCH</text>
  </g>    
</svg>
</xsl:template>

  <!--   r u n t i m e S c r i p t                     --> 

<msxsl:script language="JScript" implements-prefix="crono">
function returnX(degree) {
  return Math.cos(degree*Math.PI/180);
}
function returnY(degree) {
  return Math.sin(degree*Math.PI/180);
}
</msxsl:script>