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





Поддержка XSLT обычно предоставляется браузерами. Версия Webkit, встроенная в AIR, не поддерживает XSLT. Так что вам придется делать все это самому. Я нашел проект это, который позволяет вам поиграть с запросами XPath в AS3. Теперь синтаксический анализ шаблона и создание узла вам придется делать самостоятельно.
В 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
Нажмите кнопку, и он скажет:

(source: lichteblau.com)