2016-10-06 22 views
0

私はXPATH 1.0とXSLT 1.0を使用します。我々は選択でいくつかの特殊記号の無い必要性がなければならないことがわかっている場合は、次のコードCDATAはXSLT 1.0のxslt変換を遅くしますか

<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 allを使う必要があるのですか?なぜ、 'xsl:when test =" @ name = 'some' "> one'を使用できませんか?パフォーマンスだけでは、XSLTプロセッサはCDATAをまったく処理しません。そのため、XSLTプロセッサは、基本となるXMLパーサによってテキストノードに解析されます。 Xalanが定数 ' = '' one '" /> 'を最適化するのに十分なほどスマートであるかどうかはわかりません。 –

+0

'<'や '&'のような特殊文字を含まないテキストの周りにCDATAセクションを使う必要は決してありません。しかし、処理コストがナノ秒以上になることはまずありません。それはスタイルシートのコンパイル時に一回限りのコストになります。 –

答えて

0

私の意見では、パフォーマンスの改善がある場合、最初の例を正当化するほど重要ではないと思います。

この場合、2番目の例として、メンテナンスと可読性にもっと注意を払います。このソリューションでは、要素の表示方法(cdataまたはnot)を変更したい場合は、出力要素の属性cdata-section-elementsを使用できます。

ここでHow to use cdata in xslt

+0

@Martin Honnen私はあなたが引用した質問の受け入れられた答えがあなたのものであることを今見てきました:) – Aris2World