Как лучше всего открыть xml, разобрать с xslt и показать результат в браузере - PullRequest
0 голосов
/ 26 марта 2012

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

У меня есть преобразование test.xslt, которое преобразует входной xml в html, и входной файл test.xml, содержащий

<?xml version="1.0" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="test.xslt" ?>
<root>...</root>

, который при открытии в IE9 аккуратно отображает преобразованный xml, содержащийсявыше в корневом элементе.

Вопрос 1
Существует ли инструкция по обработке или аналогичная для включения исходного XML-файла в открываемый XML-файл, что-то вроде следующего:

<?xml version="1.0" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="test.xslt" ?>
<... instruction to include source file data.xml>

Вопрос 2
Открытый файл имеет расширение xml.Есть ли способ изменить содержимое файла так, чтобы он был действительным html, позволяя сохранять файл с расширением html, чтобы при открытии был выбран браузер по умолчанию (простое изменение расширения на html, очевидно, не дает желаемого эффекта, поэтому некоторыенеобходимо структурное изменение)?

Вопрос 3
Моя цель состоит в том, чтобы запросить базу данных, чтобы получить данные для анализа по коду xslt.Каков наилучший способ сделать это (без проблем, если это включает в себя javascript)?

Вопрос 4
Стандартные утилиты БД могут экспортировать результаты запроса в атрибут-центрированном виде (имена столбцов изначения представляются в виде имен и значений атрибутов).Это может включать предварительный анализ xml из db, чтобы преобразовать его в родительско-дочернюю моду (столбцы как дети вместо атрибутов).Каков наилучший способ сделать этот предварительный анализ (примечание: у меня уже есть xslt для этого; мне интересно узнать о потоке данных и когда / как запустить два xslt в последовательности), а затем применить test.xslt (желательно без сохранения промежуточногоxml файлы результатов на сервере)?

Вопрос 5
Когда я открываю выше xml в IE9, это работает нормально, как сказано.Но открытие его в ошибках Firefox (проблема RTF, по-видимому, мне нужно использовать функцию установки узлов Firefox, но мне все еще нужно выяснить, какое пространство имен у него есть), и Opera / Chrome / Safari не отображают никакого содержимого.Каковы предварительные условия для различных браузеров, где я могу найти больше информации об этом?

Ответы [ 2 ]

1 голос
/ 26 марта 2012

Q1 Если вы начнете с предоставления html-файла, который затем обращается к xml и xslt через javascript, он, естественно, имеет доступ как ко входу, так и к выходу xslt.Если вы обслуживаете xml и инициируете преобразование с использованием xml-stylesheet pi, то, возможно, лучше всего (в зависимости от того, что вы хотите сделать) вставить исходный источник в вывод, тогда javascript на сгенерированной странице может получить доступесли необходимо, например,

 <xsl:template matcj="whatever">
    <html>
      <head>
        <script id="source" type="x-xml-spurce">
           <xsl:copy-of select="/"/>
         </script>
      .... whatever you were going to do

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

Q2 Если вы хотите использовать API xml-stylesheet, тогда у вас естьслужить ему как XML.Однако вместо этого вы можете просто обслуживать html, а затем обращаться к xml и xslt из скрипта на html-странице, используя браузер javascip xslt api.как отмечено выше, это более гибкий механизм xml-stylesheet.

Q3 pass

Q4 Если вы обращаетесь к xslt из javascript, тогдалегко связать вывод одного с входом другого без обратной записи на сервер, поскольку у вас есть доступ к результату в виде узла DOM (или строки, в зависимости)

1 голос
/ 26 марта 2012

Ответ на вопрос 5: Firefox / Mozilla, Opera, Safari, Chrome поддерживают функцию расширения набора EXSLT в пространстве имен http://exslt.org/common, для IE и MSXML вы можете использовать скрипт (импортирован)внутри таблицы стилей XSLT, чтобы она тоже могла поддерживать это пространство имен, см. http://dpcarlisle.blogspot.de/2007/05/exslt-node-set-function.html. Таким образом, внутри основной таблицы стилей, где вам нужно использовать функцию node-set, вам не нужно писать другой код для обслуживания различныхПространства имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...