1

このようなxmlを取得しました

<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>

name_typeを除いて、基本的に2つのフィールドの情報は似ています。したがって、xsl グループ化を使用して、このような出力を生成したいと思います。

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

結果を達成するための簡単な方法を誰かに提案してもらえますか。どうもありがとう

編集:キーがufiのxslバージョン1でそれを行うと思います

4

1 に答える 1

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 を使用する方がはるかに優れています。

于 2012-05-27T18:02:50.857 に答える