Выполнение преобразований XML во Flex - PullRequest
2 голосов
/ 16 января 2009

Я хотел бы иметь возможность запускать преобразование xml с использованием файла xslt в моем проекте AIR. Какой лучший способ сделать это?

Ответы [ 2 ]

3 голосов
/ 24 февраля 2009

В AIR 1.5 включена версия Webkit с поддержкой XSLT.

Используйте класс XSLTProcessor из JavaScript, как в Firefox. (Примечание. Существует одна досадная ошибка. Таблицы стилей не могут содержать неразрывные пробелы, независимо от того, являются ли они буквальными или символьными ссылками. Мне сказали, что более поздние версии 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

Нажмите кнопку, и она скажет:

example
(источник: lichteblau.com )

1 голос
/ 22 февраля 2009

Поддержка XSLT обычно предоставляется браузерами. Версия Webkit, встроенная в AIR, не поддерживает XSLT. Таким образом, вам придется сделать все это самостоятельно. Я нашел этот проект, который позволяет вам поиграться с запросами XPath в AS3. Теперь разбирать шаблоны и создавать узлы вам придется самостоятельно.

...