26Ksimon86: Hits per page - Ausgabe Problem

Hallo,

Ich habe hier ein Punkt an dem ich schon länger sitze.
Es soll aufgezählt werden welcher display_name der verschiedenen rules auf welcher seite auftritt.

  
<?xml version="1.0" encoding="UTF-8"?>  
<report>  
    <pages>  
        <page id="PAG0" nr="1"></page>  
        <page id="PAG1" nr="2"></page>  
        <page id="PAG2" nr="3"></page>  
        <page id="PAG3" nr="4"></page>  
        <page id="PAG4" nr="5"></page>  
        <page id="PAG5" nr="6"></page>  
        <page id="PAG6" nr="7"></page>  
        <page id="PAG7" nr="8"></page>  
        <page id="PAG8" nr="9"></page>  
        <page id="PAG9" nr="10"></page>  
        <page id="PAG10" nr="11"></page>  
    </pages>  
    <rule id="RUL157">  
        <display_name>Rule die nur auf Seite 6 und 7 wiedergegeben werden soll</display_name>  
    </rule>  
    <rule id="RUL86">  
        <display_name>Rule die auf Seite aller wiedergegeben werden soll</display_name>  
    </rule>  
    <results>  
  <hits rule_id="RUL157" severity="Error">  
   <hit page="PAG5"></hit>  
   <hit page="PAG5"></hit>  
   <hit page="PAG5"></hit>  
   <hit page="PAG7"></hit>  
   <hit page="PAG7"></hit>  
  </hits>  
  <hits rule_id="RUL86" severity="Warning">  
   <hit page="PAG0"></hit>  
   <hit page="PAG1"></hit>  
   <hit page="PAG2"></hit>  
   <hit page="PAG3"></hit>  
   <hit page="PAG4"></hit>  
   <hit page="PAG5"></hit>  
   <hit page="PAG6"></hit>  
   <hit page="PAG7"></hit>  
   <hit page="PAG8"></hit>  
   <hit page="PAG9"></hit>  
   <hit page="PAG10"></hit>  
  </hits>  
 </results>  
</report>  

Mein Stylesheet gibt leider alle display_name auf jeder seite aus.

  
 <xsl:template name="failsonpages">  
  <xsl:variable name="onPage" select="//pi4:hit/@page"/>  
  
  <xsl:for-each select="//pi4:pages/pi4:page[@id=$onPage]">  
   <font size="2pt">  
    <p>  
     <b>Hits on Page <xsl:value-of select="@nr"/>:</b>  
    </p>  
    <p>  
     <xsl:for-each select="//@page/ancestor::pi4:hits">  
      <xsl:variable name="HitsRule" select="@rule_id"/>  
      <xsl:value-of select="//pi4:rules/pi4:rule[@id=$HitsRule]/pi4:display_name"/>  
      <br/>  
     </xsl:for-each>  
    </p>  
   </font>  
  </xsl:for-each>  
 </xsl:template>  

Das wäre super wenn mir jemand weiterhelfen könnte.

  1. Ich wollte noch schreiben das sich die Attribute von XML zu XML ständig ändern.

    Simon

    1. Falls sich jemand damit beschäftigt hat. Ich gabe das Problem jetzt so gelöst.

        
        
        <xsl:variable name="pageid" select="//pi4:page/@id"/>  
        <font size="2pt">  
         <p>  
          <xsl:for-each select="//pi4:hit[@page=$pageid]/parent::pi4:hits">  
           <xsl:variable name="HitsRule" select="@rule_id"/>  
           <p>  
            <b>  
             <xsl:value-of  
              select="//pi4:rules/pi4:rule[@id=$HitsRule]/pi4:display_name"/>  
            </b>  
           </p>  
           <xsl:variable name="hits" select="."/>  
           <xsl:for-each select="/pi4:report/pi4:document/pi4:pages/pi4:page">  
            <xsl:variable name="hits_on_page"  
             select="$hits/pi4:hit[@type!='PageInfo' and (@page=current()/@id or @page=current()/@nr)]"/>  
            <xsl:if test="count($hits_on_page) > 0"> On page <xsl:value-of select="@nr"  
             />:<br/>  
            </xsl:if>  
           </xsl:for-each>  
          </xsl:for-each>  
         </p>  
        </font>  
       </xsl:template>  
      
      

      Trotzdem Danke
      Simon

      1. Hallo,

        Falls sich jemand damit beschäftigt hat.

        Nein, wir warten hier immer zwei Stunden vor der ersten Antwort, um zu sehen ob der Fragesteller es ernst meint oder ob er nur aus Langeweile was postetet, wobei er die Antwort selbst auch herausfindet.

        Ich gabe das Problem jetzt so gelöst.

        Ooops!

        Trotzdem Danke

        Sehr gerne! ;-)

        Grüße
        Thomas

        PS: Du bist ein Code-Terrorist, bist du?

          
        <font size="2pt">  
           <p>  
        
        

        das ist schlicht Code-Mord! Wer hat dir so etwas gezeigt?