例如,在XML文件下面。
<person>
<name>Adam</name>
<lname>Palmer</lname>
<profession> Programmer</profession>
<salary>80,000</salary>
</person>
现在,在XSLT中,如果我编码,
<xsl:template match="person">
<xsl:apply-templates/><xsl:text> </xsl:text>
</xsl:template>
因此,在HTML文件中它将显示:Adam Palmer Programmer 80,000。
但我需要以下输出: Palmer Adam Programmer 80,000。
我需要反转前2个数据标签的顺序。
任何想法的人?
答案 0 :(得分:1)
您可以轻松处理每个标记的标记。
但如果逻辑适用于除名称和名字之外的任何内容,我会隔离它们。
像这样:<person>
<name>
<fname>Adam</fname>
<lname>Palmer</lname>
</name>
<profession> Programmer</profession>
<salary>80,000</salary>
</person>
通过这种方式,您可以为<name>
代码添加单独的模板。
当然,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>
依旧......
这种方式可能会导致更多样板代码,但你会获得灵活性(当标签需要单独的逻辑时)
注意:这可能不是复制粘贴材料,只是键入它而没有测试的可能性,但逻辑仍然存在。
答案 1 :(得分:1)
推送样式表样式:
<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