Аналогично вышеописанному, но это может привести к ошибке, поскольку части <![CDATA[
и ]]>
не являются допустимым кодом. Если вы помещаете его в сценарий XSL, вы также можете поставить отметку комментария JS перед этими начальными и конечными элементами.
Я также использовал элемент xsl:text
для вывода части <![CDATA[
. Эта часть может быть немного обманом, но приводит к в правильно сформированном XML. Пример из блока xsl:choose
может быть ...
...
<xsl:when test='name()="script"'>
<script>
<xsl:for-each select='@*'><xsl:copy-of select='.' /></xsl:for-each>
<xsl:text disable-output-escaping='yes'>
// <![CDATA[
</xsl:text>
<xsl:copy-of select='./text()' />
<xsl:text disable-output-escaping='yes'>
//]]>
</xsl:text>
</script>
</xsl:when>
...
Прогуливаясь по кусочкам ...
- Обнаружение элемента
<script>
.
- Копировать тег
<script>
для вывода.
- Обязательно сохраняйте атрибуты тега в выводе с помощью быстрой строки
xsl:for-each
.
- Вывести не экранированный текст:
// <![CDATA[
. //
отображает оставшуюся часть строки как комментарий и, таким образом, предотвращает ошибку JS.
- Скопируйте текстовое содержимое тега
<script>
. ПРИМЕЧАНИЕ. Вы должны предварительно сохранить новую строку (как выше или каким-либо другим способом), чтобы закомментированная строка, прежде чем она не оказалась в той же строке, что и эта. Очевидно, что если он это сделает, он также закомментирует эту строку. Сохранение одного после не является обязательным, но сохраняет эстетику двух соответствующих тегов CDATA.
- Вывод не экранированного текста:
// ]]>
. Это завершает блок CDATA, и снова, маркировка CDATA игнорируется браузером при чтении JS.
- Закройте блок с тегом
</script>
, конечно.
- И, если вы используете его в
xsl:choose
блоке, закройте тогда xsl:when
.
Только шаги 2, 3, 5 и 7 фактически копируют блок скрипта. Остальное занято, чтобы заставить его работать.
Преобразование блока, например ...
...
<script type='javascript'>alert('Hello World!');</script>
...
Тогда становится,
...
<script type='javascript'>
// <![CDATA[
alert('Hello World!');
// ]]>
</script>
Эффективно сохраняется и читается как XML, так и браузером.