Тег преобразования XML-файла не найден

Обновлено: 03.07.2024

Тег применяет преобразование к документу XML (атрибут "источник") с учетом конкретной таблицы стилей XSLT (атрибут "xslt"). Если исходный атрибут не указан, входной XML-документ считывается из содержимого тела тега.

Атрибуты source и xslt являются объектами любого из следующих типов: java.lang.String, java.io.Reader или javax.xml.transform.Source.

Как видно из приведенного выше примера, результат преобразования по умолчанию записывается на страницу. Также можно зафиксировать результат преобразования двумя другими способами:

  • в объект javax.xml.transform.Result, указанный с помощью атрибута "result" (объект должен быть предоставлен автором страницы)
  • в объект org.w3c.dom.Document, который будет храниться в атрибуте области действия JSP, указанном в "var".

"var" и "result" исключают друг друга. Что интересно с атрибутом «var», так это то, что экспортированный документ можно использовать напрямую с другими тегами xml. Например:

Действие также поддерживает атрибут "трансформер", описанный в разделе 3 () ниже.

Вложенный тег можно использовать вместе с для установки параметров преобразования. Атрибуты «имя» и «значение» используются для указания параметра. Атрибут value является необязательным. Если он не указан, значение извлекается из тела тега.

Иногда бывает так, что одно и то же преобразование таблицы стилей необходимо применить несколько раз к разным исходным XML-документам. Более эффективный подход — обработать таблицу стилей преобразования один раз, а затем сохранить этот объект «преобразователя» для последующих преобразований.

Как показано в приведенном ниже примере, тег можно использовать вместе с атрибутом преобразования для эффективного повторного использования таблицы стилей преобразования.

Атрибут xslt является необязательным и может быть любого из следующих типов: java.lang.String, java.io.Reader или javax.xml.transform.Source. Если не указано, таблица стилей считывается из содержимого тела тега.

4. Резюме


источник xslt преобразователь результат переменная

Применяет преобразование к XML-документу с учетом определенной таблицы стилей XSLT или объекта преобразования.


имя значение

Подэлемент для указания параметров запроса для вложенного .


вар xslt

Создает объект "преобразователь" для более эффективных преобразований, использующих ту же таблицу стилей XSLT.

Эта ошибка возникает, если сообщение или строковая переменная, указанная в элементе политики XSLTransform, имеет следующие значения:

  • Вне области действия (недоступно в конкретном потоке, в котором выполняется политика)
  • Не может быть разрешено (не определено)

Например, эта ошибка возникает, если политика XSLTransform должна выполняться в потоке запросов, но для элемента задана переменная ответа, которой нет в потоке запросов.

Диагностика

Укажите политику XSLTransform, в которой произошла ошибка, и имя недоступной переменной. Вы можете найти оба эти элемента в элементе faultstring ответа об ошибке. Например, в следующей строке ошибки имя политики — xslt, а переменная — response:

Убедитесь, что переменная, используемая в элементе, определена и доступна в потоке, в котором выполняется политика XSLTransform.

Если переменная:

  • Вне области действия (недоступно в конкретном потоке, в котором выполняется политика) или
  • Не может быть разрешено (не определено)

тогда это и есть причина ошибки.

В качестве примера предположим, что показанная выше политика XSLTransform должна выполняться в потоке запросов. Напомним, что переменная ответа используется в элементе примера политики. Переменная ответа доступна только в потоке ответов.

Поскольку переменная ответа не существует в потоке запроса, вы получаете код ошибки:

Разрешение

Убедитесь, что переменная, заданная в элементе неудавшейся политики XSLTransform, определена и существует в потоке, в котором выполняется политика.

Чтобы исправить пример политики XSLTransform, показанный выше, вы можете изменить элемент, чтобы использовать переменную запроса, поскольку она существует в потоке запроса:

Ошибка оценки XSLE

Код ошибки

Тело ответа об ошибке

Пример сообщения об ошибке

Возможные причины

Эта ошибка возникает, если:

  • Входная полезная нагрузка XML недоступна или имеет неверный формат.
  • Политика XSLTransform не может или не может преобразовать входной файл XML на основе правил преобразования, указанных в файле XSL. Может быть много разных причин сбоя политики XSLTransform. Причина сбоя в сообщении об ошибке предоставит дополнительную информацию о причине. В следующей таблице указана одна из таких причин этой ошибки — Неверный префикс — и объяснено на примере.

Причина: входная полезная нагрузка XML недоступна

Эта ошибка возникает, если входные полезные данные XML не переданы или полезные данные XML, переданные как часть запроса API к прокси-серверу API с политикой XSLTransform, пусты.

Пример сообщения об ошибке

Диагностика

Определите файл XSL, который не удалось оценить с помощью политики преобразования XML, и причину сбоя. Если входная полезная нагрузка XML не передана или пуста, причина сбоя будет указывать на преждевременный конец документа при синтаксическом анализе. Вы можете найти всю эту информацию в элементе faultstring ответа об ошибке. Например, в следующей строке ошибки файл XSL называется XSL-Transform.xsl, а причиной сбоя является преждевременный конец документа при синтаксическом анализе строки 1 (возможно, около char 0). Эта ошибка означает, что полезные данные XML либо не переданы, либо пусты.

Определить, являются ли входные полезные данные XML, которые были переданы как часть запроса, пустыми. Если входная полезная нагрузка не передана или пуста, это и является причиной ошибки.

