Подтвердить что ты не робот

Как связать XML файл с файлом XSLT?

Примеры в

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

или

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

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

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

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

  • У вас может даже быть документ с содержимым node и node преобразований, выбрать их и запустить преобразование.

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

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

Ответ 3

Вы также можете сделать преобразование на странице 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>

Ответ 4

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

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