Створення додатків msxml

Існує ряд способів використання MSXML, щоб створювати додатки, які виконують обробку XML.

Можна використовувати модель об'єктів документів (DOM), за допомогою мови сценаріїв, як ізольований процес.

Можна використовувати модель DOM або простий API для XML (SAX2) за допомогою мови C ++. Можна також використовувати або API в будь-яку мову системи розробки, можна використовувати елементи управління ActiveX або COM-об'єктами.

Відгуки вказав, часто буває складно розробникам створювати і запускати додатки MSXML. Розробники іноді що вони використовують різні версії бібліотеки, вони очікуваного. Іноді буває важко просто отримати їх для запуску програми. Існує ряд проблем, які необхідно враховувати при створенні додатків. У цьому розділі перераховані проблеми і рекомендації.

Про приклади

Більшість прикладів, MSXML SDK надає працюють, що поставляються з MSXML 3.0 або MSXML 6.0. Цей розділ містить інструкції щодо внесення MSXML 3.0 приклади працюють з MSXML 6.0. Деякі приклади MSXML 3.0 не працюватиме з MSXML 6.0 з деяких причин, включаючи:

Приклади на мові MSXML 3.0, що використовують визначення типу документа (DTD) не працюють з MSXML 6.0 без змін, як MSXML 6.0 відключає DTD за замовчуванням.

Приклади на мові MSXML 3.0, що використовують скорочення даних XML (XDR) схеми не буде працювати з MSXML 6.0. Функціональні можливості схеми XDR був видалений зі служби MSXML 6.0.

Пояснення CLASS_IDs, ідентифікатори GUID і ідентифікатори ProgID

При створенні об'єкта COM і ActiveX, таких як MSXML, необхідно визначити, який саме елемент управління, ви хочете створити. У разі MSXML, де є кілька версій, необхідно створити екземпляр елемента керування таким чином, що ви отримаєте правильну версію елемента керування вам потрібно. По-перше необхідно знати деякі основні відомості про те, як елементи керування ActiveX і роботи COM-об'єктів.

Елемент керування ActiveX остаточно визначається GUID, який є дуже великих унікальний номер, присвоєний елементу управління. Це найбільш часто виражається як шістнадцяткове число. Приклад ідентифікатора GUID - 88d96a05-f192 - 11d 4-a65f-0040963251e5. Ідентифікатор GUID є називають ClassID елемента управління. Тим не менш зручно використовувати ідентифікатор GUID для визначення і створення елемента управління. Замість цього існує два способи для посилання на елемент керування ActiveX:

При використанні мови сценаріїв, можна визначити управління за допомогою його ProgID, який представляє собою форму, простіше для читання людина. Приклад ProgID Msxml2.DOMDocument.6.0.

При використанні C ++ можна створити елемент управління через його символічне ім'я. Це ім'я, яке визначається як макрос в файлі заголовка. Приклад символічне ім'я - CLSID_DOMDocument60. При використанні цього символічне ім'я в програмі C ++ дозволяє GUID елемента управління.

При установці елемента управління ActiveX або COM, створюються записи реєстру Windows, що визначають відповідність між GUID, ProgID і розташуванню компонента.

При використанні мови сценаріїв, наприклад JScript або VBScript, при створенні елемента управління, обробник сценаріїв займе ProgID завдання, пошук ідентифікатора GUID в реєстрі і створити правильний елемент управління за допомогою його ідентифікатора GUID.

Пояснення ProgID іменування

Зверніть увагу, частина імені проекту ProgID. Про версіях MSXML версії 3.0 до версії 6.0 частина імені проекту - MSXML2 описується. Ідентифікатори ProgID використовуйте MSXML2 описується з міркувань сумісності: є ряд технічних причин, жодна з якої має значення, який в цьому контексті і який виходять за рамки даного документа. Основний важливо пам'ятати, що при використанні ProgID Msxml2.DOMDocument.6.0. просто має MSXML2 описується в ім'я зовсім не означає, що ви використовуєте MSXML версії 2; дійсно ви використовуєте версію 6.

Існує два ідентифікатори ProgID, які можна використовувати з MSXML 3.0: MSXML2.DOMDocument або Msxml2.DOMDocument.3.0. У розділі Ідентифікатор GUID і ProgID відомості Детальніше.

Спроба запустити приклад для версії MSXML, яка не встановлена