В приведенном ниже примере запроса полезные данные запроса (то есть тело запроса), отправленные пользователем, были пустыми.

Где your_host_alias — это общедоступный домен, используемый для доступа к вашим API, как настроено в свойстве virtualhosts.hostAliases в вашем файле переопределений. См. раздел Указание переопределений конфигурации.

Поскольку входная полезная нагрузка XML пуста, вы получаете сообщение об ошибке:

Разрешение

Убедитесь, что входные данные, переданные в политику XSLTransform, являются допустимыми полезными данными XML и не пустыми.

Чтобы устранить проблему с образцом политики XSLTransform, передайте действительные полезные данные XML. Например:

Создайте файл city.xml со следующим содержимым:

Выполните вызов API с помощью команды curl следующим образом:

Где your_host_alias — это общедоступный домен, используемый для доступа к вашим API, как настроено в свойстве virtualhosts.hostAliases в вашем файле переопределений. См. раздел Указание переопределений конфигурации.

Причина: искаженный входной XML

Входная полезная нагрузка XML, переданная как часть запроса API политике XSLTransform, имеет неверный формат или недействительна.

Пример сообщения об ошибке

Диагностика

Определите файл XSL, который не удалось оценить с помощью политики преобразования XML, и причину сбоя. Если входная полезная нагрузка XML имеет неверный формат, причина сбоя будет указывать на наличие непредвиденного символа. Вы можете найти всю эту информацию в элементе faultstring ответа об ошибке. Например, в следующей строке ошибки файл XSL называется XSL-Transform.xsl, а причиной сбоя является Неожиданный символ при поиске символа открытого тега ('<'). То есть в полезной нагрузке XML отсутствует " < ".

Проверьте входные полезные данные XML, переданные политике XSLTransform, и убедитесь, что они содержат допустимый XML-контент. Если входная полезная нагрузка не является допустимым XML, это и является причиной ошибки.

В приведенном ниже примере запроса входная полезная нагрузка (то есть тело запроса), отправленная пользователем, недействительна.

Где your_host_alias — это общедоступный домен, используемый для доступа к вашим API, как настроено в свойстве virtualhosts.hostAliases в вашем файле переопределений. См. раздел Указание переопределений конфигурации.

В этом примере файл city.xml определяется как:

Поскольку входная полезная нагрузка представляет собой JSON, а не допустимый XML, вы получаете сообщение об ошибке:

Разрешение

Убедитесь, что входные данные, переданные в политику XSLTransform, являются допустимыми полезными данными XML и не пустыми.

Чтобы устранить проблему с образцом политики XSLTransform, передайте действительные полезные данные XML. Например:

Измените файл city.xml, чтобы содержимое было в формате XML, как показано ниже:

Выполните вызов API с помощью команды curl следующим образом:

Где your_host_alias — это общедоступный домен, используемый для доступа к вашим API, как настроено в свойстве virtualhosts.hostAliases в вашем файле переопределений. См. раздел Указание переопределений конфигурации.

Причина: неверный префикс

Входная полезная нагрузка XML, переданная политике XSLTransform, содержит элемент, который не определен как префикс в файле XSL, указанном в политике.

Пример сообщения об ошибке

Диагностика

Определите файл XSL, который не удалось оценить с помощью политики преобразования XML, и причину сбоя. В этом случае причина сбоя будет указывать на наличие неразрешенного префикса в определенном номере строки во входных полезных данных XML. Вы можете найти всю эту информацию в элементе faultstring ответа об ошибке. Например, в следующей строке ошибки XSL-файл называется XSL-Transform.xsl, причиной сбоя является неразрешенный префикс, а номер строки — 1.

Вот пример XSL и соответствующая полезная нагрузка XML, которые приводят к ошибке:

Ввод полезных данных XML

Пример полезной нагрузки XML, показанный выше, содержит элемент . Обратите внимание, что XSL не имеет этого префикса. Вместо этого он имеет префикс <Life> .Следовательно, вы получаете ошибку:

Разрешение

Убедитесь, что входные полезные данные XML, переданные в политику XSLTransform, содержат все форматы элементов, определенные как префиксы в файле XSL, используемом в политике.

Чтобы исправить пример XML-файла, показанный выше, вы можете изменить файл, как показано ниже:

Обновлена ​​полезная нагрузка входного XML

Если не указано иное, содержимое этой страницы предоставляется по лицензии Creative Commons Attribution 4.0, а образцы кода — по лицензии Apache 2.0. Подробнее см. в Правилах сайта Google Developers. Java является зарегистрированным товарным знаком Oracle и/или ее дочерних компаний.

Используйте эту задачу для применения преобразований файлов и замены переменных в файлах конфигурации и параметров. Подробнее о том, как обрабатываются переводы, см. в разделе Преобразования файлов и справочник по подстановке переменных.

Эта задача предназначена для веб-пакетов, для нее требуется файл веб-пакета, и она не работает с отдельными файлами json.

Преобразование файлов

В настоящее время преобразования файлов поддерживаются только для файлов XML.

Чтобы применить XML-преобразование к файлам конфигурации (*.config), необходимо указать разделенный новой строкой список правил преобразования файлов, используя следующий синтаксис:

Преобразования файлов полезны во многих сценариях, особенно при развертывании в службе приложений и необходимости добавлять, удалять или изменять конфигурации для различных сред (например, для разработки, тестирования или рабочей среды), следуя стандартному преобразованию Web.config. Синтаксис.

