对于以下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在浏览器中没有显示任何内容。
答案 0 :(得分:1)
使用XSLT无法完成。
在XSLT传递解析的XML文档时,没有任何信息是否文本节点是否包含CDATA部分 - 由于解析XML文档而导致此词法细节被剥离(丢失)
CDATA不是字符串,它不是文本节点的一部分。因此,尝试使用contains()
函数检测CDATA部分是错误的。< / p>