Найбільш поширеною помилкою, а один з більш засмучує можливості для нових програмістів MSXML, намагається виконати додаток XML (зазвичай написані за допомогою мови сценаріїв), що використовує версії MSXML, не встановлено на комп'ютері. При цьому з'являється повідомлення про помилку, «сервер автоматизації не вдається створити об'єкт».

При виникненні цієї помилки необхідно виконати одну з двох дій - необхідно встановити цільової версії MSXML, або необхідно змінити сценарій використання ідентифікатора ProgID для версії MSXML, встановлений на комп'ютері. Додаткові відомості див. У розділах Установка та поширення MSXML.

Можливо, це менш поширені помилки для розробників C ++, ніж для програмістів сценарію. Розробники на C ++ знати, що для побудови свого застосування, їм потрібен доступ до файлу заголовка MSXML необхідні відповідні бібліотеки. MSXML файлу заголовка і бібліотеки встановлюються при установці пакету SDK MSXML, тому, якщо вони доступні для компіляції і компоновки, вони встановили правильну версію MSXML.

Розробники на C ++, само собою, необхідно переконатися, якщо вони розподіляють свої додатки, що вони встановити правильну версію MSXML на цільових комп'ютерах. Невиконання цієї вимоги призведе до сталася помилка при спробі запустити їх exe-файлу: «Ця програма не запускається через неправильну конфігурації програми. Перевстановлення програми може вирішити дану проблему. »Перевстановлення програми не усуне проблему; Хоча установка правильної версії буде MSXML.

Використання XML в Internet Explorer

Існує ряд способів використання XML в веб-додаток, що використовує Internet Explorer.

У сценарії можна ініціювати XSLT. При використанні XSLT таким чином, у вас є можливість вказати версію залежного ProgID, тому є можливість вказати точно версії MSXML, ви хочете використовувати. Крім того при такому підході, у вас є можливість використання додаткових функцій, як XSD-схеми і кеш схеми. При використанні цього методу, не забудьте замініть ідентифікатор ProgID конкретних ProgID, відповідний версії MSXML, які хочете використовувати. У розділі Ініціювати XSLT в скрипті для цього типу приклад.

Більш складний приклад ініціації XSLT в сценарій, а також приклади використання XPath, можна знайти на Підручник по XPath додатки.

Створення додатків за допомогою JScript

Часто буває зручно для запуску автономного скриптів на мові VBScript або JScript. Це зручно, якщо ви вивчаєте XML. Він також корисний при використанні деяких засобів XML, таких як XSLT для перетворення XML-документів з однієї форми в іншу; Прикладом цього може бути необхідність обробки і перетворення даних після експорту даних з однієї бази даних, а також перед імпортом в інший. Якщо це одноразові операції не потрібно автоматизувати процес. Замість цього можна просто виконати програму JScript, що використовують DOM для конвертування валюти.

Перед запуском програми JScript, переконайтеся, що ви змінили його, щоб ви створюєте об'єкт ActiveX для версії MSXML, потрібно. Додатки зазвичай створюють DOMDocument об'єкта в такий спосіб:

У розділі Ідентифікатор GUID і ProgID відомості мати правильно визначений код ProgID.

Приклад, що демонструє програмування MSXML за допомогою VBScript можна знайти на Перевірка XML DTD (VBScript). У цьому прикладі був перевірений з MSXML версії 3.0 і MSXML 6.0.

Створення додатків за допомогою C ++

При використанні C ++ MSXML, потрібно ряд дій, щоб побудувати і запустити додаток. До них відносяться:

Налаштування каталогів для включення файл - вам потрібно додати запис в каталозі inc в MSXML SDK.

Створення каталогів для lib-файли - необхідно додати запис в каталог lib в MSXML SDK.

У властивостях проекту, вказавши MSXML бібліотеки, в якій необхідно пов'язати в додаток.

Зміна джерела, наприклад або додатки, щоб включити відповідний файл заголовка служби MSMXL.

Зміна джерела, наприклад або додатки для використання правильний ідентифікатор ClassID для версії MSXML, ви використовуєте.

Переконавшись, що MSXML динамічну бібліотеку (DLL) в дорозі. Як правило MSXML3.dll, MSXML4.dll, MSXML5.dll і MSXML6.dll поміщаються в каталог WINDOWS \ system32.

У цій таблиці наведено версії MSXML, ім'я заголовка, ім'я бібліотеки і ім'я DLL-файлу.