Эту функцию также можно использовать для преобразования других файлов, в том числе файлов конфигурации консольного или служебного приложения Windows (например, FabrikamService.exe.config).

Преобразования файла конфигурации выполняются перед заменой переменных.

Подстановка переменных

В настоящее время для подстановки переменных поддерживаются только форматы файлов XML и JSON.

Токены, определенные в целевых файлах конфигурации, обновляются, а затем заменяются значениями переменных.

Замена переменных выполняется после преобразования файла конфигурации.

Подстановка переменных применяется только к предварительно определенным в иерархии объектов ключам JSON. Новые ключи не создаются.

Примеры

Если вам нужно, чтобы преобразование XML выполнялось для всех файлов конфигурации с шаблоном .Production.config, правило преобразования должно быть указано как:

-transform **\*.Production.config -xml **\*.config

Если у вас есть файл конфигурации, имя которого основано на имени этапа в вашем конвейере, вы можете использовать:

-transform **\*.$(Release.EnvironmentName).config -xml **\*.config

Чтобы заменить вложенные или иерархические переменные JSON, укажите их с помощью выражений JSONPath. Например, чтобы заменить значение ConnectionString в примере ниже, необходимо определить переменную как Data.DefaultConnection.ConnectionString в конвейере сборки или выпуска (или на этапе в конвейере выпуска).

Для подстановки используются только пользовательские переменные, определенные в конвейерах сборки и выпуска. Переменные по умолчанию и системные конвейерные переменные исключаются.

Вот список исключенных в настоящее время префиксов:

Если одни и те же переменные определены как в конвейере выпуска, так и на этапе, переменные, определенные этапом, заменяют переменные, определенные конвейером.

Требования

Фрагмент YAML

Аргументы

