重新排序元素并同时填充默认输出

时间:2012-01-10 18:56:23

标签: xslt

需要重新排序元素并同时填充默认输出。

输入如下。

    <?xml version='1.0' encoding='ISO-8859-1' ?>
    <info>
        <data>  
             <age> 33 </age>
             <name>Student1  </name>
        </data> 
        <data>  
             <age> 44 </age>
             <name>Student2  </name>
        </data>
    </info>

预期输出如下所示。

NAME|HEIGHT|AGE|SALARY|COUNTRY
Student1||33||USA
Student2||44||USA

HEIGHT和SALARY,COUNTRY不是输入xml的一部分。 对于HEIGHT和SALARY,outpt应为空字符串“”。 元素之间应该是“|”分离。 在每一行之间,它应该是换行符。

COUNTRY的默认值为USA。

1 个答案:

答案 0 :(得分:0)

此转化

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="/*">
  <xsl:text>NAME|HEIGHT|AGE|SALARY|COUNTRY</xsl:text>

  <xsl:apply-templates/>
 </xsl:template>

 <xsl:template match="data">
  <xsl:value-of select=
   "concat('&#xA;', normalize-space(name),
          '||', normalize-space(age),'||USA')"/>
 </xsl:template>
</xsl:stylesheet>

应用于提供的XML文档

<info>
    <data>
        <age> 33 </age>
        <name>Student1  </name>
    </data>
    <data>
        <age> 44 </age>
        <name>Student2  </name>
    </data>
</info>

生成想要的正确结果

NAME|HEIGHT|AGE|SALARY|COUNTRY
Student1||33||USA
Student2||44||USA