2010-10-25 4 views
1

Предположим, что у меня есть XML-документ, как этотПорядок элементов XML с использованием XSLT

XML Файл:

<document> 
    <educationalsection> 
    educational details 
    </educationalsection> 

    <professionalsection> 
    professional section details 
    </professionalsection> 
</document> 

я создал XSL сходиться его в нужный мне формат, но проблема, если я хочу изменить порядок разделов, как я могу это сделать? Например, если я хочу, чтобы профессиональная секция оказалась на вершине образования без изменения xml, как это возможно? Что мне нужно будет добавить в мой существующий xsl или xml, чтобы при отправке моего веб-приложения xml для преобразования он мог иметь разные порядки элементов, как указано в веб-приложении.

ответ

2

Эта таблица стилей:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:param name="pOrder" select="'professionalsection,educationalsection'"/> 
    <xsl:template match="node()|@*"> 
     <xsl:copy> 
      <xsl:apply-templates select="node()|@*"> 
       <xsl:sort select="string-length(
            substring-before(
             concat(',',$pOrder,','), 
             concat(',',name(),',')))"/> 
      </xsl:apply-templates> 
     </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 

Выход:

<document> 
    <professionalsection> 
    professional section details 
    </professionalsection> 
    <educationalsection> 
    educational details 
    </educationalsection> 
</document> 
+0

- это динамическое решение? что означает, что вы можете установить порядок разделов автоматически? –

+0

@Sultan Saadat: вы должны передать новую строку заказа в качестве параметра «pOrder» для процессора. – 2010-10-25 13:25:56

+0

благодарю так много за вашу помощь :) это было действительно полезно! :) –

1

Элементы xsl:apply-templates и xsl:for-each могут содержать дочерние элементы xsl:sort, которые могут быть использованы для заказа дочерних узлов, которые были выбраны. Используйте разные порядки сортировки, когда вам нужно.

Вы можете также использовать атрибут mode на xsl:template, чтобы выбрать различные шаблоны, используя разные порядки сортировки.

+0

любые примеры кода для режима? –

+0

@ Султан Саадат - примеры «режима». Они не специфичны для сортировки, но должны дать вам общую идею. http://zvon.org/xxl/XSLTreference/OutputExamples/example_1_20_frame.html – Oded

+0

У меня появилась идея, но мои разделы разные, поэтому мне нужно будет использовать поле серийного номера раздела, чтобы определить приоритеты каждого раздела, а затем отразить это на выходе ... –

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