当文件名不仅包含一个点时,我想在XSLT中检测docx扩展 例如:
...文件名的docx
或
文件名(2)的.docx
所以在这种情况下,如果我们使用以下代码不起作用:
<xsl:value-of select="substring-after(@sourcefilename,'.')"/>
答案 0 :(得分:0)
如果您真的只想检查文件名是否以“.docx”结尾,并且不希望它更通用,那么您可以这样做......
<xsl:value-of select="substring(@sourcefilename, string-length(@sourcefilename) - 4)"/>
或者,如果您愿意,可以xsl:choose
<xsl:choose>
<xsl:when test="substring(@sourcefilename, string-length(@sourcefilename) - 4) = '.docx'">Is DocX</xsl:when>
<xsl:otherwise>Is Not DocX</xsl:otherwise>
</xsl:choose>
虽然记住,这是区分大小写的,所以在XSLT 1.0中,如果你想检查“.DOCX”,你还需要做更多的工作,例如
<xsl:choose>
<xsl:when test="translate(
substring(@sourcefilename, string-length(@sourcefilename) - 4),
'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'abcdefghijklmnopqrstuvwxyz') = '.docx'">Is DocX</xsl:when>
<xsl:otherwise>Is Not DocX</xsl:otherwise>
</xsl:choose>
如果您可以升级到XSLT 2.0(或3.0),则可以将其简化为此
<xsl:when test="ends-with(lower-case(@sourcefilename), '.docx')">Is DocX</xsl:when>