2012-05-27 5 views
1

Я получил XML-файл, как этотГруппировка в XSL

<feature ufi="-1578440"> 
    <designation>PPLA</designation> 
    <administrative_division>06</administrative_division> 
    <name_type>V</name_type> 
    <full_name>Hobart Town</full_name> 
    <sort_key>HOBARTTOWN</sort_key> 
    <modified>2012-02-06</modified> 
</feature> 
<feature ufi="-1578440"> 
    <designation>PPLA</designation> 
    <administrative_division>06</administrative_division> 
    <name_type>N</name_type> 
    <full_name>Hobart</full_name> 
    <sort_key>HOBART</sort_key> 
    <modified>2012-02-06</modified> 
</feature> 

В основном, информация о 2-х полей аналогично, за исключением name_type. Поэтому я хотел бы сгенерировать вывод такого типа, используя xsl-группировку.

Hobart (also known as Hobart Town), PPLA, V, 2012-02-06 

Может ли кто-нибудь предложить мне простой способ добиться результата. Большое спасибо

Edit: Я полагаю, чтобы сделать это с помощью XSL версии 1 с ключом является ОЙ

+0

хотите простой вывод текста как результат трансформации XSLT? Используете ли вы XSLT 1.0 или 2.0? И что такое ключ группировки, является ли значение атрибута 'ufi'? –

+0

Неважно, какой из элементов '' выбран для определения основного имени и которые также называются именами? И поле '' здесь имеет какое-либо значение? – Borodin

ответ

1

Нет группировка участвует, но это будет получить работу (при условии, обычный вывода текста и без учета новой строки вещи, оставило как упражнения):

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0"> 
    <xsl:output method="text"/> 

    <xsl:template match="feature[name_type='N']"> 
     <xsl:value-of select="full_name"/> 
     <xsl:variable name="ufi" select="@ufi"/> 
     (also known as <xsl:value-of select="../feature[name_type='V' and @ufi=$ufi]/full_name"/>) 
     , <xsl:value-of select="designation"/>, <xsl:value-of select="name_type"/>, <xsl:value-of select="modified"/> 
    </xsl:template> 

    <xsl:template match="feature"/> 
</xsl:stylesheet> 

с помощью XSLT 2.0 будет гораздо гораздо лучше, хотя ..

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