Ich habe die Anforderung, die Ausgabe eines benutzerdefinierten Rechnungsprogramms in JD Edwards für EDI zu transformieren. Die XML-Daten, die aus dem Bericht stammen, sind schlecht gebildet, und ich habe Schwierigkeiten, die Daten so umzustrukturieren, dass sie die EDI-Anforderungen erfüllen. Ich bin neu in XSL, also habe ich durch Versuch und Irrtum gearbeitet, um zu dem Ergebnis zu kommen.XSL-Transformation schlägt auf JD Edwards-Bericht mit schlecht formatierter XML-Ausgabe fehl
Eine der Herausforderungen, vor denen ich stehe, ist, dass der Bericht die Daten nicht richtig strukturiert. Die Rechnungsposition ist kein ordnungsgemäßer Nachkomme des Rechnungsheaders, wie in der XML-Eingabe unten zu sehen ist. Ich habe dem Entwickler die Rechnungsnummer zu jedem Abschnitt hinzufügen lassen, in der Hoffnung, dass ich die Daten basierend auf dieser Rechnungsnummer umstrukturieren kann.
Meine Frage ist, wie kann ich den XSL-Stylesheet-Code ändern, so dass die Ausgabe mit meinem gewünschten Ergebnis übereinstimmt, die richtige Eltern/Kind/Geschwister-Struktur erstellen? Hier
ist der XML-Input:
<R5942015>
<Main___F4211_F42119_S1>
<Header_S2>
<ShipDate_ID11>2016-04-06</ShipDate_ID11>
<CustomerNumber_ID92>10779</CustomerNumber_ID92>
<InvoiceDate_ID107>2016-04-07</InvoiceDate_ID107>
<DealerNumber_ID6>44014104</DealerNumber_ID6>
<ShipmentNumber_ID70>169638</ShipmentNumber_ID70>
<InvoiceNumber_ID62>8729266</InvoiceNumber_ID62>
</Header_S2>
</Main___F4211_F42119_S1>
<Main___F4211_F42119_S1>
<Line_Info_S4>
<AckLineNumber_D_ID1>13</AckLineNumber_D_ID1>
<LineExtendedPrice_D_ID8>1230.00</LineExtendedPrice_D_ID8>
<_nd_Item_Number_D_ID3>010799</_nd_Item_Number_D_ID3>
<DisplayInvoiceNumber_ID42>8729266</DisplayInvoiceNumber_ID42>
<LineQuantityShipped_D_ID35>2</LineQuantityShipped_D_ID35>
<AckLine_Freight_ID21>54.78</AckLine_Freight_ID21>
</Line_Info_S4>
<Summary_Info_S8>
<AckExtendedPrice_T_ID2>1230.00</AckExtendedPrice_T_ID2>
<Freight_T_ID6>54.78</Freight_T_ID6>
<GrandTotal_T_ID17>1284.78</GrandTotal_T_ID17>
<DisplayInvoiceNumber_ID39>8729266</DisplayInvoiceNumber_ID39>
</Summary_Info_S8>
<Remit_To_S11>
<Invoice_No__ID19>Invoice No:</Invoice_No__ID19>
<DisplayInvoiceNumber_ID18>8729266</DisplayInvoiceNumber_ID18>
<Service_Charge_Message_ID14>Service charge message...</Service_Charge_Message_ID14>
</Remit_To_S11>
<Header_S2>
<ShipDate_ID11>2016-04-06</ShipDate_ID11>
<CustomerNumber_ID92>11005</CustomerNumber_ID92>
<InvoiceDate_ID107>2016-04-07</InvoiceDate_ID107>
<DealerNumber_ID6>50857355</DealerNumber_ID6>
<ShipmentNumber_ID70>169638</ShipmentNumber_ID70>
<InvoiceNumber_ID62>8729267</InvoiceNumber_ID62>
</Header_S2>
</Main___F4211_F42119_S1>
<Main___F4211_F42119_S1>
<Line_Info_S4>
<AckLineNumber_D_ID1>3</AckLineNumber_D_ID1>
<LineExtendedPrice_D_ID8>665.00</LineExtendedPrice_D_ID8>
<_nd_Item_Number_D_ID3>010512</_nd_Item_Number_D_ID3>
<DisplayInvoiceNumber_ID42>8729267</DisplayInvoiceNumber_ID42>
<LineQuantityShipped_D_ID35>1</LineQuantityShipped_D_ID35>
<AckLine_Freight_ID21>22.64</AckLine_Freight_ID21>
</Line_Info_S4>
</Main___F4211_F42119_S1>
<Main___F4211_F42119_S1>
<Line_Info_S4>
<AckLineNumber_D_ID1>4</AckLineNumber_D_ID1>
<LineExtendedPrice_D_ID8>665.00</LineExtendedPrice_D_ID8>
<_nd_Item_Number_D_ID3>010512</_nd_Item_Number_D_ID3>
<DisplayInvoiceNumber_ID42>8729267</DisplayInvoiceNumber_ID42>
<LineQuantityShipped_D_ID35>1</LineQuantityShipped_D_ID35>
<AckLine_Freight_ID21>22.64</AckLine_Freight_ID21>
</Line_Info_S4>
</Main___F4211_F42119_S1>
<Main___F4211_F42119_S1>
<Line_Info_S4>
<AckLineNumber_D_ID1>5</AckLineNumber_D_ID1>
<LineExtendedPrice_D_ID8>715.00</LineExtendedPrice_D_ID8>
<_nd_Item_Number_D_ID3>010512</_nd_Item_Number_D_ID3>
<DisplayInvoiceNumber_ID42>8729267</DisplayInvoiceNumber_ID42>
<LineQuantityShipped_D_ID35>1</LineQuantityShipped_D_ID35>
<AckLine_Freight_ID21>22.64</AckLine_Freight_ID21>
</Line_Info_S4>
</Main___F4211_F42119_S1>
<Main___F4211_F42119_S1>
<Line_Info_S4>
<AckLineNumber_D_ID1>11</AckLineNumber_D_ID1>
<LineExtendedPrice_D_ID8>665.00</LineExtendedPrice_D_ID8>
<_nd_Item_Number_D_ID3>010512</_nd_Item_Number_D_ID3>
<DisplayInvoiceNumber_ID42>8729267</DisplayInvoiceNumber_ID42>
<LineQuantityShipped_D_ID35>1</LineQuantityShipped_D_ID35>
<AckLine_Freight_ID21>22.64</AckLine_Freight_ID21>
</Line_Info_S4>
</Main___F4211_F42119_S1>
<Main___F4211_F42119_S1>
<Line_Info_S4>
<AckLineNumber_D_ID1>21</AckLineNumber_D_ID1>
<LineExtendedPrice_D_ID8>630.00</LineExtendedPrice_D_ID8>
<_nd_Item_Number_D_ID3>016799</_nd_Item_Number_D_ID3>
<DisplayInvoiceNumber_ID42>8729267</DisplayInvoiceNumber_ID42>
<LineQuantityShipped_D_ID35>1</LineQuantityShipped_D_ID35>
<AckLine_Freight_ID21>22.64</AckLine_Freight_ID21>
</Line_Info_S4>
</Main___F4211_F42119_S1>
<Main___F4211_F42119_S1>
<Line_Info_S4>
<AckLineNumber_D_ID1>23</AckLineNumber_D_ID1>
<LineExtendedPrice_D_ID8>600.00</LineExtendedPrice_D_ID8>
<_nd_Item_Number_D_ID3>010765</_nd_Item_Number_D_ID3>
<DisplayInvoiceNumber_ID42>8729267</DisplayInvoiceNumber_ID42>
<LineQuantityShipped_D_ID35>1</LineQuantityShipped_D_ID35>
<AckLine_Freight_ID21>22.64</AckLine_Freight_ID21>
</Line_Info_S4>
</Main___F4211_F42119_S1>
<Main___F4211_F42119_S1>
<Line_Info_S4>
<AckLineNumber_D_ID1>24</AckLineNumber_D_ID1>
<LineExtendedPrice_D_ID8>715.00</LineExtendedPrice_D_ID8>
<_nd_Item_Number_D_ID3>P10512</_nd_Item_Number_D_ID3>
<DisplayInvoiceNumber_ID42>8729267</DisplayInvoiceNumber_ID42>
<LineQuantityShipped_D_ID35>1</LineQuantityShipped_D_ID35>
<AckLine_Freight_ID21>22.64</AckLine_Freight_ID21>
</Line_Info_S4>
</Main___F4211_F42119_S1>
<Main___F4211_F42119_S1>
<Line_Info_S4>
<AckLineNumber_D_ID1>62</AckLineNumber_D_ID1>
<LineExtendedPrice_D_ID8>630.00</LineExtendedPrice_D_ID8>
<_nd_Item_Number_D_ID3>016799</_nd_Item_Number_D_ID3>
<DisplayInvoiceNumber_ID42>8729267</DisplayInvoiceNumber_ID42>
<LineQuantityShipped_D_ID35>1</LineQuantityShipped_D_ID35>
<AckLine_Freight_ID21>22.64</AckLine_Freight_ID21>
</Line_Info_S4>
<Summary_Info_S8>
<AckExtendedPrice_T_ID2>5285.00</AckExtendedPrice_T_ID2>
<Freight_T_ID6>181.12</Freight_T_ID6>
<GrandTotal_T_ID17>5466.12</GrandTotal_T_ID17>
<DisplayInvoiceNumber_ID39>8729267</DisplayInvoiceNumber_ID39>
</Summary_Info_S8>
<Remit_To_S11>
<Invoice_No__ID19>Invoice No:</Invoice_No__ID19>
<DisplayInvoiceNumber_ID18>8729267</DisplayInvoiceNumber_ID18>
<Service_Charge_Message_ID14>Service charge message...</Service_Charge_Message_ID14>
</Remit_To_S11>
</Main___F4211_F42119_S1>
</R5942015>
Dies ist die gewünschte Ausgabe für EDI:
<R5942015>
<Invoices>
<InvNumber>8729266</InvNumber>
<InvoiceDate>2016-04-07</InvoiceDate>
<ShipmentNumber>169638</ShipmentNumber>
<ShipDate>2016-04-06</ShipDate>
<CustomerNumber>10779</CustomerNumber>
<DealerNumber>44014104</DealerNumber>
<line>
<ITEMLineNumber>13</ITEMLineNumber>
<ITEM2ndItemNumber>010799</ITEM2ndItemNumber>
<QTYShipped>2</QTYShipped>
<AMTLineExtendedPrice>1230.00</AMTLineExtendedPrice>
<AMTLandedFreight>54.78</AMTLandedFreight>
</line>
<summary>
<QTYOrdered>2</QTYOrdered>
<QTYShipped>2</QTYShipped>
<AMTLandedFreight>54.78</AMTLandedFreight>
<AMTExtendedPrice>1230.00</AMTExtendedPrice>
<AMTGrandTotal>1284.78</AMTGrandTotal>
</summary>
<messages>
<MSGServiceCharge>Service charge message...</MSGServiceCharge>
</messages>
</Invoices>
<Invoices>
<InvNumber>8729267</InvNumber>
<InvoiceDate>2016-04-07</InvoiceDate>
<ShipmentNumber>169638</ShipmentNumber>
<ShipDate>2016-04-06</ShipDate>
<CustomerNumber>11005</CustomerNumber>
<DealerNumber>50857355</DealerNumber>
<line>
<ITEMLineNumber>3</ITEMLineNumber>
<ITEM2ndItemNumber>010512</ITEM2ndItemNumber>
<QTYShipped>1</QTYShipped>
<AMTLineExtendedPrice>665.00</AMTLineExtendedPrice>
<AMTLandedFreight>22.64</AMTLandedFreight>
</line>
<line>
<ITEMLineNumber>4</ITEMLineNumber>
<ITEM2ndItemNumber>010512</ITEM2ndItemNumber>
<QTYShipped>1</QTYShipped>
<AMTLineExtendedPrice>665.00</AMTLineExtendedPrice>
<AMTLandedFreight>22.64</AMTLandedFreight>
</line>
<line>
<ITEMLineNumber>5</ITEMLineNumber>
<ITEM2ndItemNumber>010512</ITEM2ndItemNumber>
<QTYShipped>1</QTYShipped>
<AMTLineExtendedPrice>715.00</AMTLineExtendedPrice>
<AMTLandedFreight>22.64</AMTLandedFreight>
</line>
<line>
<ITEMLineNumber>11</ITEMLineNumber>
<ITEM2ndItemNumber>010512</ITEM2ndItemNumber>
<QTYShipped>1</QTYShipped>
<AMTLineExtendedPrice>665.00</AMTLineExtendedPrice>
<AMTLandedFreight>22.64</AMTLandedFreight>
</line>
<line>
<ITEMLineNumber>21</ITEMLineNumber>
<ITEM2ndItemNumber>016799</ITEM2ndItemNumber>
<QTYShipped>1</QTYShipped>
<AMTLineExtendedPrice>630.00</AMTLineExtendedPrice>
<AMTLandedFreight>22.64</AMTLandedFreight>
</line>
<line>
<ITEMLineNumber>23</ITEMLineNumber>
<ITEM2ndItemNumber>010765</ITEM2ndItemNumber>
<QTYShipped>1</QTYShipped>
<AMTLineExtendedPrice>600.00</AMTLineExtendedPrice>
<AMTLandedFreight>22.64</AMTLandedFreight>
</line>
<line>
<ITEMLineNumber>24</ITEMLineNumber>
<ITEM2ndItemNumber>P10512</ITEM2ndItemNumber>
<QTYShipped>1</QTYShipped>
<AMTLineExtendedPrice>715.00</AMTLineExtendedPrice>
<AMTLandedFreight>22.64</AMTLandedFreight>
</line>
<line>
<ITEMLineNumber>62</ITEMLineNumber>
<ITEM2ndItemNumber>016799</ITEM2ndItemNumber>
<QTYShipped>1</QTYShipped>
<AMTLineExtendedPrice>630.00</AMTLineExtendedPrice>
<AMTLandedFreight>22.64</AMTLandedFreight>
</line>
<summary>
<QTYOrdered>8</QTYOrdered>
<QTYShipped>8</QTYShipped>
<AMTLandedFreight>181.12</AMTLandedFreight>
<AMTExtendedPrice>5285.00</AMTExtendedPrice>
<AMTGrandTotal>5466.12</AMTGrandTotal>
</summary>
<messages>
<MSGServiceCharge>Service charge message...</MSGServiceCharge>
</messages>
</Invoices>
</R5942015>
Das ist, was ich eigentlich immer, wenn der XSL-Stylesheet ausgeführt wird. Die Detailzeile, die Zusammenfassung und die Nachrichten für die erste Rechnung werden nach der Kopfzeile der zweiten Rechnung angezeigt.
Dies ist, was ich für das Stylesheet ersonnen habe, um das schlecht geformte XML zu umgehen. Nochmals, neu zu XSL, also gehen Sie bitte einfach:
<xsl:stylesheet version="2.0"
xmlns:xref="http://www.oracle.com/XSL/Transform/java/oracle.tip.xref.xpath.XRefXPathFunctions"
xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20"
xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ora="http://schemas.oracle.com/xpath/extension"
xmlns:ehdr="http://www.oracle.com/XSL/Transform/java/oracle.tip.esb.server.headers.ESBHeaderFunctions"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
xmlns:orcl="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc"
xmlns:ids="http://xmlns.oracle.com/bpel/services/IdentityService/xpath"
xmlns:hwf="http://xmlns.oracle.com/bpel/workflow/xpath"
exclude-result-prefixes="xsl xs msdata xref xp20 bpws ora ehdr orcl ids hwf">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/R5942015">
<xsl:copy>
<xsl:for-each-group select="Main___F4211_F42119_S1" group-starting-with="Main___F4211_F42119_S1[Header_S2]">
<Invoices>
<xsl:apply-templates select="current-group()"/>
</Invoices>
</xsl:for-each-group>
</xsl:copy>
</xsl:template>
<xsl:template match="Main___F4211_F42119_S1[Header_S2]">
<xsl:if test="Header_S2/InvoiceNumber_ID62"><InvNumber><xsl:value-of select="Header_S2/InvoiceNumber_ID62"/></InvNumber></xsl:if>
<xsl:if test="Header_S2/InvoiceDate_ID107"><InvoiceDate><xsl:value-of select="Header_S2/InvoiceDate_ID107"/></InvoiceDate></xsl:if>
<xsl:if test="Header_S2/ShipmentNumber_ID70"><ShipmentNumber><xsl:value-of select="Header_S2/ShipmentNumber_ID70"/></ShipmentNumber></xsl:if>
<xsl:if test="Header_S2/ShipDate_ID11"><ShipDate><xsl:value-of select="Header_S2/ShipDate_ID11"/></ShipDate></xsl:if>
<xsl:if test="Header_S2/CustomerNumber_ID92"><CustomerNumber><xsl:value-of select="Header_S2/CustomerNumber_ID92"/></CustomerNumber></xsl:if>
<xsl:if test="Header_S2/DealerNumber_ID6"><DealerNumber><xsl:value-of select="Header_S2/DealerNumber_ID6"/></DealerNumber></xsl:if>
<xsl:if test="Line_Info_S4"><line>
<xsl:if test="Line_Info_S4/AckLineNumber_D_ID1"><ITEMLineNumber><xsl:value-of select="Line_Info_S4/AckLineNumber_D_ID1"/></ITEMLineNumber></xsl:if>
<xsl:if test="Line_Info_S4/_nd_Item_Number_D_ID3"><ITEM2ndItemNumber><xsl:value-of select="Line_Info_S4/_nd_Item_Number_D_ID3"/></ITEM2ndItemNumber></xsl:if>
<xsl:if test="Line_Info_S4/LineQuantityShipped_D_ID35"><QTYShipped><xsl:value-of select="Line_Info_S4/LineQuantityShipped_D_ID35"/></QTYShipped></xsl:if>
<xsl:if test="Line_Info_S4/LineExtendedPrice_D_ID8"><AMTLineExtendedPrice><xsl:value-of select="Line_Info_S4/LineExtendedPrice_D_ID8"/></AMTLineExtendedPrice></xsl:if>
<xsl:if test="Line_Info_S4/AckLine_Freight_ID21"><AMTLandedFreight><xsl:value-of select="Line_Info_S4/AckLine_Freight_ID21"/></AMTLandedFreight></xsl:if>
</line></xsl:if>
<xsl:if test="Summary_Info_S8"><summary>
<xsl:if test="Summary_Info_S8/AckQuantity_T_ID10"><QTYOrdered><xsl:value-of select="Summary_Info_S8/AckQuantity_T_ID10"/></QTYOrdered></xsl:if>
<xsl:if test="Summary_Info_S8/QuantityShipped_T_ID13"><QTYShipped><xsl:value-of select="Summary_Info_S8/QuantityShipped_T_ID13"/></QTYShipped></xsl:if>
<xsl:if test="Summary_Info_S8/LandedFreight_T_ID6"><AMTLandedFreight><xsl:value-of select="Summary_Info_S8/LandedFreight_T_ID6"/></AMTLandedFreight></xsl:if>
<xsl:if test="Summary_Info_S8/AckExtendedPrice_T_ID2"><AMTExtendedPrice><xsl:value-of select="Summary_Info_S8/AckExtendedPrice_T_ID2"/></AMTExtendedPrice></xsl:if>
<xsl:if test="Summary_Info_S8/GrandTotal_T_ID17"><AMTGrandTotal><xsl:value-of select="Summary_Info_S8/GrandTotal_T_ID17"/></AMTGrandTotal></xsl:if>
</summary></xsl:if>
<xsl:if test="Remit_To_S11"><messages>
<xsl:if test="Remit_To_S11/Service_Charge_Message_ID14"><MSGServiceCharge><xsl:value-of select="Remit_To_S11/Service_Charge_Message_ID14"/></MSGServiceCharge></xsl:if>
</messages></xsl:if>
</xsl:template>
<xsl:template match="Main___F4211_F42119_S1">
<xsl:if test="Line_Info_S4"><line>
<xsl:if test="Line_Info_S4/AckLineNumber_D_ID1"><ITEMLineNumber><xsl:value-of select="Line_Info_S4/AckLineNumber_D_ID1"/></ITEMLineNumber></xsl:if>
<xsl:if test="Line_Info_S4/_nd_Item_Number_D_ID3"><ITEM2ndItemNumber><xsl:value-of select="Line_Info_S4/_nd_Item_Number_D_ID3"/></ITEM2ndItemNumber></xsl:if>
<xsl:if test="Line_Info_S4/LineQuantityOrdered_D_ID10"><QTYOrdered><xsl:value-of select="Line_Info_S4/LineQuantityOrdered_D_ID10"/></QTYOrdered></xsl:if>
<xsl:if test="Line_Info_S4/LineQuantityShipped_D_ID35"><QTYShipped><xsl:value-of select="Line_Info_S4/LineQuantityShipped_D_ID35"/></QTYShipped></xsl:if>
<xsl:if test="Line_Info_S4/LineExtendedPrice_D_ID8"><AMTLineExtendedPrice><xsl:value-of select="Line_Info_S4/LineExtendedPrice_D_ID8"/></AMTLineExtendedPrice></xsl:if>
<xsl:if test="Line_Info_S4/AckLine_Freight_ID21"><AMTLandedFreight><xsl:value-of select="Line_Info_S4/AckLine_Freight_ID21"/></AMTLandedFreight></xsl:if>
</line></xsl:if>
<xsl:if test="Summary_Info_S8"><summary>
<xsl:if test="Summary_Info_S8/AckQuantity_T_ID10"><QTYOrdered><xsl:value-of select="Summary_Info_S8/AckQuantity_T_ID10"/></QTYOrdered></xsl:if>
<xsl:if test="Summary_Info_S8/QuantityShipped_T_ID13"><QTYShipped><xsl:value-of select="Summary_Info_S8/QuantityShipped_T_ID13"/></QTYShipped></xsl:if>
<xsl:if test="Summary_Info_S8/LandedFreight_T_ID6"><AMTLandedFreight><xsl:value-of select="Summary_Info_S8/LandedFreight_T_ID6"/></AMTLandedFreight></xsl:if>
<xsl:if test="Summary_Info_S8/AckExtendedPrice_T_ID2"><AMTExtendedPrice><xsl:value-of select="Summary_Info_S8/AckExtendedPrice_T_ID2"/></AMTExtendedPrice></xsl:if>
<xsl:if test="Summary_Info_S8/GrandTotal_T_ID17"><AMTGrandTotal><xsl:value-of select="Summary_Info_S8/GrandTotal_T_ID17"/></AMTGrandTotal></xsl:if>
</summary></xsl:if>
<xsl:if test="Header_S2">
<xsl:if test="Header_S2/InvoiceNumber_ID62"><InvNumber><xsl:value-of select="Header_S2/InvoiceNumber_ID62"/></InvNumber></xsl:if>
<xsl:if test="Header_S2/InvoiceDate_ID107"><InvoiceDate><xsl:value-of select="Header_S2/InvoiceDate_ID107"/></InvoiceDate></xsl:if>
<xsl:if test="Header_S2/ShipmentNumber_ID70"><ShipmentNumber><xsl:value-of select="Header_S2/ShipmentNumber_ID70"/></ShipmentNumber></xsl:if>
<xsl:if test="Header_S2/ShipDate_ID11"><ShipDate><xsl:value-of select="Header_S2/ShipDate_ID11"/></ShipDate></xsl:if>
<xsl:if test="Header_S2/CustomerNumber_ID92"><CustomerNumber><xsl:value-of select="Header_S2/CustomerNumber_ID92"/></CustomerNumber></xsl:if>
<xsl:if test="Header_S2/DealerNumber_ID6"><DealerNumber><xsl:value-of select="Header_S2/DealerNumber_ID6"/></DealerNumber></xsl:if>
<xsl:if test="Remit_To_S11"><messages>
<xsl:if test="Remit_To_S11/Service_Charge_Message_ID14"><MSGServiceCharge><xsl:value-of select="Remit_To_S11/Service_Charge_Message_ID14"/></MSGServiceCharge></xsl:if>
</messages></xsl:if>
</xsl:template>
</xsl:stylesheet>
Vielen Dank für das Beantworten dieser Frage. Wenn Sie meine vorherige Frage zu diesem Thema gesehen haben, entschuldige ich mich für die schlechte Struktur der Frage.
Plus uno für die Verbesserung Ihrer Q Schreiben Fähigkeit. Viel Glück. – shellter