1

XSLを使用していて、ac:ifを生成されたHTMLに入れたいのですが、

<c:if test="${value=='yes'}">

しかし、タグのtest = ""の部分は、XslPathとして解釈されており、解析を行っています...

XslPathとしてこれのテスト部分をエスケープまたは無効にする方法はありますか?

4

1 に答える 1

0

この問題は、属性内の中括弧のペアがXSLTによってAVT(属性値テンプレート)の仕様と見なされるためです。

実際のカーリーブレースを指定するには、2倍にする必要があります。

使用

 <c:if test="${{value=='yes'}}"> 

これが完全な変換です:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:c="some:c" exclude-result-prefixes="c">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*">
     <c:if test="${{value=='yes'}}"/>
 </xsl:template>
</xsl:stylesheet>

この変換がXMLドキュメント(このデモでは使用されていません)に適用されると、必要な正しい結果が生成されます。

<c:if xmlns:c="some:c" test="${value=='yes'}"/>
于 2012-10-13T01:27:21.563 に答える