Передача параметра в синтаксический анализ импортируемого файла

При разборе 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 Параметр при применении шаблонов, так:

  1. добавить <xsl:with-param name="file-list" value="$file-list"/> к xsl:apply-templates в вашем первом шаблоне, чтобы фактически передать параметр, и
  2. добавить <xsl:param name="file-list"/> на ваш второй шаблон, чтобы ввести параметр там.
Другие вопросы по тегам