2

AIR プロジェクトで xslt ファイルを使用して xml 変換を実行できるようにしたいと考えています。これを達成するための最良の方法は何ですか?

4

2 に答える 2

3

AIR 1.5 には、XSLT をサポートするバージョンの Webkit が含まれています。

XSLTProcessorFirefox の場合と同じように、JavaScriptのクラスを使用します。(注: 厄介なバグが 1 つあります。スタイルシートには、文字参照であろうと文字参照であろうと、非改行スペースを含めることはできません。より最近のバージョンの Webkit でこの問題が修正されると聞いています。)

以下は完全な例です。

ファイルを作成するtest.html

<html>
  <head>
    <title>XSLT test</title>
    <script type="text/javascript">
      // <!--
      function test() {

        // Step 1: Parse the stylesheet
        var stylesheet
          = "<xsl:transform xmlns:xsl='http://www.w3.org/1999/XSL/Transform'"
          + "               version='1.0'>"
          + "  <xsl:template match='/'>"
          + "    Hello World from XSLT!"
          + "  </xsl:template>"
          + "</xsl:transform>";
        var stylesheetDocument
          = new DOMParser().parseFromString(stylesheet, "application/xml");

        // Step 2: Parse the source document
        var source = "<dummy/>";
        var sourceDocument
          = new DOMParser().parseFromString(source, "application/xml");

        // Step 3: Perform the XSL transformation
        var xslt = new XSLTProcessor();
        xslt.importStylesheet(stylesheetDocument);
        var newFragment = xslt.transformToFragment(sourceDocument, document);

        // Step 4: Show the result
        document.body.appendChild(newFragment.firstChild);
      }
      // -->
    </script>
  </head>
  <body>
    <input type="submit" onclick="test()">
    Output:
  </body>
</html>

とファイルtest.xml

<application xmlns="http://ns.adobe.com/air/application/1.0">
  <id>test</id>
  <filename>test</filename>
  <initialWindow>
    <content>test.html</content>
    <visible>true</visible>
  </initialWindow>
</application>

たとえば、デバッグ ランタイムを使用して試すことができます。

adl test.xml

ボタンをクリックすると、次のように表示されます。

例
(出典:lichteblau.com

于 2009-02-24T12:59:13.537 に答える
1

XSLT サポートは通常、ブラウザーによって提供されます。AIR に組み込まれている Webkit のバージョンは、XSLT をサポートしていません。したがって、これをすべて自分で行う必要があります。AS3 で XPath クエリをいじることができるこのプロジェクトを見つけました。テンプレートの解析とノードの作成は、自分で行う必要があります。

于 2009-02-22T05:29:25.957 に答える