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

任何人都可以建议我实现结果的简单方法。非常感谢

编辑:我想用 xsl 版本 1 来做,关键是 ufi

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