gpt4 book ai didi

xslt - 根据字符串的结尾显示不同的xsl:attribute

转载 作者:行者123 更新时间:2023-12-03 16:56:05 26 4
gpt4 key购买 nike

我在xsl文档中有以下xsl代码

                <A target="_blank" style="text-decoration=none">
<xsl:attribute name="href">viewdoc.aspx?doc=<xsl:value-of select="URLFilePath"/>&amp;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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com