Вставьте содержимое внешнего файла как HTML через XSLT - PullRequest
3 голосов
/ 12 мая 2011

Я немного застрял с какой-то проблемой XSLT.

У меня есть несколько простых xml-файлов и следующая таблица стилей:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:param name="linked_content"/>

<xsl:template match="/">
    <html>
        <head>
            <title>Chapter summary</title>
        </head>
        <body BGCOLOR="white">
            <xsl:value-of select="$linked_content"></xsl:value-of>
        </body>
    </html>             
</xsl:template>

</xsl:stylesheet>

related_content происходит из простого текстового файла (например, summary.txt):

<p>
Consider this as a simple summary ^^
</p>

<h3>Part One</h3>

Теперь мой вопрос: как я могу вставить HTML-код из текстового файла в виде HTML-кода в полученный HTML-файл. Я знаю, что приведенный выше код не будет работать, так как я получаю только & gt, & lt в результирующем вставленном тексте.

Я не застрял, чтобы отправить контент через параметр. Если бы это был способ прочитать текстовый файл из таблицы стилей, это было бы здорово!

У кого-нибудь есть идея?

EDIT: Все еще застрял здесь. Я попробовал обходной путь, читая текстовый файл в Java и устанавливая содержимое в качестве параметра таблицы стилей. К сожалению,

  • <</li>
  • >

знаки в процессе переводятся в & lt и & gt ... таким образом, HTML-код ввернут. Есть ли шанс заставить таблицу стилей не преобразовывать их?

Thx!

Ответы [ 3 ]

2 голосов
/ 12 мая 2011

Правильно ли сформированы ваши html-файлы?

Вы можете попробовать использовать 'copy-of' в своем xsl.

<p><xsl:copy-of select="document('yourHtmlDoc.html')"/></p>

Если вам нужны определенные элементы из html-файла,Вы даже можете установить путь, учитывая, что ваш HTML правильно сформирован.

<xsl:copy-of select="document('yourHtmlDoc.html')/tagsNeeded"/>
1 голос
/ 12 мая 2011

Вы можете использовать функцию unparsed-text (), которая может читать внешний файл в. Или, если вы знаете, что внешний файл является допустимым XML, вы также можете использовать функцию document (). Однако обе функции XSLT 2.0 - я думаю.

0 голосов
/ 12 мая 2011

Такая проблема беспорядочная.Вы можете рассматривать это как преобразование HTML-в-HTML, в котором процессор XSLT видит HTML только как текст, или как преобразование HTML-в-HTML, в котором процессор XSLT видит HTML как XML.В первом случае вы не сможете сильно трансформировать контент;во втором случае вы подвергаетесь действительному вводу.В любом случае, это не чистый сценарий использования XML-XML, для которого был разработан XSLT, поэтому вам потребуются расширения.

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

Второй подход - обработка его как XML - может быть реализован с помощьюрасширения, такие как saxon: parse-html (), который принимает ввод HTML и преобразует его в представление дерева некоторого «эквивалентного» XML.

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