Можно
выполнить преобразование для узлов элементов и атрибутов из их
исходного документа в целевой документ.
Об этой задаче
Допустимы следующие комбинации преобразования:
- атрибут в атрибут
- атрибут в элемент
- элемент в элемент
- элемент в атрибут
- несколько узлов в один узел
Следующие инструкции предназначены для проекции Ресурсы,
но им можно применять во многих других проекциях.
Для создания
преобразования выполните следующие действия:
Процедура
- Откройте файл преобразования в редакторе связей XML.
- Выберите один или несколько элементов или атрибутов в исходном
документе. Для выбора нескольких элементов или атрибутов удерживайте клавишу
Ctrl.
- Выберите элемент или атрибут в целевом документе.
- Щелкните правой кнопкой мыши на исходном или целевом документе
и выберите Создать преобразование. Теперь узлы будут связаны между собой.
Для того чтобы задать
тип преобразования, щелкните на окне Тип преобразования, расположенном
между узлами.
Можно выбрать одну из следующих опций:
| Опция |
Описание |
| Перемещение |
Этот тип позволяет скопировать данные из исходного объекта
в целевой. |
| Concat |
Этот тип позволяет создать конкатенацию строк для получения
данных из двух или более элементов для связывания их в один
результат. |
| Внутреннее преобразование |
Этот тип позволяет преобразованию вызвать другие преобразования,
причем другие преобразования не могут его вызвать. Он может быть
использован только в текущем преобразовании. Если объекты ввода и вывода
являются массивами, внутреннее преобразование неявным образом выполняется
для всех объектов ввода. |
| Подкарта |
Этот тип ссылается на другое преобразование. Он позволяет вызвать
преобразование из того или иного файла преобразования. Данный тип
наиболее целесообразно выбирать в случаях, предусматривающих
многократное использование. |
| Подстрока |
Этот тип позволяет получить необходимую информацию. Например,
подстрока фамилия, имя с ограничителем "," и
индексом подстроки 0 возвращает значение фамилия. Если
изменить индекс подстроки на 1, то в выводе будет
имя. |
| Группа |
Этот тип позволяет взять массив или набор данных и сгруппировать
их в набор набора. В основном это массив, содержащий массив. Группировка
выполняется на уровне поля, то есть она выполняется выбором поля набора
ввода, например: "отдел". |
| Нормировать |
Этот тип позволяет нормировать строку ввода. Например, можно
удалить лишние пробелы (символы пробела, табуляции или возврата). |
| Другое |
Этот тип позволяет ввести пользовательский код или вызвать
опорный код для использования в преобразовании.
Можно расширить встроенные функции преобразования с помощью выражений XPath и шаблонов XSLT. |
Пример
Для удаления преобразования щелкните правой кнопкой мыши
на связи преобразования и выберите Удалить.
Преобразование
в элементы с пустым содержимым
Преобразование в элемент XML,
не содержащий информации (например: <Person/>),
отличается от преобразования в элемент XML, содержащий символьные
данные (например: <Person>Молли</Person>).
В
последнем случае преобразование означает, что в качестве символьных
данных целевого элемента будут использоваться данные из целевого
узла. Однако в предыдущем случае преобразование не отражается на
создаваемом XSLT.
В DTD элемент, совсем не имеющий содержимого,
указывается с помощью ключевого слова 'EMPTY' (например:
<!ELEMENT Person EMPTY>).
В схеме XML это
не так очевидно. Один из компактных (с точки зрения синтаксиса) способов
указания элемента с пустым содержимым в схеме XML - определить сложный
тип без какого-либо простого или сложного содержимого (например: <xsd:element
name="Person"> <xsd:complexType/></xsd:element>).
Это
интерпретируется как сокращенный вариант обозначения сложного
содержимого, запрещающего anyType.