Можно ли добавить к? - PullRequest
       16

Можно ли добавить к?

0 голосов
/ 25 марта 2019
<xsl:key name="item" match="SHOPITEM" use="substring-before(PRODUCT, ' ')" />

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

если содержит (PRODUCT, "SIZE."), То substring-before (PRODUCT, "SIZE.") иначе получите всю стоимость ПРОДУКТА

можно ли поставить "если" внутри "использовать" или каким-либо другим способом сделать это?

1 Ответ

2 голосов
/ 25 марта 2019

В XSLT 1.0 вы можете использовать метод, называемый Метод Оливера Беккера , что означает написание use в этой форме

concat(
  substring(Str1,1 div Cond),
  substring(Str2,1 div not(Cond))
) 

Итак, в вашем случае вы могли бы написать свой xsl:key так:

<xsl:key name="item2" match="SHOPITEM" use="concat(
        substring(substring-before(PRODUCT, ' SIZE.'), 1 div (contains(PRODUCT, ' SIZE.'))),
        substring(PRODUCT, 1 div (not(contains(PRODUCT, ' SIZE.'))))
    )" />

Считаете ли вы это читабельным, это другой вопрос.

Однако, в этом конкретном случае, для логики, которую вы пытаетесь реализовать, вы также можете написать ключ так:

 <xsl:key name="item" match="SHOPITEM" use="substring-before(concat(PRODUCT, ' SIZE.'), ' SIZE.')" />

Итак, если PRODUCT содержит SIZE., он найдет текст до первого вхождения. Если нет, то это будет сцепленный SIZE., который эффективно получит всю строку

См. Примеры в действии на http://xsltfiddle.liberty -development.net / jyRYYij

...