XML/XSLT stylesheet/boolean operator
Версия от 18:22, 25 мая 2010; (обсуждение)
not operator
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>
true() function
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