我在xsl文档中有以下xsl代码
<A target="_blank" style="text-decoration=none">
<xsl:attribute name="href">viewdoc.aspx?doc=<xsl:value-of select="URLFilePath"/>&mode=inline</xsl:attribute>
<xsl:attribute name="prefix"><xsl:value-of select="FileName"/>: </xsl:attribute>
<IMG src="images/word_small.gif" border="0"/>
</A>
在后台代码中,我正在执行此操作
newItemNode = xmlDocument.CreateElement("URLFilePath")
newItemNode.InnerText = correctedPath
xmlItemNode.ParentNode.AppendChild(newItemNode)
现在,该文件适用于Word文档。但是,我需要一种方法来检查文件的扩展名,并根据If语句显示正确的Image和xsl:attribute。
因此,If语句将如下所示:
If correctedPath.ToLower.Contains(".doc") Then
//display the word icon and attributes
Else
//display the excel icon and attributes
End If
您能否给我一些提示和帮助,以帮助我实现这一目标?
谢谢
最佳答案
仅使用contains()
通常可能会产生错误的结果(请参见测试XML文档)。ends-with()
函数是必需的,该函数在XPath 2.0中是标准的,可以在XSLT 1.0中实现,如以下转换所示:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="URLFilePath">
<xsl:variable name="visDoc">
<xsl:call-template name="ends-with">
<xsl:with-param name="pEnding" select="'.doc'"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="visXls">
<xsl:call-template name="ends-with">
<xsl:with-param name="pEnding" select="'.xls'"/>
</xsl:call-template>
</xsl:variable>
<xsl:choose>
<xsl:when test="$visDoc=1">word_small.gif</xsl:when>
<xsl:when test="$visXls=1">xls_small.gif</xsl:when>
<xsl:otherwise>unknown_small.gif</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="ends-with">
<xsl:param name="pEnding"/>
<xsl:value-of select=
"number(substring(.,
string-length() -string-length($pEnding) +1
)
=
$pEnding
)
"/>
</xsl:template>
</xsl:stylesheet>
在以下测试XML文档上应用此转换时:
<files>
<URLFilePath>myFile.doc</URLFilePath>
<URLFilePath>myFile.xls</URLFilePath>
<URLFilePath>myFile.xls.doc</URLFilePath>
<URLFilePath>myFile.doc.xls</URLFilePath>
</files>
产生正确的结果:
word_small.gif
xls_small.gif
word_small.gif
xls_small.gif
请注意,仅使用
contains()
会产生错误的结果。关于xslt - 根据字符串的结尾显示不同的xsl:attribute,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2743469/