如何用XSL过滤XML草稿post节点、移除发布状态字段并按标题排序
调整后可直接满足需求的完整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[Status='publish']" > <xsl:sort select="translate(Title, 'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')" order="ascending" /> <xsl:copy> <xsl:copy-of select="*[not(local-name()='Status')]" /> </xsl:copy> </xsl:for-each> </xsl:copy> </xsl:template> </xsl:stylesheet>
核心调整说明
- 过滤草稿post:在
xsl:for-each的选择条件中添加[Status='publish'],直接排除所有Status为draft的post节点,对应需求1。 - 移除已发布post的Status节点:放弃原有的整节点复制逻辑
xsl:copy-of select=".",改为先复制post节点本身,再仅复制post下除Status外的所有子节点,对应需求2。 - 原有不区分大小写按Title升序的排序逻辑保留,完全符合需求3的排序要求。
内容的提问来源于stack exchange,提问作者ima gica
相关产品推荐
相关产品推荐