Аргумент Описание
Пакет или папка
Путь к папке
Путь файла к пакету или папке. Поддерживаются переменные ( Build | Release ), подстановочные знаки. Например, $(System.DefaultWorkingDirectory)/*/.zip . Для заархивированных папок содержимое извлекается в папку TEMP, выполняются преобразования и результаты заархивируются в исходное местоположение артефакта.
преобразование XML
enableXmlTransform
Включите этот параметр, чтобы применить преобразования XML на основе правил, указанных ниже. Преобразования конфигурации выполняются до любой подстановки переменных. Преобразования XML поддерживаются только для платформы Windows.
Правила преобразования
xmlTransformationRules
Укажите список правил преобразования файлов, разделенных новой строкой, с помощью синтаксис
-transform -xml -result
Путь к результирующему файлу является необязательным, и, если он не указан, исходный файл конфигурации будет заменен преобразованным результирующим файлом.
Формат файла
fileType
Укажите формат файла, в котором должна быть выполнена замена. Подстановка переменных выполняется после любых преобразований конфигурации. Для XML переменные, определенные в конвейерах сборки или выпуска, будут сопоставляться с записями токена («ключ» или «имя») в разделах appSettings, applicationSettings и connectionStrings любого файла конфигурации и файла parameters.xml.
Целевые файлы
targetFiles
Укажите разделенный новой строкой список файлов для подстановки переменных.Имена файлов должны быть указаны относительно корневой папки.

Открытый код

Исходный код этой задачи находится на GitHub с открытым исходным кодом. Отзывы и дополнения приветствуются.

Пользовательский интерфейс был упрощен в Dreamweaver CC и более поздних версиях. В результате некоторые параметры, описанные в этой статье, могут отсутствовать в Dreamweaver CC и более поздних версиях. Дополнительные сведения см. в этой статье.

Расширяемый язык разметки (XML) – это язык, позволяющий структурировать информацию. Как и HTML, XML позволяет структурировать информацию с помощью тегов, но теги XML не предопределены, как теги HTML. Вместо этого XML позволяет создавать теги, которые наилучшим образом определяют структуру данных (схему). Теги вложены в другие для создания схемы родительских и дочерних тегов. Как и большинство тегов HTML, все теги в схеме XML имеют открывающий и закрывающий тег.

В следующем примере показана базовая структура XML-файла:

В этом примере каждый родительский тег содержит три дочерних тега: , и . Но каждый тег также является дочерним тегом тега, который находится на один уровень выше в схеме. Вы можете именовать и структурировать XML-теги любым способом, при условии, что вы соответствующим образом вложите теги в другие теги и назначите каждому открывающему тегу соответствующий закрывающий тег.

Документы XML не содержат никакого форматирования — это просто контейнеры со структурированной информацией. Когда у вас есть XML-схема, вы можете использовать Extensible Stylesheet Language (XSL) для отображения информации. Подобно тому, как каскадные таблицы стилей (CSS) позволяют форматировать HTML, XSL позволяет форматировать XML-данные. Вы можете определить стили, элементы страницы, макет и т. д. в файле XSL и присоединить его к файлу XML, чтобы, когда пользователь просматривает данные XML в браузере, данные форматировались в соответствии с тем, что вы определили в файле XML. XSL-файл. Содержимое (данные XML) и представление (определяемое файлом XSL) полностью разделены, что дает вам больший контроль над тем, как ваша информация отображается на веб-странице. По сути, XSL – это технология представления XML, основным результатом которой является HTML-страница.

Extensible Stylesheet Language Transformations (XSLT) — это подмножество языка XSL, которое фактически позволяет отображать XML-данные на веб-странице и «преобразовывать» их вместе со стилями XSL в удобочитаемую стилизованную информацию в форме HTML. Вы можете использовать Dreamweaver для создания страниц XSLT, которые позволяют выполнять преобразования XSL с помощью сервера приложений или браузера. При преобразовании XSL на стороне сервера сервер выполняет работу по преобразованию XML и XSL и отображению их на странице. При преобразовании на стороне клиента всю работу выполняет браузер (например, Internet Explorer).

Подход, который вы в конечном итоге выберете (преобразование на стороне сервера или преобразование на стороне клиента), зависит от того, чего вы пытаетесь достичь в конечном результате, от доступных вам технологий, уровня доступа к исходным XML-файлам и другие факторы. Оба подхода имеют свои преимущества и ограничения. Например, преобразования на стороне сервера работают во всех браузерах, тогда как преобразования на стороне клиента доступны только для современных браузеров (Internet Explorer 6, Netscape 8, Mozilla 1.8 и Firefox 1.0.2). Преобразования на стороне сервера позволяют динамически отображать XML-данные с вашего собственного сервера или из любого другого места в Интернете, в то время как преобразования на стороне клиента должны использовать данные XML, которые локально размещены на вашем собственном веб-сервере. Наконец, преобразования на стороне сервера требуют, чтобы вы развернули свои страницы на настроенном сервере приложений, а преобразования на стороне клиента требуют только доступа к веб-серверу.

Dreamweaver предоставляет методы для создания страниц XSLT, которые позволяют выполнять преобразования XSL на стороне сервера. Когда сервер приложений выполняет преобразование XSL, файл, содержащий XML-данные, может находиться на вашем собственном сервере или в любом другом месте в Интернете. Кроме того, любой браузер может отображать преобразованные данные. Однако развертывание страниц для преобразований на стороне сервера несколько сложно и требует наличия доступа к серверу приложений.

При работе с преобразованиями XSL на стороне сервера можно использовать Dreamweaver для создания страниц XSLT, которые генерируют полные документы HTML (полные страницы XSLT), или фрагменты XSLT, которые генерируют часть документа HTML. Вся XSLT-страница похожа на обычную HTML-страницу. Он содержит тег и тег и позволяет отображать на странице комбинацию данных HTML и XML. Фрагмент XSLT — это фрагмент кода, используемый отдельным документом, который отображает отформатированные данные XML. В отличие от всей XSLT-страницы, это независимый файл, который не содержит тега или. Если вы хотите отобразить XML-данные на отдельной странице, вы должны создать целую XSLT-страницу и привязать к ней свои XML-данные.Если, с другой стороны, вы хотите отобразить XML-данные в определенном разделе существующей динамической страницы, например, на динамической домашней странице магазина спортивных товаров, где спортивные результаты из RSS-канала отображаются на одной стороне страницы. — вы бы создали XSLT-фрагмент и вставили ссылку на него в динамическую страницу. Создание XSLT-фрагментов и их использование в сочетании с другими динамическими страницами для отображения XML-данных — более распространенный сценарий.

Первым шагом в создании этих типов страниц является создание XSLT-фрагмента. Это отдельный файл, содержащий макет, форматирование и т. д. XML-данных, которые в конечном итоге вы хотите отобразить на динамической странице. Создав XSLT-фрагмент, вы вставляете ссылку на него на свою динамическую страницу (например, на страницу PHP или ColdFusion). Вставленная ссылка на фрагмент работает так же, как включение на стороне сервера (SSI) — отформатированные XML-данные (фрагмент) находятся в отдельном файле, а в представлении «Дизайн» заполнитель для фрагмента отображается на самой динамической странице. Когда браузер запрашивает динамическую страницу, содержащую ссылку на фрагмент, сервер обрабатывает включенную инструкцию и создает новый документ, в котором вместо заполнителя отображается форматированное содержимое фрагмента.


А. Браузер запрашивает динамическую страницу B. Веб-сервер находит страницу и передает ее серверу приложений C. Сервер приложений сканирует страницу в поисках инструкций и получает XSLT-фрагмент D. Сервер приложений выполняет преобразование (считывает XSLT-фрагмент, получает и форматирует xml-данные) E. Сервер приложений вставляет преобразует фрагмент в страницу и передает обратно веб-серверу F. Веб-сервер отправляет готовую страницу в браузер

Вы используете поведение сервера преобразования XSL, чтобы вставить ссылку на фрагмент XSLT на динамическую страницу. Когда вы вставляете ссылку, Dreamweaver создает папку include/MM_XSLTransform/ в корневой папке сайта, содержащую файл библиотеки времени выполнения. Сервер приложений использует функции, определенные в этом файле, при преобразовании указанных XML-данных. Файл отвечает за выборку данных XML и фрагментов XSLT, выполнение преобразования XSL и вывод результатов на веб-страницу.

Файл, содержащий фрагмент XSLT, XML-файл, содержащий ваши данные, и сгенерированный файл библиотеки времени выполнения должны находиться на сервере для правильного отображения вашей страницы. (Если вы выберете удаленный файл XML в качестве источника данных — например, из RSS-канала — этот файл, конечно же, должен находиться где-то еще в Интернете.)

Вы также можете использовать Dreamweaver для создания целых страниц XSLT для использования с преобразованиями на стороне сервера. Вся XSLT-страница работает точно так же, как XSLT-фрагмент, только когда вы вставляете ссылку на всю XSLT-страницу с помощью поведения сервера преобразования XSL, вы вставляете полное содержимое HTML-страницы. Таким образом, динамическая страница (страница .cfm, .php или .asp, которая выступает в качестве страницы-контейнера) должна быть очищена от всего HTML перед вставкой ссылки.

Dreamweaver поддерживает преобразования XSL для страниц ColdFusion, ASP и PHP.

Ваш сервер должен быть правильно настроен для выполнения преобразований на стороне сервера. Для получения дополнительной информации обратитесь к администратору сервера.

Вы можете выполнять XSL-преобразования на клиенте без использования сервера приложений. Вы можете использовать Dreamweaver для создания целой XSLT-страницы, которая будет делать это; однако преобразования на стороне клиента требуют манипулирования XML-файлом, содержащим данные, которые вы хотите отобразить. Кроме того, преобразования на стороне клиента будут работать только в современных браузерах (Internet Explorer 6, Netscape 8, Mozilla 1.8 и Firefox 1.0.2).

Сначала создайте целую XSLT-страницу и присоедините к ней источник данных XML. (Dreamweaver предлагает вам прикрепить источник данных при создании новой страницы.) Вы можете создать XSLT-страницу с нуля или преобразовать существующую HTML-страницу в XSLT-страницу. При преобразовании существующей страницы HTML в страницу XSLT необходимо прикрепить источник данных XML с помощью панели «Привязки» («Окно» > «Привязки»).

После того как вы создали XSLT-страницу, вы должны связать ее с XML-файлом, содержащим XML-данные, вставив ссылку на XSLT-страницу в сам XML-файл (так же, как вы бы вставили ссылку на внешний стиль CSS). лист в разделе HTML-страницы). Посетители вашего сайта должны просматривать файл XML (а не страницу XSLT) в браузере. Когда посетители вашего сайта просматривают страницу, браузер выполняет преобразование XSL и отображает данные XML, отформатированные с помощью связанной страницы XSLT.

Взаимосвязь между связанными страницами XSLT и XML концептуально аналогична, но отличается от модели внешней страницы CSS/HTML.Когда у вас есть HTML-страница с содержимым (например, текстом), вы используете внешнюю таблицу стилей для форматирования этого содержимого. HTML-страница определяет содержимое, а внешний код CSS, который пользователь никогда не видит, определяет представление. С XSLT и XML ситуация обратная. Файл XML (который пользователь никогда не видит в необработанном виде) определяет содержимое, а страница XSLT определяет представление. Страница XSLT содержит таблицы, макет, графику и т. д., которые обычно содержит стандартный HTML. Когда пользователь просматривает файл XML в браузере, страница XSLT форматирует содержимое.


А. Браузер запрашивает файл XML B. Сервер отвечает, отправляя файл XML в браузер C. Браузер читает директиву XML и вызывает файл XSLT D. Сервер отправляет файл XSLT в браузер E. Браузер преобразует данные XML и отображает их в браузере

Когда вы используете Dreamweaver для связывания страницы XSLT со страницей XML, Dreamweaver вставляет соответствующий код вверху страницы XML. Если вы являетесь владельцем страницы XML, на которую вы ссылаетесь (то есть, если файл XML находится исключительно на вашем веб-сервере), все, что вам нужно сделать, — это использовать Dreamweaver для вставки соответствующего кода, связывающего две страницы. Когда вы являетесь владельцем XML-файла, XSL-преобразования, выполняемые клиентом, являются полностью динамическими. То есть всякий раз, когда вы обновляете данные в файле XML, любой вывод HTML с использованием связанной страницы XSLT будет автоматически обновляться новой информацией.

Файлы XML и XSL, которые вы используете для преобразований на стороне клиента, должны находиться в одном каталоге. В противном случае браузер прочитает XML-файл и найдет страницу XSLT для преобразования, но не сможет найти ресурсы (таблицы стилей, изображения и т. д.), определенные относительными ссылками на странице XSLT.

Если у вас нет XML-страницы, на которую вы ссылаетесь (например, если вы хотите использовать XML-данные из RSS-канала где-то в Интернете), рабочий процесс немного усложняется. Для выполнения преобразований на стороне клиента с использованием XML-данных из внешнего источника необходимо сначала загрузить исходный XML-файл в тот же каталог, где находится ваша XSLT-страница. Когда XML-страница находится на вашем локальном сайте, вы можете использовать Dreamweaver, чтобы добавить соответствующий код, связывающий ее со страницей XSLT, и опубликовать обе страницы (загруженный файл XML и связанную страницу XSLT) на веб-сервере. Когда пользователь просматривает страницу XML в браузере, страница XSLT форматирует содержимое, как и в предыдущем примере.

Недостаток выполнения XSL-преобразований на стороне клиента для XML-данных, поступающих из внешнего источника, заключается в том, что XML-данные являются лишь частично «динамическими». Файл XML, который вы загружаете и изменяете, является просто «моментальным снимком» файла, который находится в другом месте в Интернете. Если исходный файл XML, размещенный в Интернете, изменяется, вы должны снова загрузить файл, связать его со страницей XSLT и повторно опубликовать файл XML на своем веб-сервере. Браузер отображает только те данные, которые он получает из XML-файла на вашем веб-сервере, а не данные, содержащиеся в исходном XML-файле.

XSLT-объект «Повторяющаяся область» позволяет отображать на странице повторяющиеся элементы из XML-файла. Любую область, содержащую заполнитель данных XML, можно превратить в повторяющуюся область. Однако наиболее распространенными областями являются таблица, строка таблицы или серия строк таблицы.

В следующем примере показано, как XSLT-объект «Повторяющаяся область» применяется к строке таблицы, в которой отображается информация о меню ресторана. В начальной строке отображаются три разных элемента из схемы XML: товар, описание и цена. Когда XSLT-объект «Повторяющаяся область» применяется к строке таблицы и страница обрабатывается сервером приложений или браузером, таблица повторяется с уникальными данными, вставляемыми в каждую новую строку таблицы.


При применении XSLT-объекта «Повторяющаяся область» к элементу в окне «Документ» вокруг повторяющейся области появляется тонкий серый контур с вкладками. При предварительном просмотре своей работы в браузере (Файл > Предварительный просмотр в браузере) серый контур исчезает, а выделение расширяется для отображения заданных повторяющихся элементов в XML-файле, как на предыдущем рисунке.

При добавлении объекта XSLT «Повторяющаяся область» на страницу длина заполнителя XML-данных в окне документа усекается. Это связано с тем, что Dreamweaver обновляет выражение XPath (язык пути XML) для заполнителя данных XML, чтобы оно относилось к пути повторяющегося элемента.

Например, следующий код предназначен для таблицы, содержащей два динамических заполнителя, без применения XSLT-объекта «Повторяющаяся область» к таблице:

Следующий код предназначен для той же таблицы с примененным к ней XSLT-объектом «Повторяющаяся область»:

В предыдущем примере Dreamweaver обновил XPath для элементов, попадающих в повторяющуюся область (заголовок и описание), чтобы они относились к XPath во вложенных тегах, а не ко всему документу.

Dreamweaver генерирует зависимые от контекста выражения XPath и в других случаях. Например, если вы перетащите заполнитель XML-данных в таблицу, к которой уже применен XSLT-объект «Повторяющаяся область», Dreamweaver автоматически отобразит XPath относительно существующего XPath во вложенных тегах.

При использовании функции «Просмотр в браузере» («Файл» > «Просмотр в браузере») для предварительного просмотра XML-данных, вставленных во фрагмент XSLT или на всю XSLT-страницу, механизм, выполняющий преобразование XSL, зависит от ситуации. Для динамических страниц, содержащих фрагменты XSLT, сервер приложений всегда выполняет преобразование. В других случаях преобразование может выполняться Dreamweaver или браузером.

В следующей таблице приведены ситуации при использовании предварительного просмотра в браузере и механизмы, выполняющие соответствующие преобразования:

Для получения подробной информации и инструкций нажмите на ссылки ниже.

После импорта XML-данных импортированное содержимое отображается в виде элементов (основных строительных блоков XML) на панели «Структура». InDesign не создает новые фреймы или страницы при импорте XML.

Добавить или объединить?

Вы можете импортировать XML, используя один из двух режимов: добавление или слияние. Выбранный вами метод зависит от вашего рабочего процесса (ручной или автоматический), от того, как вы хотите обрабатывать существующее содержимое в документе, и от того, нужны ли вам дополнительные параметры для обработки импортированных данных.

Когда вы добавляете импортированное содержимое, существующая структура и содержание документа остаются без изменений; новый XML-контент размещается в нижней части панели «Структура» в виде элементов.

Когда вы объединяете импортированное содержимое, InDesign сравнивает входящий XML со структурой и именами элементов, уже имеющихся в вашем документе. Если элементы совпадают, импортированные данные заменяют существующее содержимое документа и объединяются в правильно помеченные фреймы (или заполнители) в макете. (Элементы, для которых InDesign не может найти совпадающее имя и иерархический ранг, помещаются на панель «Структура», чтобы их можно было разместить вручную.) Режим слияния не только делает возможным автоматическую компоновку, но и предоставляет более расширенные параметры импорта, включая возможность фильтровать входящий текст и клонировать элементы для повторяющихся данных.

Макет содержимого

После импорта XML-содержимого ваш следующий шаг — поместить его в документ. Вы можете размещать контент вручную, автоматически или с помощью сценариев. Выбор метода зависит от импортируемого содержимого, макета документа и рабочего процесса.

Разместить контент вручную

С помощью ручного метода вы перетаскиваете элементы из панели «Структура» на страницы документа или во фреймы. Этот метод требует небольшой настройки или планирования. Используйте этот метод, если тип импортируемого контента различается или если вы получаете контент из нескольких источников.


Размещение импортированного содержимого XML вручную

Автоматическое размещение контента

Планируя заранее, вы можете автоматизировать процесс размещения XML-данных в макете. Для автоматического размещения XML-содержимого сначала подготовьте документ, создав тегированные фреймы-заполнители для хранения входящего XML. Если структура XML и имена тегов для входящего содержимого совпадают с именами тегов и структурой рамок-заполнителей, InDesign может автоматически размещать импортированный XML в документе. InDesign также может клонировать элементы для обработки повторяющихся данных, таких как списки адресов и материалы каталога. Используйте метод автоматической компоновки как часть структурированного рабочего процесса, чтобы ускорить производство и повысить его эффективность.


Выбранный кадр-заполнитель (выше) помечен элементом Story. При импорте XML-данных (внизу) рамка-заполнитель элемента Story автоматически заполняется содержимым элемента Story.

InDesign распознает специальные атрибуты пространства имен, которые могут указывать стили абзацев или символов в XML. Дополнительные сведения см. в техническом справочном руководстве по XML.

Вы можете поместить XML-данные в документ, используя режим слияния или режим добавления. Режим слияния позволяет автоматизировать размещение контента. Вы также можете отфильтровать данные в файле XML, чтобы разместить только определенные части содержимого.

Объединять входящий XML-контент, когда:

Документ содержит фреймы-заполнители, и вы хотите заполнить их импортированным содержимым XML.

Документ содержит содержимое XML, и вы хотите заменить его импортированным содержимым XML.

Документ не содержит XML-структуры, и вы хотите, чтобы InDesign заменил корень по умолчанию корнем входящего XML-файла.

Режим слияния сравнивает входящие XML-данные с элементами, которые уже есть в документе. Он перемещается по файлу, элемент за элементом, сравнивая входящие элементы с существующими следующим образом:

1.InDesign начинает сравнение с корневого элемента

Если корневые элементы импортированного XML-файла и документа InDesign не совпадают, а панель «Структура» не содержит существующей структуры, InDesign заменяет корень документа InDesign корнем входящего XML-файла и импортирует файл.< /p>

Если корневые элементы не совпадают, а панель «Структура» уже содержит элементы, InDesign добавит файл в конец существующей структуры.

Если корневые элементы совпадают, процесс слияния (и сопоставления) продолжается.

2.InDesign перемещается к элементу под корнем

Начиная с элемента, находящегося непосредственно под корнем во входящем XML-файле, InDesign ищет соответствующий элемент на панели «Структура». Чтобы совпадение произошло, входящий XML-элемент должен иметь то же имя, что и существующий элемент на панели структуры, и эти два элемента должны существовать на одном уровне в иерархии.

Если InDesign находит соответствующий элемент на панели «Структура», он заменяет элемент на панели «Структура» элементом из входящего XML-файла.

Если InDesign не находит соответствия, он вставляет входящий элемент на панель «Структура» в начальной точке поиска. Например, если поиск начинается чуть ниже корня, а совпадение не найдено, входящий элемент размещается сразу под корнем.

3.InDesign продолжает сравнивать элементы

Поэлементно InDesign продолжает сравнивать входящий XML с существующей структурой. Начальная точка поиска на панели «Структура» меняется по мере продвижения поиска, причем каждый поиск начинается чуть ниже последнего вставленного или замененного элемента. InDesign всегда перемещается вниз от текущего местоположения; он никогда не размещает элементы над предыдущим элементом, который он вставил или заменил.

При импорте XML-содержимого новые элементы отображаются на панели «Структура». Оттуда вы можете перетаскивать элементы, чтобы разместить их в документе.

Выберите «Файл» > «Импорт XML» (или выберите «Импорт XML» в меню панели «Структура») и выберите XML-файл, который хотите импортировать.

InDesign отобразит XML-файл на панели «Ссылки» и отобразит на панели желтый предупреждающий треугольник, если XML-файл изменится.

Вы можете вручную разместить XML-содержимое в макете документа, перетащив элементы из панели «Структура» на страницу или в существующие фреймы. Когда вы размещаете элемент, его дочерние элементы (и все дочерние элементы ниже них, если таковые имеются) также размещаются.

На панели «Структура» на значке элемента появляется синий ромб, характерный для структуры, если элемент был помещен в документ; элементы, которые не были размещены, отмечены значком неразмещенных элементов.

Если вы импортировали XML с помощью параметра "Объединить содержимое", некоторые элементы могут быть уже размещены. При объединении импортированного содержимого InDesign автоматически размещает элементы в существующих фреймах, если они имеют идентичную структуру и теги.

Откройте панель "Структура" ("Просмотр" > "Структура" > "Показать структуру") и выберите элемент, который вы хотите разместить.

Перетащите элемент на страницу. InDesign создает рамку для элемента.

Перетащите элемент на существующий фрейм. Если фрейм содержит содержимое, оно заменяется содержимым из данных XML.

Сопоставление XML-тегов со стилями абзацев, символов, таблиц и ячеек.

Применить стили к элементам.

Отформатируйте выбранный контент вручную, выбрав параметры текста на панели управления.

Теги XML — это просто описания данных; они не содержат инструкций по форматированию. Таким образом, вам необходимо отформатировать XML-контент после его импорта и компоновки. Один из способов сделать это — сопоставить теги XML со стилями абзаца, символа, таблицы или ячейки. Например, тег Byline можно сопоставить со стилем символов «Автор», чтобы всему импортированному и размещенному XML-содержимому, помеченному тегом Byline, автоматически был назначен стиль символов «Автор». Сопоставление тегов со стилями упрощает форматирование импортированного содержимого XML и требует меньше времени.

Вам не нужно сопоставлять каждый тег со стилем абзаца или символа. Некоторые элементы могут не отображаться в макете, а другие проще форматировать по одному. Кроме того, дочерние элементы принимают стиль абзаца или символа, назначенный их родительскому элементу, что может привести к путанице, если вы не сопоставите родительские и дочерние элементы по отдельности.

Команда «Сопоставить теги со стилями» повторно применяет стили ко всему документу, что иногда приводит к нежелательным результатам.Когда вы сопоставляете тег со стилем, текст, ранее назначенный одному стилю, может быть переназначен другому, в зависимости от его тега XML. Если вы уже отформатировали какой-либо текст, вы можете применить стили вручную, чтобы предотвратить переопределение выбранных вами стилей абзаца и символов.


Меню стилей отображается для каждого тега в диалоговом окне «Сопоставление тегов со стилями»

Чтобы импортировать стили, теги и определения сопоставления из другого документа, нажмите «Загрузить», выберите документ и нажмите «Открыть».

Чтобы сопоставить теги со стилями по отдельности, щелкните столбец «Стиль» рядом с тегом и выберите стиль абзаца или символа в появившемся меню. (Символ абзаца обозначает стили абзаца в меню; буква «А» обозначает стили символов.) Повторите эти действия для каждого тега, который вы хотите сопоставить.

Чтобы автоматически сопоставить теги со стилями с одинаковыми именами, нажмите «Сопоставить по имени». В столбце Стиль выбираются стили с именами, идентичными именам тегов. Для соответствия тег и стиль должны иметь не только одно и то же имя, но и одинаковый регистр; Например, H1 и h1 не считаются совпадением. (Если одно и то же имя стиля существует в двух разных группах стилей, сопоставление по имени не работает, и вы получаете предупреждение о необходимости переименовать один из стилей.)

Используя InDesign, вы можете автоматически помещать импортированное XML-содержимое в макет. Для этого вы сначала создаете фреймы-заполнители или таблицы и помечаете их теми же именами тегов, что и XML-элементы, которые вы хотите в них поместить. Затем вы импортируете содержимое XML в заполнители в режиме слияния. Когда теги совпадают по имени и по структурной иерархии, InDesign объединяет XML-содержимое, заменяя любое существующее содержимое в документе.

Этот метод удобен, когда вы хотите использовать один и тот же макет для разных наборов контента. Например, еженедельный информационный бюллетень может иметь один и тот же формат из недели в неделю, но предлагать разное содержание в каждой публикации.

Для того, чтобы импортированный XML можно было объединить непосредственно в макет, ваш документ должен соответствовать следующим требованиям:

Фреймы (или таблицы) в документе должны иметь теги с именами, идентичными элементам в XML-файле, который вы собираетесь импортировать.

Структура документа (как показано на панели «Структура») должна соответствовать структуре импортированного XML-файла. Другими словами, элементы с одинаковыми именами должны находиться в одних и тех же местах в структурной иерархии обоих файлов. Чтобы получить эту параллельную структуру, вам может потребоваться переупорядочить и переупорядочить элементы (и их дочерние элементы) на панели «Структура» или использовать параметр «Применить XSLT» при импорте XML-файла.

InDesign передает объединенное XML-содержимое только в существующие фреймы. Содержимое любого элемента, которое не помещается в его фрейме (или серии связанных фреймов), становится вытесненным текстом.

XML является повторяющимся, если одна и та же конфигурация элементов появляется несколько раз подряд, но содержит уникальные данные в каждом экземпляре. Например, записи базы данных повторяются. Адреса в таблице базы данных содержат повторяющуюся информацию — имя, почтовый адрес, город, штат, почтовый индекс — для разных людей.

При импорте XML-содержимого можно выбрать «Клонировать повторяющиеся текстовые элементы» в диалоговом окне «Параметры импорта XML». Выбор этого параметра указывает InDesign клонировать повторяющиеся элементы в структуре. Клонирование позволяет объединять повторяющиеся XML-данные в документ без необходимости создавать элементы-заполнители на панели «Структура» (или текст-заполнитель во фрейме) для каждой отдельной записи. Например, чтобы импортировать список адресов XML с 25 записями, создайте соответствующую структуру элементов для одной записи на панели Структура. Когда вы импортируете полный список, InDesign клонирует эту структуру, чтобы создать элементы для всех 25 записей.

Повторяющийся XML-контент обрабатывается как единая история, когда он объединяется с документом. Если кадры-заполнители соединены вместе, содержимое перетекает из одного кадра в другой. Если во фреймах-заполнителях недостаточно места для размещения XML-содержимого, вы можете автоматически передать оставшееся содержимое, создав и объединив дополнительные фреймы; вам не нужно вручную перетаскивать элементы из панели «Структура» в отдельные фреймы.


Резьбовой заполнитель в макете (слева) и макете после импорта (справа)

Создавайте фреймы-заполнители или таблицы в документе, если хотите, чтобы InDesign автоматически объединял импортированный XML в макет.

InDesign передает объединенное XML-содержимое только в существующие фреймы. Любой контент, который не помещается в предоставленные рамки, становится вытесненным текстом.

Вы также можете создать замещающий текст, чтобы обеспечить правильное размещение и форматирование XML-данных на странице. Текст-заполнитель также можно использовать для включения табуляции, пробелов или меток (называемых статическим текстом) между элементами XML, которые будут отображаться во фрейме.


Текст-заполнитель с тегами (слева) и макет после импорта (справа)

А. Возвращает и статический текст, добавляемый между элементами B. Текст-заполнитель

Например, если вы импортируете и размещаете информацию о продукте, вы можете разделить название, описание и цену продукта с помощью вкладки и добавить метки, такие как "Товар:" или "Цена:", перед текстом-заполнителем. записи для этих элементов. Когда XML-данные объединяются во фрейм, статические метки, интервалы и табуляции сохраняются между элементами содержимого.

Если вы объединяете повторяющиеся XML-данные в документ и указываете InDesign клонировать повторяющиеся элементы, статический текст и интервалы также клонируются для каждого экземпляра данных.

Читайте также: