我正在使用一个本机应用程序,它使用msxml4.dll进行所有与xml相关的工作,我需要添加xsl转换。我需要xsl的<msxsl:script language="...."
脚本。
如果我使用MSXML2命名空间从本机代码调用这些xsl转换,我可以使用哪些脚本语言(C#,JScript,VBScript,...)? 我可以在使用System.Xml中的托管xml类时使用C#吗?
答案 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>