Я хотел бы, чтобы список отсортировался, игнорируя любые исходные определенные/неопределенные статьи «the» и «a». Например:Игнорирование «A» и «The» при сортировке с XSLT
- Комедия ошибок
- Гамлет
- Сон в летнюю ночь
- Двенадцатая ночь
- Зимняя сказка
Я думаю, что, возможно, в XSLT 2.0 это может быть достигнутых в рамках:
<xsl:template match="/">
<xsl:for-each select="play"/>
<xsl:sort select="if (starts-with(title, 'A ')) then substring(title, 2) else
if (starts-with(title, 'The ')) then substring(title, 4) else title"/>
<p><xsl:value-of select="title"/></p>
</xsl:for-each>
</xsl:template>
Однако я хочу использовать обработку в браузере, поэтому вам нужно использовать XSLT 1.0. Есть ли способ достичь этого в XLST 1.0?
Обычно правильный подход для этого является сохранить «сортировку заголовок» для каждого элемента, так как правила могут стать очень сложно и даже распространяться на другие языки (например, «Die» - это статья, и ее следует игнорировать на немецком языке, но «Die Hard» не следует сортировать под «H», даже если она найдена в индексе на немецком языке). Название вида «Сон в летнюю ночь» будет «Сон в летнюю ночь». –
Я должен был упомянуть, start-with() доступен в XLST 1.0, но if-then-else не ... – ChrisV
@Joachim - вы правы, но мне нужно работать с существующими данными, нет никакого ресурса для поддерживать параллельное поле сортировки; Gart's quick-n-грязное решение - это то, что мне нужно - хороший комментарий, хотя – ChrisV