xsl:import и xsl:include в таблицах стилей не работают над Google Chrome

Если это имеет значение (см. ответ Jim). На моей машине, рабочем python 2.5:

PS C:\> python -m timeit -n 100000 10000**.5
100000 loops, best of 3: 0.0543 usec per loop
PS C:\> python -m timeit -n 100000 -s "import math" math.sqrt(10000)
100000 loops, best of 3: 0.162 usec per loop
PS C:\> python -m timeit -n 100000 -s "from math import sqrt" sqrt(10000)
100000 loops, best of 3: 0.0541 usec per loop
5
задан Benjamin 7 January 2014 в 11:58
поделиться

4 ответа

Я бы сделал что-то вроде следующего, которое объединит серверные таблицы стилей, прежде чем они попадут в Chrome. Первый шаг выполнен, потому что xsl: import - это не то же самое, что замена всех мест импортированными таблицами стилей.

  1. Заменить все xsl: import на xsl: include (приоритет импорта не применяется к xsl: include , поэтому вам может потребоваться изменить код и вместо этого использовать приоритеты)
  2. Используйте приведенную ниже таблицу стилей на стороне сервера, чтобы объединить их в один перед обслуживание
  3. Подождите несколько недель (может быть месяцев). Я создал исправление для Chrome и в настоящее время работаю с командой разработчиков над включением исправления в сборку.
<xsl:template match="node()">
    <xsl:copy>
       <xsl:copy-of select="@*"/>
       <xsl:apply-templates select="node()"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="xsl:include">
   <!-- you'll probably want to be a bit more restrictive here -->
   <xsl:copy-of select="document(@href)/xsl:stylesheet/*" />
</xsl:template>

Обновление: Просто примечание: ошибка Chrome появляется и в Safari.

5
ответ дан 14 December 2019 в 04:41
поделиться

Вы могли бы сделать это на Python с модулями libxml2 и libxslt ... чтобы не делать всю вашу работу за вас, а начиная с чего-то вроде этого:

import libxml2, libxslt

styledoc = libxml2.parseFile("page.xsl")
style = libxslt.parseStylesheetDoc(styledoc)
doc = libxml2.parseFile("somefile.xml")
result = style.applyStylesheet(doc, None)

Затем просто верните вещь обратно выход.

2
ответ дан 14 December 2019 в 04:41
поделиться

http://www.w3.org/TR/xslt#literal-result-element показывает, как решить проблему с пространством имен duplicate-xsl-name при написании таблицы стилей XSL, которая преобразует вашу существующую таблицу стилей XSL в таблицу стилей XSL с расширением .

Однако будьте осторожны с различиями между и ] .

0
ответ дан 14 December 2019 в 04:41
поделиться

Попробуйте что-нибудь вроде этого на php:

<?php
$sXml  = "<xml>";
$sXml .= "<testtag>hello tester</testtag>";
$sXml .= "</xml>";

# LOAD XML FILE
$XML = new DOMDocument();
$XML->loadXML( $sXml );

# START XSLT
$xslt = new XSLTProcessor();
$XSL = new DOMDocument();
$XSL->load( 'xsl/index.xsl', LIBXML_NOCDATA);
$xslt->importStylesheet( $XSL );
#PRINT
print $xslt->transformToXML( $XML );
?>

1
ответ дан 14 December 2019 в 04:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: