Передача параметра в синтаксический анализ импортируемого файла
При разборе WSDL я сталкиваюсь со многими wsdl:import
а также xsd:import
элементы. Я хотел бы разобрать импорт и передать @location
или же @schemaLocation
парсеру.
Намерение состоит в том, чтобы увеличить список файлов, когда импортированный файл импортирует файл, например filea.wsdl;filez.xsd;filev.xsd
, Таким образом, я могу удалить ранее импортированный файл.
Я бы подумал что-то вроде этого:
<xsl:param name="file-list"/>
<xsl:template match="/">
<xsl:param name="file-list"/>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="wsdl:import">
<xsl:apply-templates select="document(@location)">
<xsl:with-param name="file-list" select="concat($file-list, ';', @location)`"/>
</xsl:apply-templates>
</xsl:template>
1 ответ
Решение
Ваша основная идея, кажется, в порядке. Вам просто нужно передать file-list
Параметр при применении шаблонов, так:
- добавить
<xsl:with-param name="file-list" value="$file-list"/>
кxsl:apply-templates
в вашем первом шаблоне, чтобы фактически передать параметр, и - добавить
<xsl:param name="file-list"/>
на ваш второй шаблон, чтобы ввести параметр там.