Im folgenden Beispiel sollten XML-Nachsätze zu "Number" -node-Wert gruppiert werden. Ich habe schon versucht, die Methode nach Muenchian zu gruppieren, aber ich habe es noch nicht geschafft. Die XSLT muss in 1.0 sein. Für jeden Number-Knoten sollte eine Box erstellt werden und jeder Wert sollte gruppiert werden. Probleme sind auch möglich mehrere Werte im Knoten, diese sollten separat angezeigt werden. Danke für jede Hilfe, die Sie mir dabei geben!XSLT-Gruppierung nach Geschwisterknotenwert
<main>
<rbox>
<vNumber>002</vNumber>
<bbox>
<State>Finland</State>
<gbox>
<Registrations>
<Registration>27754</Registration>
</Registrations>
</gbox>
</bbox>
<bbox>
<State>Denmark</State>
<gbox>
<Registrations>
<Registration>19481</Registration>
</Registrations>
</gbox>
</bbox>
</rbox>
<rbox>
<vNumber>003</vNumber>
<bbox>
<State>Slovenia</State>
<gbox>
<Registrations>
<Registration>H/11/019</Registration>
</Registrations>
<Registrations>
<Registration>H/11/020</Registration>
</Registrations>
<Registrations>
<Registration>H/11/021</Registration>
</Registrations>
</gbox>
</bbox>
<bbox>
<State>Sweden</State>
<gbox>
<Registrations>
<Registration>42852</Registration>
</Registrations>
</gbox>
</bbox>
</rbox>
...
</main>
Ihre für Ihre schnelle Antwort danken:
<ROOT>
<PROC>
<DATA>
<Number>002</Number>
<Registration>27754</Registration>
<Country>Finland</Country>
<DATA>
<PROC>
<PROC>
<DATA>
<Number>003</Number>
<Registration>42852</Registration>
<Country>Sweden</Country>
<DATA>
<PROC>
<PROC>
<DATA>
<Number>003</Number>
<Registration>H/11/019|H/11/020|H/11/021</Registration>
<Country>Slovenia</Country>
<DATA>
<PROC>
<PROC>
<DATA>
<Number>002</Number>
<Registration>19481</Registration>
<Country>Denmark</Country>
<DATA>
<PROC>
<PROC>
<DATA>
<Number>004</Number>
<Registration>09-23</Registration>
<Country>Norway</Country>
<DATA>
<PROC>
</ROOT>
Der obige Code sollte wie folgt dargestellt werden. Hier ist mein Code soweit. Ich konnte das Land und die Registrierungsdaten nicht dazu bringen, den Nummerneintrag zu sortieren, ohne mehrere Werte zu erstellen. Ich habe auch versucht, concate Werte in den Schlüssel "verwenden", aber das funktioniert auch nicht.
<xsl:key name="country" match="ROOT/PROC/DATA" use="Country"/>
<xsl:key name="registration" match="ROOT/PROC/DATA" use="Registration"/>
<xsl:template match="/">
<main>
<xsl:for-each select="//Number[not(.=preceding::*)]">
<rbox>
<xsl:element name="vNumber">
<vNumber><xsl:value-of select="."/></vNumber>
<xsl:for-each select="//DATA[generate-id() = generate-id(key('country', Country)[1])]">
<bbox>
<State><xsl:value-of select="Country"/></State>
<gbox>
<xsl:for-each select="//DATA[generate-id() = generate-id(key('registration', Registration)[1])]">
<Registrations>
<Registration><xsl:value-of select="Registration"/></Registration>
</Registrations>
</xsl:for-each>
</gbox>
</bbox>
</xsl:for-each>
</xsl:element>
</rbox>
</xsl:for-each>
</main>
</xsl:template>
**** EDIT: Komplettes Sheet nach Hilfe von michael.hor257k bezüglich Gruppierung Problem ---> Betroffene Produkte
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/"
xmlns:maa="http://www.oma.trp/maa/"
xmlns:rdm="http://www.oma.trp/dictionary/"
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:param name="ns-prefix" select="'xfa'"/>
<xsl:param name="ns-namespace" select="'http://www.xfa.org/schema/xfa-data/1.0/'"/>
<xsl:param name="ns-prefix1" select="'maa'"/>
<xsl:param name="ns-namespace1" select="'http://www.oma.trp/maa/'"/>
<xsl:param name="ns-prefix2" select="'rdm'"/>
<xsl:param name="ns-namespace2" select="'http://www.oma.trp/dictionary/'"/>
<xsl:param name="ns-prefix3" select="'xsi'"/>
<xsl:param name="ns-namespace3" select="'http://www.w3.org/2001/XMLSchemainstance'"/>
<xsl:param name="ns-prefix4" select="'schemaLocation'"/>
<xsl:param name="ns-namespace4" select="'http://www.oma.trp/maa/variations.xsd'"/>
<xsl:param name="ns-schema" select="'http://www.oma.trp/maa/variations.xsd'"/>
<xsl:variable name="vRdm" select="document('')/*/namespace::*[name()='rdm']"/>
<xsl:variable name="vXsi" select="document('')/*/namespace::*[name()='xsi']"/>
<xsl:variable name="vSchemaLocation" select="document('')/*/namespace::*[name()='schemaLocation']"/>
<xsl:template match="/">
<xsl:element name="{$ns-prefix}:data" namespace="{$ns-namespace}">
<xsl:element name="{$ns-prefix1}:eu_application_form" namespace="{$ns-namespace1}">
<xsl:copy-of select="$vRdm"/>
<xsl:copy-of select="$vXsi"/>
<xsl:copy-of select="$vSchemaLocation"/>
<xsl:attribute name="xsi:schemaLocation">
<xsl:value-of select="$ns-schema" />
</xsl:attribute>
<xsl:template match="/">
<maa:variations-form>
<xsl:element name="{$ns-prefix1}:applicationInformation">
<xsl:element name="{$ns-prefix1}:human">1</xsl:element>
<xsl:element name="{$ns-prefix1}:veterinary">0</xsl:element>
<xsl:element name="{$ns-prefix1}:nationalAuthInMRP">1</xsl:element>
<xsl:element name="{$ns-prefix1}:euAuthorisation">0</xsl:element>
<xsl:element name="{$ns-prefix1}:nationalAuthorisation">0</xsl:element>
<xsl:element name="{$ns-prefix1}:procedureNumbers">
<xsl:element name="{$ns-prefix1}:procedureNumber"></xsl:element>
</xsl:element>
<!--RMS country Loop start -->
<xsl:template match="/">
<xsl:element name="{$ns-prefix1}:referenceMemberState">
<xsl:choose>
<xsl:when test="ROOT/PROC/DATA/Procedure_Number[contains(text(),'DK')]">
<xsl:text>Denmark</xsl:text>
</xsl:when>
<xsl:when test="ROOT/PROC/DATA/Procedure_Number[contains(text(),'SI')]">
<xsl:text>Slovenia</xsl:text>
</xsl:when>
</xsl:choose>
</xsl:element>
</xsl:template>
<!--RMS country Loop end -->
<!--CMS country Loop start -->
<xsl:template match="/">
<xsl:for-each select="//Country_Name[not(.=preceding::*)]">
<maa:concernedMemberStates>
<maa:concernedMemberState><xsl:value-of select="."/></maa:concernedMemberState>
</maa:concernedMemberStates>
</xsl:for-each>
</xsl:template>
<!--CMS country Loop end -->
<!--CONCERNED PRODUCTS -->
</xsl:element>
<xsl:template match="/">
<main>
<products>
<maa:formAndStrengthFlag>0</maa:formAndStrengthFlag>
<maa:footnote/>
<!--CONCERNED PRODUCTS -->
<xsl:key name="strength" match="ROOT/PROC/DATA" use="Speciality_Number"/>
<xsl:for-each select="ROOT/PROC/DATA[generate-id() = generate-id(key('strength', Speciality_Number)[1])]">
<redbox>
<variationNumber><xsl:value-of select="Speciality_Number"/></variationNumber>
<!-- for each member of the current group -->
<xsl:for-each select="key('strength', Speciality_Number)">
<blueBox>
<memberState><xsl:value-of select="Country_Name"/></memberState>
<greenBox>
<maNumbers>
<maNumber><xsl:value-of select="Registration_Number"/></maNumber>
</maNumbers>
</greenBox>
</blueBox>
</xsl:for-each>
</redbox>
</xsl:for-each>
</products>
</main>
</xsl:template>
</maa:variations-form>
</xsl:template>
</xsl:element>
<xsl:element name="FSTEMPLATE_">/Applications/eAFForms/1.20/Forms/Variation/Form/variation.xdp
</xsl:element>
<xsl:element name="FSFORMQUERY_">/Applications/eAFForms/1.20/Forms/Variation/Form/variation.xdp
</xsl:element>
<xsl:element name="FSTRANSFORMATIONID_">PDFForm</xsl:element>
<xsl:element name="FSTARGETURL_"/>
<xsl:element name="FSAWR_"/>
<xsl:element name="FSWR_"/>
<xsl:element name="FSCRURI_">repository://</xsl:element>
<xsl:element name="FSBASEURL_"/>
</xsl:element>
</xsl:template>
schreiben Sie bitte Ihre Versuch, damit wir sie beheben können, anstatt dass der Code für Sie von Grund auf neu zu schreiben. –