Какие языки сценариев доступны в xsl-преобразованиях msxml4.dll? - PullRequest
2 голосов
/ 10 августа 2011

Я работаю над собственным приложением, которое использует msxml4.dll для всей работы, связанной с XML, где мне нужно добавить преобразования xsl.Мне нужны <msxsl:script language="...." сценарии для xsl.

Какие языки сценариев (C #, JScript, VBScript, ...) мне доступны, если я вызываю эти преобразования xsl из собственного кода, используя пространство имен MSXML2?Могу ли я использовать C # так же, как и при использовании управляемых классов xml из System.Xml?

Ответы [ 2 ]

1 голос
/ 10 августа 2011

Насколько я понимаю, вы можете использовать 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.

0 голосов
/ 10 августа 2011

Я использовал JScript / WScript (тот же синтаксис) в локальной XP с MSXML 4.0. Работает отлично. Если вам нужно вдохновение, я использовал MSXSL.exe как консольный трансфом - я использую это для математики и хронологии.

как это:

    <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>
...