Порядок элементов XML с использованием XSLT - PullRequest
1 голос
/ 25 октября 2010

Предположим, у меня есть XML-документ, подобный этому

XML-файл:

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

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

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

Ответы [ 2 ]

2 голосов
/ 25 октября 2010

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

<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>
1 голос
/ 25 октября 2010

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

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

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