XML/XSLT stylesheet/boolean operator

Материал из Web эксперт
Версия от 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