Andi: Boolean Wert falsch interpretiert?

Hallo,

folgendes XSL:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="html"/>
 <xsl:template match="/">
  <select name="test">
   <xsl:if test="boolean(Objects[BasePrice &lt;= 100000])">
    <option value="0;100">0 - 100 mila</option>
   </xsl:if>
   <xsl:if test="boolean(Objects[BasePrice &gt; 100000]) and boolean(Objects[BasePrice &lt;= 250000])">
    <option value="100;250">101 - 250 mila</option>
   </xsl:if>
   <xsl:if test="boolean(Objects[BasePrice &gt; 250000]) and boolean(Objects[BasePrice &lt;= 500000]) ">
    <option value="250;500">251 - 500 mila</option>
   </xsl:if>
   <xsl:if test="boolean(Objects[BasePrice &gt; 500000]) and boolean(Objects[BasePrice &lt;= 1000000]) ">
    <option value="500;1000">501 - 1000 mila</option>
   </xsl:if>
   <xsl:if test="boolean(Objects[BasePrice &gt; 1000000])">
    <option value="1000">>1000 mila</option>
   </xsl:if>
  </select>
 </xsl:template>
</xsl:stylesheet>

und folgendes XML:

<?xml version="1.0" encoding="UTF-8"?>
<Objects>
 <BasePrice Objects="1">240000.00</BasePrice>
 <BasePrice Objects="1">43000.00</BasePrice>
</Objects>

Ich probiere das ganze per PHP zu generieren:

$d1=new DomDocument("1.0", "UTF-8");
$d1->load($xslf);

$d2=new DomDocument("1.0", "UTF-8");
$d2->loadXML($xml);

$xsl = new XSLTProcessor();
$xsl->importStyleSheet($d1);
$xsl->registerPHPFunctions();

$html= $xsl->transformToXML($d2);

Wenn ich dann das HTML ausgebe habe ich alle Typen in der Selectbox?
Wie kann das sein? Ist das womöglich ein Bug im XSLTProcessor?

Dieselben XML und XSL funktionieren werden im IE richtig angezeigt.

Danke für eure Mühen!
Grüße
Andi

  1. Hi,

    <xsl:if test="boolean(Objects[BasePrice &lt;= 100000])">

    Gibt es Objects mit Baseprice kleiner 1000000?

    <xsl:if test="boolean(Objects[BasePrice &gt; 100000]) and boolean(Objects[BasePrice &lt;= 250000])">

    Gibt es Objects mit BasePrice größer 100000 und gibt es außerdem Objects mit Baseprice kleinergleich 2500000?

    Hier willst Du doch wohl eher wissen:
    Gibt es Objects mit BasePrice größer 100000 und Baseprice kleinergleich 2500000?
    Dann müßte die Bedingung in einer Objects[] drinstehen, also

    boolean(Objects[BasePrice &gt; 100000 and BasePrice &lt;= 250000])

    (vorausgesetzt, daß jedes Objects nur ein BasePrice-Element enthält. Was laut Deinem XML aber auch nicht der Fall ist).

    Du müßtest also erstmal klarstellen, was Deine Bedingungen sein sollen.

    <xsl:if test="boolean(Objects[BasePrice &gt; 250000]) and boolean(Objects[BasePrice &lt;= 500000]) ">

    analog hier.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hallo,

      ich habe jetzt deine Variante probiert. Sie funktioniert zwar im Browser aber nicht wenn ich das xsl mit PHP generiere.

      Grüße
      Andi