XML/XSLT stylesheet/boolean operator
not operator
<source lang="xml">
File: Data.xml <sample>
<line lid="u1">hello</line> <line color="red" lid="u2">hello</line> <line color="blue" lid="u3">hello</line> <line lid="u4">hello there</line> <line color="blue" lid="u5">hello there</line> <line color="blue" lid="u6">hello</line>
</sample> File: Transform.xslt <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"> <xsl:output method="xml" omit-xml-declaration="yes" /> <xsl:template match="line"> <xsl:if test="not(. = preceding::line)"> <xsl:copy> <xsl:apply-templates select="@*|node()" /> </xsl:copy> </xsl:if> </xsl:template> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()" /> </xsl:copy> </xsl:template>
</xsl:stylesheet> Output: <sample>
<line lid="u1">hello</line> <line lid="u4">hello there</line>
</sample>
</source>
true() function
<source lang="xml">
File: Data.xml <?xml version="1.0" encoding="utf-8"?> <emailList>
<head:header xmlns:head="http://www.domain.ru/namespace/header"> <title>Email List</title> <maintainer>Joe</maintainer> </head:header> <person type="personal" id="p001"> <name>person1</name> <email>p@hotmail.ru</email> </person> <person type="work" id="p002"> <name>person2</name> <email>p@hotmail.ru</email> </person> <person type="personal" id="p003"> <name>person3</name> <email>p3@hotmail.ru</email> </person>
</emailList> File: Transform.xslt <?xml version="1.0" encoding="UTf-8" ?> <xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text" indent="yes" /> <xsl:template match="/"> <xsl:apply-templates select="emailList"> <xsl:with-param name="bool" select="true()" /> </xsl:apply-templates> </xsl:template> <xsl:template match="emailList"> <xsl:param name="bool" select="true()" /> <xsl:variable name="true" select="true()" /> <xsl:if test="$bool = $true"> <xsl:text>sendPage.jsp</xsl:text> </xsl:if> </xsl:template>
</xsl:stylesheet> Output: sendPage.jsp
</source>