Как связать файл XML с файлом XSLT? - PullRequest
39 голосов
/ 11 августа 2010

Примеры на

http://en.wikipedia.org/wiki/XSLT

или

http://www.w3schools.com/xsl/tryxslt.asp?xmlfile=cdcatalog&xsltfile=cdcatalog

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

Ответы [ 4 ]

63 голосов
/ 11 августа 2010

Вы можете добавить это после объявления xml

<?xml-stylesheet type="text/xsl" href="yourxsl.xsl"?>
3 голосов
/ 11 августа 2010

Один файл не знает, как «всасывать данные» в другой файл, потому что эти файлы не предназначены для обработки.

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

В случае рендеринга всего преобразования XML-документа, когда он отображается в браузере, тогда инструкция обработки:

<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?>

(На самом деле это должен был быть тип «text / xml» для типа, так как это тип mime-документа XSL-документа, но это было в конце войн браузеров, и реализация функций браузера все еще часто происходила быстрее, чем скорость здравого смысла).

Если вы управляете преобразованием программно, используя какую-то библиотеку (есть объекты для клиентского javascript и библиотеки на любом языке, с которого вы, вероятно, захотите это сделать), то у вас достаточно контроля, чтобы подробно что трансформируется во что. Вот некоторые интересные случаи.

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

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

  3. Вы можете передавать значения параметрам верхнего уровня в XSLT.

3 голосов
/ 11 августа 2010

Вы также можете выполнить преобразование на html-странице:

<script type="text/javascript">
  var xml = new ActiveXObject("Microsoft.XMLDOM")
  xml.async = false
  xml.load("some_xml.xml")
  var xsl = new ActiveXObject("Microsoft.XMLDOM")
  xsl.async = false
  xsl.load("some_xsl.xsl")
  document.write(xml.transformNode(xsl))
</script>
1 голос
/ 11 августа 2010

Вам нужен внешний инструмент или библиотека, чтобы применить Xslt-преобразование к Xml. Как это сделать, зависит от вашей среды программирования, однако для .Net XslCompiledTransform - это класс, используемый для применения Xslt-преобразования к фрагменту Xml (либо файла, либо Xml в памяти).

В качестве альтернативы вы можете использовать инструмент командной строки Microsoft xslt.exe - вам нужно выяснить, как сделать то же самое в других языках программирования / операционных системах.

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