如何使用XSLT反转XML数据标记?
例如,下面是XML文件如何使用XSLT反转XML数据标记?,xml,xslt,reverse,Xml,Xslt,Reverse,例如,下面是XML文件 <person> <name>Adam</name> <lname>Palmer</lname> <profession> Programmer</profession> <salary>80,000</salary> </person> 亚当 帕默 程序员 80,000 现在,在XSLT中,如果我编写代码 <xsl:template mat
<person>
<name>Adam</name>
<lname>Palmer</lname>
<profession> Programmer</profession>
<salary>80,000</salary>
</person>
亚当
帕默
程序员
80,000
现在,在XSLT中,如果我编写代码
<xsl:template match="person">
<xsl:apply-templates/><xsl:text> </xsl:text>
</xsl:template>
所以,在HTML文件中,它将显示:Adam Palmer程序员80000
但我需要以下输出:Palmer Adam程序员80000。
我需要颠倒前2个数据标记的顺序
各位有什么想法吗?您可以轻松处理每个标签的标签 但是,如果这个逻辑对名字和名字以外的任何东西都是正确的,我会把它们隔离开来 像这样:
<person>
<name>
<fname>Adam</fname>
<lname>Palmer</lname>
</name>
<profession> Programmer</profession>
<salary>80,000</salary>
</person>
亚当
帕默
程序员
80,000
这样,您就可以为
标记添加单独的模板
当然,xml的结构通常是不可更改的:
<xsl:template match="person">
<xsl:apply-templates select="lname"/></xsl:text>
<xsl:apply-templates select="name"/></xsl:text>
< -- rest of the tags -->
</xsl:template>
<xs:template match="lname>
<xsl:value-of "." />
</xsl:template>
<xs:template match="name>
<xsl:value-of "." />
</xsl:template>
<--其余标签-->
等等
这样可能会产生一些类似样板的代码,但您可以获得灵活性(当标记需要单独的逻辑时)
注意:这可能不是复制粘贴材料,只是在没有可能进行测试的情况下键入,但逻辑仍然存在。推送样式表:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*"/>
<xsl:template match="person/*">
<xsl:apply-templates/>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="person">
<xsl:apply-templates select="lname"/>
<xsl:apply-templates select="name"/>
<xsl:apply-templates select="*[not(self::name|self::lname)]"/>
<xsl:text>
</xsl:text>
</xsl:template>
</xsl:stylesheet>
Palmer Adam Programmer 80,000