我必须在XML节点的字符串中呈现某个子字符串粗体,并在使用XSLT转换XML文件时更改html文件中的颜色。我正在使用Vi sual studio 12.0并且无法使用像tokenize(),analyze-string()等XSLT 2.0功能,而且我是XSLT的新手。
以下是XMLNode:
<LogMsg>
Not able to do the given task as expected because of this **{reason}**.Please verify it.
</Logmsg>
我必须在以HTML格式呈现时以粗体和红色显示花括号中的消息。
以下是我们的应用程序中使用的XSLT代码的一部分:
<xsl:for-each select="./LogMsg">
<pre>
<xsl:value-of select="."/>
</pre>
</xsl:for-each>
在这方面的任何帮助都非常感谢。
此致 Nagasree。
答案 0 :(得分:0)
如果
**(
开头,然后是)**
,然后可以直接隔离字符串的相关部分:
<xsl:template match="LogMsg">
<xsl:variable name="s1" select="substring-before(.,'**(')"/>
<xsl:variable name="s2"
select="substring-before(substring-after(.,'**('),')**')"/>
<xsl:variable name="s3" select="substring-after(.,')**')"/>
<pre>
<xsl:value-of select="$s1"
/><xsl:text>**(</xsl:text
><b style="color: red;"
><xsl:value-of select="$s2"
/><xsl:text>)**</xsl:text
><xsl:value-of select="$s3"/>
</pre>
</xsl:template>
如果输入中不存在**(
和)**
,但LogMsg始终以“由于此而无法按预期执行给定任务”开头,并以“.Please验证结束”。 “。然后,使用substring-before()和substring-after()来隔离消息的中间部分同样简单。我将把细节作为练习留给读者。
如果这些假设都不成立,那么您的问题可能需要澄清。