2015-08-02 2 views
1

Я пытаюсь сортировать вывод списка имен. Но мы добавили к объектам « lt lt», чтобы идентифицировать курсив, который необходимо добавить к данным позже.Игнорировать сущность при сортировке с помощью XSLT

Есть ли способ рассказать XSLT игнорировать сущности и сортировать только буквенные буквы и цифры? Единственное, что нам действительно нужно, чтобы игнорировать, это сам объект «& lt».

Любая идея?

Вот фактическое выражение я использую (Дайте мне знать, если вам нужен весь XSL):

<xsl:template match="index"> 
<index><xsl:for-each select="indexitem"> 
<xsl:sort select="name"/> 
<indexitem> 
<xsl:apply-templates select="name"/> 
<xsl:apply-templates select="scott"/> 
<xsl:apply-templates select="searchterm"/> 
</indexitem></xsl:for-each></index> 
</xsl:template> 

Пример XML:

<?xml version="1.0" encoding="utf-8"?><index> 
<indexitem><name>&lt;Interphil&gt; 76</name><scott>(1632)</scott>; <searchterm>Interphil 76</searchterm></indexitem> 
<indexitem><name>Baldwin, James</name><scott>(3871)</scott>; <searchterm>James Baldwin</searchterm></indexitem> 
<indexitem><name>Benny, Jack</name><scott>(2564)</scott>; <searchterm>Jack Benny</searchterm></indexitem> 
</index> 

ответ

1

Вы можете, вероятно, добиться того, что вы хотите с помощью функция translate, чтобы удалить &lt; Entity

<xsl:for-each select="indexitem"> 
    <xsl:sort select="translate(name, '&lt;', '')"/> 

Примечание т Это приведет к удалению объекта, где бы он ни происходил в строке, а не только в начале.

+0

Это сработало нормально. Он не заменил объект. Список сортируется правильно, не беспокоя объект. Благодаря! –

+0

Использование перевода в команде sort не удаляет сущность из вывода, а только процедуру сортировки. Я использовал его в прошлом для обмена некоторыми персонажами. Я забыл об этом, так как я не использовал его через некоторое время. –

+0

Чтобы удалить объект с вывода, вам нужно будет иметь шаблон, соответствующий 'name', и также использовать перевод. –

Смежные вопросы