XSLT 1.0检测docx扩展

时间:2018-05-10 09:14:24

标签: xml xslt

当文件名不仅包含一个点时,我想在XSLT中检测docx扩展 例如:

  

...文件名的docx

  

文件名(2)的.docx

所以在这种情况下,如果我们使用以下代码不起作用:

<xsl:value-of select="substring-after(@sourcefilename,'.')"/>

1 个答案:

答案 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>