我只能选择xsl。这是我的xml文件(摘要):
<data>
<post>
<Status>publish</Status>
<Title>myTitle1</Title>
<Content>blabla</content>
</post>
<post>
<Status>publish</Status>
<Title>aaa</Title>
<Content>blabla</content>
</post>
<post>
<Status>draft</Status>
<Title>Title3</Title>
<Content>blabla</content>
</post>
</data>
这是我的排序xsl
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes" />
<xsl:template match="/data" >
<xsl:copy>
<xsl:for-each select="post" >
<xsl:sort select="translate(Title, 'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')" order="ascending" />
<xsl:copy-of select="." />
</xsl:for-each>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
我想删除所有元素Status "draft"完整且有状态地"发布";只有status元素,然后按标题升序排序。
所以最终的xml应该是这样的:<data>
<post>
<Title>aaa</Title>
<Content>blabla</content>
</post>
<post>
<Title>myTitle1</Title>
<Content>blabla</content>
</post>
</data>
谢谢马克
如何:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/data">
<xsl:copy>
<xsl:for-each select="post[not(Status='draft')]" >
<xsl:sort select="translate(Title, 'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
<xsl:copy>
<xsl:copy-of select="*[not(self::Staus)]"/>
</xsl:copy>
</xsl:for-each>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>