Можно ли добавить дополнительные критерии в XSL-выборку, генерирующую ключ? - PullRequest
0 голосов
/ 10 ноября 2009

У меня есть XML-документ местоположений магазина, в котором есть узел Типа, указывающий тип хранилища, и существующий набор шаблонов для добавления ключа в каждое Местоположение на основе его состояния, который затем добавляет их в HTML в порядке их состояния. .

Что мне нужно сделать, так это исключить из отображения все состояния, которые не имеют тип 1. В цикле for-each достаточно просто пропустить отображение этих местоположений, но я получаю отображение состояний, которые не имеют значения в них.

Вот код внутри тега <select/> HTML:

<xsl:apply-templates select="$locations/descendant::Locations" mode="locations.list"/>

Этот шаблон выглядит так:

<xsl:template match="Locations" mode="locations.list">
    <xsl:apply-templates select="Location[generate-id(.) = generate-id(key('state', State)[1])]"  mode="locations.list.location"/>
</xsl:template>

Шаблон, который он вызывает, выглядит следующим образом:

<xsl:template match="Location" mode="locations.list.location">
    <option value="state"><xsl:value-of select="normalize-space(State)"/></option>
    <xsl:for-each select="key('state', State)">
        <option value="{normalize-space(SiteKey)}"><xsl:value-of select="normalize-space(Location)/></option>
    </xsl:for-each>
    <option value=""/>
</xsl:template>

Обычно в <xsl:apply-templates select="Location[generate-id(.) = generate-id(key('state', State)[1])]" mode="locations.list.location"/> я бы просто указал в выборке, что меня интересовали только местоположения, имеющие тип '1', но я не могу найти способ вставить это условие вместе с ключом код генерации.

1 Ответ

1 голос
/ 10 ноября 2009

Не видя весь ваш входной XML, это немного догадок:

<xsl:apply-templates 
  mode   = "locations.list.location"
  select = "Location[
    generate-id(.) 
    = 
    generate-id(key('state', State)[Type = '1'][1])
  ]" 
 />

Выбирает Location s узлов, где уникальный идентификатор равен первому Location с текущим State.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...