2016-10-06 7 views
0

Я использую XPATH 1.0 и XSLT 1.0. Мне интересно, если следующий кодCDATA замедляет преобразование xslt в XSLT 1.0

<xsl:choose> 
    <xsl:when test="@name='some'"><![CDATA[one]]></xsl:when> 
    <xsl:otherwise><![CDATA[two]]></xsl:otherwise> 
</xsl:choose> 

имеет значение в случае исполнения с

<xsl:choose> 
     <xsl:when test="@name='some'"><xsl:value-of select="'one'"/></xsl:when> 
     <xsl:otherwise><xsl:value-of select="'two'"/></xsl:otherwise> 
    </xsl:choose> 

, если мы знаем, что должно быть не необходимости для некоторых специальных символов в избранных? Полезно ли использовать <![CDATA[one]]>. Или его использование уменьшает время компиляции xslt, или его легко читать?

+0

Я не знаю, о производительности, но я хотел бы использовать 'XSL: Text' для вывода буквального текста. Или, если у вас нет пробелов, о которых нужно беспокоиться, просто напишите литеральный текст, например. ' one'. –

+1

Зачем вам нужно использовать CDATA все, почему вы не можете использовать 'xsl: when test =" @ name = 'some' "> one'? Что касается производительности, просто измерить, XSLT-процессор вообще не имеет отношения к CDATA, он будет разбираться в текстовом узле с помощью основного синтаксического анализатора XML. Xalan достаточно умен, чтобы оптимизировать константу '' Я не знаю. –

+0

Никогда не нужно использовать разделы CDATA вокруг текста, который не содержит специальных символов, таких как '<' и '&'. Но вряд ли это наложит больше, чем наносекунду или две на стоимость обработки, и это будет одноразовая стоимость во время составления таблицы стилей. –

ответ

0

На мой взгляд, если есть улучшение производительности, это не так важно, чтобы оправдать ваш первый пример.

В этом случае я бы обратил больше внимания на обслуживание и читаемость в качестве вашего второго примера. С помощью этого решения, если вы хотите изменить способ отображения элементов (как cdata или нет), вы можете использовать атрибуты cdata-section-elements в элементе вывода.

Вот хороший пример об этом How to use cdata in xslt

+0

@ Martin Honnen Я видел прямо сейчас, что принятый ответ на вопрос, который я привел, является вашим :) – Aris2World

Смежные вопросы