Метод читання джерела даних XML з файлу або AJAX і подальшого подання його в Internet Explorer у вигляді GUI (графічний інтерфейс користувача).
Коротка інформація про Exsead Etc.
XMLViewer.js - дуже довгий скрипт, так як він виконує кілька різних функцій, щоб досягти своєї мети.
Process Arguments
Коли скрипту передаються аргументи, що відбувається при перетягуванні файлу XML на іконку скрипта, дана функція читає файл як двійковий файл і потім передає його вміст в DisplayXML. Якщо аргументи відсутні, то Process Arguments використовує AJAX для вилучення потоку даних XML з каналу ATOM Центр розумників і передає повернутий XML в DisplayXML.
DisplayXML
Отримуючи шматок XML у вигляді рядка, дана функція розбирає його за допомогою парсера DOM від Microsoft. Потім він знаходить частина «Документ в DOM» (DOM - об'єктна модель документа, що містить в собі інші частини, поряд з самим документом).
Отримавши елемент «документ», функція створює масив для зберігання всього виведеного HTML. Обраний такий підхід, так як нові шматки HTML можуть успішно поміщатися в кінець масиву, а потім весь масив перетворюється в рядок в останній момент.
Щоб зрозуміти наступну частину завдання, треба зрозуміти, як принцип DOM формує XML. Як і більшість сучасних програмних принципів, він набагато простіше, ніж здається. Треба розуміти два головних принципи при роботі з XML:
1. Всі є вузлом.
2. Ігноруйте всі, про що не треба турбуватися.
Вузли є простими контейнерами. Вони можуть містити інші вузли, або можуть містити текст. Тому такий шматок XML
Так можна відрізняти вузли, що містять текст, і вузли, що містять інші вузли (або здатні утримувати інші вузли, але є порожніми). Кожен вузол має nodeType. Типи вузла 3 і 4 містять текст.
Ми майже розібралися з вузлами! Останній необхідний для цієї статті питання - поняття 'атрибути'. Атрибути - елементи ключа = "значення (я)", існуючі в XML. наприклад,
Елемент «документ DOM» сам є вузлом. Всі документи XML повинні мати один зовнішній вузол, нащадками якого є всі інші вузли. ProcessNode отримує вузол і генерує HTML-подання цього вузла і всіх його нащадків. Тому DisplayXML передає елемент «документ» (невідомо, чому він не називається «вузол« документ ») в ProcessNode.
ProcessNode
Хочете злякатися? ProcessNode є «рекурсивним спускається оброблювачем». Звучить дуже складно, приголомшливо і лякаюче. Але насправді це дуже просто. Пояснення виглядає так: будь-який вузол має значення чи нащадка. Є функція, обробна батьківський вузол. Батьківський вузол є таким же, як і дочірній вузол. Тому для обробки батьківського вузла і його нащадків застосовується одна і та ж функція.
Найпростіший спосіб домогтися цього - змусити функцію, обробну батька, викликати саму себе для кожного з нащадків. Функція, що викликає сама себе, називається рекурсивної. Функція, що використовує рекурсію, щоб спускатися по відношенню типу батько-нащадок, називається рекурсивної спускається. Нарешті, вона обробляє вузли по ходу, тому називається рекурсивним спускається оброблювачем.
Нарешті наочне уявлення XML у вигляді HTML відправляється в GUI
Він створюється за допомогою наступного фрагмента коду:
Доводиться засвоїти багато речей, але в результаті виходить потужний скрипт!
Малюнок 1. Приклад з конкретними квітами, обробленими за допомогою VML в Internet Explorer. Малюнок 2. Приклад з конкретними квітами, обробленими за допомогою полотна (canvas) в Firefox. Малюнок 3. Приклад, що демонструє згорнуті і вибрані вузли, оброблені за допомогою VML в Internet Exp.