XSLを使用していて、ac:ifを生成されたHTMLに入れたいのですが、
<c:if test="${value=='yes'}">
しかし、タグのtest = ""の部分は、XslPathとして解釈されており、解析を行っています...
XslPathとしてこれのテスト部分をエスケープまたは無効にする方法はありますか?
XSLを使用していて、ac:ifを生成されたHTMLに入れたいのですが、
<c:if test="${value=='yes'}">
しかし、タグのtest = ""の部分は、XslPathとして解釈されており、解析を行っています...
XslPathとしてこれのテスト部分をエスケープまたは無効にする方法はありますか?
この問題は、属性内の中括弧のペアが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'}"/>