例如,下面的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文件中它将显示: Programmer程序员80,000。
但是我需要以下输出:Palmer程序员80,000.
我需要颠倒前两个数据标签的顺序。
知道吗伙计们?
发布于 2011-04-08 15:02:09
推送样式样式表:
<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发布于 2011-04-08 13:53:14
您可以轻松地处理每个标签。
但是,如果逻辑是正确的,除了名字和名字,我会隔离他们。
就像这样:
<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>以此类推。
这样可能会产生更多类似代码的样板,但您可以获得灵活性(当标记需要分离逻辑时)。
注:这可能不是复制粘贴材料,只是键入它,没有可能进行测试,逻辑仍然保留。
https://stackoverflow.com/questions/5596092
复制相似问题