hilfdirselbst.ch
Facebook Twitter gamper-media
MarioF p
Beiträge: 60
16. Feb 2017, 19:49
Beitrag #1 von 4
Bewertung:
(645 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Daten gruppieren XML/XSLT


Moin,
ich will über eine XSLT Daten gruppieren. Jetzt habe ich folgendes:
###
<xsl:template match="fmp:ROW">
<produkt>
<artikel><xsl:value-of select="fmp:COL[1]/fmp:DATA"/></artikel>
<bezeichnung><xsl:value-of select="fmp:COL[2]/fmp:DATA"/></bezeichnung>
<art><xsl:value-of select="fmp:COL[3]/fmp:DATA"/></art>
</produkt>
</xsl:template>
###

Jetzt habe ich versuch, alles über for-each-group laufen zu lassen:
###
<xsl:for-each-group select="fmp:COL[1]/fmp:DATA" group-adjacent="@artikel">
<group>
<artikel><xsl:value-of select="."/></artikel>
<xsl:for-each select="fmp:COL[2]/fmp:DATA">
<bezeichnung><xsl:value-of select="."/></bezeichnung>
<xsl:variable name="pos" select="position()" />
<art><xsl:value-of select="../../fmp:COL[3]/fmp:DATA[$pos]"/></art>
</xsl:for-each>
</group>
</xsl:for-each-group>
###

Leider bekomme ich in der xml-Ausgabe nur
<root>
<katalog>
<produkt/>
<produkt/>
...
</katalog>
</root>

Wie muss for-each-group aussehen, damit es klappt?
Viele Grüße
Mario Top
 
X
JensTeich  M 
Beiträge: 580
7. Mär 2017, 11:33
Beitrag #2 von 4
Beitrag ID: #556099
Bewertung:
(528 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Daten gruppieren XML/XSLT


for-each-group ist xslt 2.0 denke ich. FileMaker kann nur xslt 1.0.

Da kann man gruppieren mit der Muench Methode (https://en.wikipedia.org/wiki/XSLT/Muenchian_grouping).

LG
Jens
__
jens teich, filemaker certified developer

FileMaker Konferenz Oktober 2017 Salzburg!

FileMaker Training per TeamViewer, schnelle Hilfe vom Profi!
als Antwort auf: [#555683] Top
 
MarioF p
Beiträge: 60
8. Mär 2017, 20:03
Beitrag #3 von 4
Beitrag ID: #556200
Bewertung:
(484 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Daten gruppieren XML/XSLT


Hallo,
ja, Muench Methode...
Ich lasse jetzt FM erst mal außen vor. Ich habe jetzt dieses XML-Beispiel
Code
<?xml version="1.0" encoding="UTF-8" ?> 
<?xml-stylesheet type="text/xsl" href="group.xsl"?>
<FMPDSORESULT>
<ROW>
<Abschnitt>Abschnitt 1</Abschnitt>
<Titel>X-25-78</Titel>
</ROW>
<ROW>
<Abschnitt>Abschnitt 1</Abschnitt>
<Titel>X-25-80</Titel>
</ROW>
<ROW>
<Abschnitt>Abschnitt 1</Abschnitt>
<Titel>X-25-81</Titel>
</ROW>
<ROW>
<Abschnitt>Abschnitt 2</Abschnitt>
<Titel>WW-25-78</Titel>
</ROW>
<ROW>
<Abschnitt>Abschnitt 2</Abschnitt>
<Titel>WX-25-78</Titel>
</ROW>
</FMPDSORESULT>

Dazu diese XSLT
Code
<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"
version="1.0"
encoding="UTF-8"
indent="yes"/>

<xsl:template match="/">
<Root>
<Projekt>
<xsl:apply-templates select="FMPDSORESULT/ROW"/>
</Projekt>
</Root>
</xsl:template>

<xsl:key name="groupKey" match="ROW" use="Abschnitt" />

<xsl:template match="ROW">
<Abschnitt>

<xsl:for-each select="ROW[count(. | key('groupKey', Abschnitt)[1]) = 1]">
<xsl:sort select="Abschnitt" data-type="text"/>
<xsl:value-of select="Abschnitt" />
<xsl:for-each select="key('groupKey', Abschnitt)">
<xsl:sort select="Titel" />
<xsl:value-of select="Titel" />
</xsl:for-each>
</xsl:for-each>

</Abschnitt>
</xsl:template>
</xsl:stylesheet>


Ich habe mich dabei an diesem Beispiel gehalten http://www.beacontechnologies.com/...he-muenchian-method/
Trotzdem bekomme ich kein Ergebnis. Hab ich etwas übersehen?
Viele Grüße
Mario
als Antwort auf: [#556099] Top
 
MarioF p
Beiträge: 60
9. Mär 2017, 09:20
Beitrag #4 von 4
Beitrag ID: #556207
Bewertung:
(442 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Daten gruppieren XML/XSLT


So klappt es
Code
<xsl:key name="groupKey" match="ROW" use="Abschnitt" /> 

<xsl:template match="FMPDSORESULT">
<xsl:for-each select="ROW[count(. | key('groupKey', fmp:Abschnitt)[1]) = 1]">
<xsl:sort select="Abschnitt" />
<xsl:value-of select="Abschnitt" />
<xsl:for-each select="key('groupKey', Abschnitt)">
<xsl:sort select="Titel" />
<xsl:value-of select="Titel" />
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

Viele Grüße
Mario
als Antwort auf: [#556200] Top
 
X