XSLT有条件地更改文本字体

时间:2012-03-03 23:09:17

标签: xslt

对于以下xml,

         <question>     
            <bp>Suppose a file a.xml has content:</bp>
            <bp><![CDATA[<a> 1 <b> 2 <b> 3 <a> 4 </a> </b> </b> </a>]]></bp>
            <bp>What is the value of the following XPath expression:</bp>
             <bp>for $x in doc("a.xml")//a/b return $x/b/a/text()</bp>
        </question>

在XSLT文件中,如果xml标记之间的文本包含

,我必须更改文本的字体
    <![CDATA[ ]]>

我尝试使用以下代码

        <xsl:for-each select="mcq:bp">
            <xsl:if test="contains(. , '<![CDATA[ ]]>')">
                 <xsl:attribute name='font-family'>courier</xsl:attribute>
                 <xsl:value-of select="."/>
            </xsl:if>
            <xsl:value-of select="."/>
            <br/>                               
            </xsl:for-each>

但是xslt在浏览器中没有显示任何内容。

1 个答案:

答案 0 :(得分:1)

使用XSLT无法完成

在XSLT传递解析的XML文档时,没有任何信息是否文本节点是否包含CDATA部分 - 由于解析XML文档而导致此词法细节被剥离(丢失)

CDATA不是字符串,它不是文本节点的一部分。因此,尝试使用contains()函数检测CDATA部分是错误的。< / p>