Announcement

Collapse
No announcement yet.

XSLT-Gruppierungen von Elementen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • XSLT-Gruppierungen von Elementen

    Hallo Leute, ich möchte eine Gruppierung aber kriege es irgendwie nicht hin. Hat jmd eine Tipp?

    folgende XML Datei:

    Code:
    <Rules>
           <Rule>
               <Target>Absatz1 </Target>
               
               <Formula> X*Y geteilt durch drei</Formula>
           </Rule>
    </Rules>
    
    <RuleGroup>
            <Name>Dimensionale..  </Name>
         <RuleGroup>
            <Name>Kennzahl</Name>
               <Rule>
                 <Target>Absatz2 </Target>
               
                 <Formula> keine Berechnung</Formula>
               </Rule>
           <RuleGroup>
      <RuleGroup>
    <Rules>
    Hierzu habe ich eine XLS-Datei, in der ich diese Hierarchie in einer Tabelle darstellen möchte.

    Code:
    <?xml version="1.0" ?> 
     <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
     <xsl:template match="/">
     <TABLE border="8pt">
     <TR STYLE="font-size:18pt; color:Black">
      <TD>Gruppe</TD>
      <TD>Element</TD> 
      <TD>Formel</TD> 
      </TR>
      <xsl:apply-templates /> 
      </TABLE>
      
      </xsl:template>
     <xsl:template match="haupt">
     <xsl:for-each select="Rules">
     <xsl:for-each select="Rule">
     <TR STYLE="font-size:13pt; color:blue">
    <TD>
      <xsl:value-of select="Target" /> 
    </TD>
     <TD>
      <xsl:value-of select="Formula" /> 
    </TD>
      </TR>
      </xsl:for-each>
      </xsl:for-each>
      </xsl:template>
      </xsl:stylesheet>
    Ich habe nun eine andere XML-Datei, in der ich eine Verlinkung an diese Datei mache:

    Code:
    <?xml version="1.0" encoding="iso-8859-1"?>
    <!--DOCTYPE tergrech SYSTEM "tergrech2.dtd"-->
    <!DOCTYPE document [ <!ENTITY  resource SYSTEM 'file:c:/Test_komplett/probe.xml'>]> 
    <?xml-stylesheet type="text/xsl" href="Test.xsl"?> 
    
    <haupt>&resource;</haupt>
    Das habe ich nur gemacht, weil ich die andere XML Datei nicht anfassen möchte in Zukunft..das ist ja nicht relevant für die Problemlösung.



    Ich möchte nun, dass die erstellte Tabelle folgendermaßen gefüllt wird:

    _________________________
    |Gruppe| Element | Formel |
    | ---------------- | Absatz | X*Y geteilt durch |
    | Dimensionale| -------------------| ---------- |
    | Kennzahl | Absatz2 | keine Berechnung |
    |________________________________________|


    Es geht nur darum das es keine eindeutige Hierarchie gibt, und Elemente vorhanden sind, die zu keiner Gruppe gehören. D.H. Absatz hätte in der XML-Struktur keine RuleGroup. Jedoch Absatz2 gehört zu der RuleGroup "Dimensionale und darunter zu der Gruppe Kennzahl an.
    Wie könnte ich dies geschickt gruppieren?

    Vllt. mit der muench ´schen - Methode? Wenn ja wie würde dies in diesem Fall aussehen?

    Vielen Dank für eure Hilfe!!

    hey-biy

  • #2
    Wenn du den W3C-Standard XSLT benutzen willst, dann müssen deine Stylesheet-Elemente im Namensraum http://www.w3.org/1999/XSL/Transform sein, nicht im Namensraum http://www.w3.org/TR/WD-xsl, denn das ist ein Namensraum, der nur von einigen Microsoft-Produkten unterstützt wurde, bevor XSLT 1.0 standardisiert wurde.

    Ansonsten ist deine Beschreibung sehr unklar, wenn du aus dem XML-Beispieldokument, dass du am Anfang gezeigt hast, per XSLT ein HTML-Dokument machen willst, dann poste doch mal das HTML-Dokument, das aus dem Beispiel entstehen soll.

    Comment


    • #3
      Hallo Martin,

      vielen Dank für deine Antwort.
      Nein..es geht nicht um eine HTML-Erstellung. Es geht nur darum..dass ich in der xml-Datei keine normale Hierarchie hab..und ich dadurch die Darstellung nicht so hinkrieg wie ich es möchte. Deshalb sollten diverse Gruppierungen gemacht werden.
      also nochtmal..

      <Rules>
      <Rule>
      <Target>Absatz1 </Target>
      <Formula> X*Y geteilt durch drei</Formula>
      </Rule>

      <RuleGroup>
      <Name>Dimensionale.. </Name>
      <RuleGroup>
      <Name>Kennzahl</Name>
      <Rule>
      <Target>Absatz2 </Target>
      <Formula> keine Berechnung</Formula>
      </Rule>
      <RuleGroup>
      <RuleGroup>
      <Rules>

      Wie ich sagt, ist die Wurzel Rules. Der normale Aufbau ist eigentlich Rules, Rule und innerhalb von Rule Target und Formula.D.H oben die Kennzahl "Absatz" ist zu keine RuleGroup zugeordnet..deshalbt soll in der Tabelle in die Spalte "Gruppe" nix stehen.
      Jedoch weiter unten ist die Hierachie anders..nach Rules kommt nicht Rule, sonder RuleGroup. D.H dieser Rule (Absatz2)gehört zu der RuleGroup Kennzahl..also sollte in der Tabelle in die Spalte "Gruppe" Kennzahl eingetragen werden. Das Problem ist einfach, dass man hier nach RuleGroup gruppiert..und bei einem "Rule" was keiner RuleGroup untergeordnet ist soll in der Tabelle "Gruppe" nichts eingetragen werden. Nur wie mache ich diese Gruppierung?
      Anbei könnt ihr sehen, wie die Tabelle aussehen soll.
      Element "Absatz" ist zu keiner RuleGroup(Gruppe) zugeordnet, deshalb auch die Spalte leer.

      Vielen Vielen Dank schonmal für eure Hilfen..würd mich echt freuen wenn jmd. das Problem lösen kann.
      Attached Files

      Comment

      Working...
      X