При загрузке страницы выполняется запрос AJAX.
Если вы откроете веб-инспектор при загрузке страницы, вы увидите запрос AJAX, например:
Если вы нажмете ctrl + f на некоторые идентификаторы, используемые в этом запросе в исходном коде страницы, вы увидите такой код JavaScript, как:
You можно найти этот URL с помощью scrapy и просто отправить запрос:
def parse(self, response):
script = response.xpath("//script[contains(text(), 'getresultsb']")
url = script.re('url:"(.+?)"') # capture between ""
headers = {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest',
}
yield Request(url,
method='POST',
body='dmn=ok',
callback=self.parse_recent
headers=headers,
)
def parse_recent(self, response):
# parse recent data here
Можно отправить его в таблицу стилей от внешнего использования xsl:param. Затем необходимо определить то, что текущий путь при вызове с внешней стороны ;)
В MSXSL в Windows можно использовать расширение сценария как это:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="http://tempuri.org/msxsl"
>
<msxsl:script language="JScript" implements-prefix="user">
<![CDATA[
var fso = new ActiveXObject("Scripting.FileSystemObject");
function getCurrentPath(){
return fso.GetFolder(".").Path
}
]]>
</msxsl:script>
<xsl:template match="/">
<xsl:value-of select="user:getCurrentPath()"/>
</xsl:template>
</xsl:stylesheet>
Другие процессоры XSL поддерживают похожие методы использовать внешние ресурсы (языки сценариев, библиотеки функций и т.д.), таким образом, это - просто пример.
Существует ли способ получить путь текущей папки из xslt файла?
Нужен он для определения местоположения другого xml и xslt файлов
Никакая потребность в любом расширении не функционирует или даже параметры, чтобы сделать это!
Любые относительные URL, используемые в href
атрибут <xsl:import>
или <xsl:include>
инструкция разрешена на основе URL текущей таблицы стилей XSLT - это только должно иметь URL, который vlearly указан как верный в вопросе выше. Это очень удобно в импорте/включении таблиц стилей XSLT.
document()
функция также разрешит относительный URL похожим способом, таким образом делая любой дополнительный XML-документ доступным использованием anrelative URL.
Наконец, вот пример, как это средства в широком масштабе используется в крупной библиотеке функций XSLT и шаблонов (FXSL 2.x):
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:f="http://fxsl.sf.net/"
exclude-result-prefixes="xs xdt f"
>
<!--
This module contains the FXSL versions of the "standard" XPath functions
These are intended as convenience functions, so that they can be passed
as parameters to other functions (e.g. to f:zipWith())
or curried and passed as parameters (e.g. to f:map())
-->
<xsl:import href="func-curry.xsl"/>
<xsl:import href="func-compose-flist.xsl"/>
<xsl:import href="func-standardArithmeticXpathFunctions.xsl"/>
<xsl:import href="func-standardBooleanXpathFunctions.xsl"/>
<xsl:import href="func-standardStringXpathFunctions.xsl"/>
<xsl:import href="func-standardNodesXpathFunctions.xsl"/>
<xsl:import href="func-standardSequencesXpathFunctions.xsl"/>
<xsl:import href="func-standardAggregateXpathFunctions.xsl"/>
<xsl:import href="func-standardDateTimeXpathFunctions.xsl"/>
<xsl:import href="func-standardXSLTXpathFunctions.xsl"/>
<xsl:import href="func-standardAxisXpathFunctions.xsl"/>
</xsl:stylesheet>
нет...
но Вы могли, возможно, обходное решение проблема при помощи относительных URL и/или передающих параметров в таблицу стилей.
В большей части процессора XSLT можно добавить пользовательские функции как расширения. Например, вот документация Saxon, как сделать это.
Не AFAIK (хотя Вы могли всегда передавать его как параметрический усилитель к преобразованию), но я не ясен, почему относительные пути не будут работать на Вас здесь.