XSLT 1.0 для определения расширения docx - PullRequest
0 голосов
/ 10 мая 2018

Я хочу, чтобы в XSLT был способ определения расширения docx, когда имя файла содержит не только одну точку, например:

Имя файла ... docx

или

Имя файла. (2) .docx

, поэтому в этом случае, если мы используем следующий код, не работает:

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

1 Ответ

0 голосов
/ 11 мая 2018

Если вы действительно хотите проверить, заканчивается ли имя файла на «.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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...