Выполнение манипуляций путем к файлу в XSLT

Я хотел бы, чтобы мой сгенерированный выходной файл содержал пути к файлам, которые указывают на путь относительно таблицы стилей. Местоположение таблицы стилей может измениться, и я не хочу использовать параметр для таблицы стилей. Мое решение для этого состоит в том, чтобы получить полную таблицу стилей URI:


Теперь я только должен отключить имя файла от $stylesheetURI. Это вдохновило меня писать клоны XSLT 2.0 базового имени функций PHP и dirname:


    
    



    
    

Теперь я могу сделать что-то вроде этого в своем шаблоне:


Мой вопрос: там лучшие/быстрее пути состоят в том, чтобы выполнить это с собственным XSLT 2.0?

7
задан chiborg 25 June 2010 в 09:29
поделиться

1 ответ

Я протестировал (не слишком подробно) эти функции , и они , похоже, работают на 25% быстрее , чем предоставленные. Конечно, результаты зависят от длины строки и количества квалификаторов:

  <xsl:function name="de:basename" as="xs:string">
    <xsl:param name="pfile" as="xs:string"/>
    <xsl:sequence select=
     "de:reverseStr(substring-before(de:reverseStr($pfile), '/'))
     " />
  </xsl:function>

  <xsl:function name="de:dirname" as="xs:string">
    <xsl:param name="pfile" as="xs:string"/>
    <xsl:sequence select=
     "de:reverseStr(substring-after(de:reverseStr($pfile), '/'))
     " />
  </xsl:function>

  <xsl:function name="de:reverseStr" as="xs:string">
    <xsl:param name="pStr" as="xs:string"/>

    <xsl:sequence select=
    "codepoints-to-string(reverse(string-to-codepoints($pStr)))"/>
  </xsl:function>
8
ответ дан 7 December 2019 в 05:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: