Я пытаюсь встроить xsl в файл XML. Причина этого заключается в том, чтобы создать один файл, который можно было бы перемещать на разные компьютеры, это избавило бы от необходимости перемещать файл xsl.
Файл xsl создает таблицу и берет тестовый шаг из xml, а также независимо от того, прошел он или не прошел, довольно просто. Я думаю, что проблема в том, что в xsl есть javascript, и он отображается, когда xml загружается в IE.
Когда я загружаю xml-файл в IE, над таблицей отображается javascript, а под таблицей отображается xml.
Вот как оформлен мой документ:
<!DOCTYPE doc [
<!ATTLIST xsl:stylesheet
id ID #REQUIRED>
]>
<doc>
<xsl:stylesheet id = "4.1.0"
version = "1.0"
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl = "urn:schemas-microsoft-com:xslt"
xmlns:user = "http://www.ni.com/TestStand"
xmlns:vb_user = "http://www.ni.com/TestStand/" >
<xsl:template match = "xsl:stylesheet" />
<xsl:text disable-output-escaping = "yes">
<msxsl:script language = "vbscript" implements-prefix = "vb_user">
option explicit
'This function will return the localized decimal point for a decimal number
Function GetLocalizedDecimalPoint ()
dim lDecPoint
lDecPoint = Mid(CStr(1.1),2,1)
GetLocalizedDecimalPoint = lDecPoint
End Function
</msxsl:script>
<msxsl:script language = "javascript" implements-prefix = "user"><


![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Хотя спецификация W3C XSLT поддерживает встраивание таблицы стилей XSLT в XML-документ, похоже, что IE и Firefox не поддерживают это.
ОБНОВИТЬ: Согласно комментарию Роберта Ниестроя, годы спустя, в октябре 2014 года, это работает в FireFox 33.
Однако есть хорошая альтернатива: встроить XML-документ в таблицу стилей XSLT..
Ниже приведен пример.
Таблица стилей XSLT, содержащая встроенный XML-документ:
<?xml-stylesheet type = "text/xsl" href = "myEmbedded.xml"?>
<xsl:stylesheet version = "1.0"
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration = "yes"/>
<xsl:variable name = "vEmbDoc">
<doc>
<head></head>
<body>
<para id = "foo">Hello I am foo</para>
</body>
</doc>
</xsl:variable>
<xsl:template match = "para">
<h1><xsl:value-of select = "."/></h1>
</xsl:template>
<xsl:template match = "xsl:template"/>
</xsl:stylesheet>
Когда tis файл открывается в IE, в браузере отображается желаемый результат:
Обратите внимание, что необходимо включать шаблоны, которые игнорируют большинство инструкций XSLT (в этом случае мы игнорируем любой <xsl:template>, просто не имея тела шаблона.
@RobertNiestroj, Спасибо за эту информацию. Обновил ответ.
Встраивание таблицы стилей возможно для большинства браузеров, кроме IE. Найдите ссылку на описание и пример в публикации ниже.
IE6 / 7/8 по умолчанию не поддерживает встроенные таблицы стилей.
Вы можете использовать обходной путь, позволяющий IE обрабатывать встроенные таблицы стилей отсюда:
http://www.biglist.com/lists/lists.mulberrytech.com/xsl-list/archives/201001/msg00390.html
Поскольку ваша таблица стилей использует msxsl, предыдущий метод включения встраивания таблиц стилей для браузеров IE должен вам подойти.
Если вам нужно встраивание таблиц стилей, которое работает во всех браузерах, вы можете использовать технику поддержка встраивания таблиц стилей для ВСЕХ браузеров.
Вы хотели изменить свой предыдущий ответ с помощью этой информации? Я могу сделать это за тебя. Вы потеряли связь с предыдущей учетной записью? Щелкните ссылку «связаться с нами» внизу страницы и сообщите об этом команде.
Важное примечание, когда вы встраиваете документ в подобную таблицу стилей - имя файла кодируется в первой строке таблицы стилей. Это означает, что если вы переименуете файл, документ больше не будет анализироваться.