ich auf XSLT arbeitete, die ein logisches Duplikate zu ignorieren hat mit (MySegment/*[not(.=preceding::*)]).
XSLT: Ignorieren Duplikate Ähnliche Werte
Eingang:
<MySegment>
<Field1>ABCD</Field1>
<FIeld2>1</Field2>
</MySegment>
<MySegment>
<Field1>ABCD123</Field1>
<FIeld2>1</Field2>
</MySegment>
Hier haben wir zwei verschiedene Werte, aber da ABCD123 ABCD enthält auch , es wird als ein doppelter Eintrag behandelt. Kann jemand beraten.
Hier ist, wie mein XSLT wie folgt aussieht:
<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="/RecordsInp">
<xsl:for-each select="ParentSegment">
<xsl:for-each select="./MySegment/*[not(.=preceding::*)]">
<A>
<Field1><xsl:value-of select ="name(.)"/></Field1>
<Field2><xsl:value-of select="."/></Field2>
</A>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Meine Eingabe ist:
<RecordsInp>
<ParentSegment>
<MySegment>
<Field1>ABC</Field1>
<Field2>A1</Field2>
</MySegment>
<MySegment>
<Field1>ABC</Field1>
<Field2>A1</Field2>
</MySegment>
<MySegment>
<Field1>ABCDEF</Field1>
<Field2>ABC</Field2>
</MySegment>
</ParentSegment>
</RecordsInp>
Was ich erhalte ist:
<?xml version="1.0" encoding="UTF-8"?>
<A>
<Field1>Field1</Field1>
<Field2>ABC</Field2>
</A><A>
<Field1>Field2</Field1>
<Field2>A1</Field2>
</A><A>
<Field1>Field1</Field1>
<Field2>ABCDEF</Field2>
</A>
Hinweis Ich bin nicht Field2 bekommen = ABC beim letzten Auftreten. Da Field2 ABC nie in früheren Vorkommnissen hatte, muss ich unter XML:
<?xml version="1.0" encoding="UTF-8"?>
<A>
<Field1>Field1</Field1>
<Field2>ABC</Field2>
</A><A>
<Field1>Field2</Field1>
<Field2>A1</Field2>
</A><A>
<Field1>Field1</Field1>
<Field2>ABCDEF</Field2>
</A>
<A>
<Field1>Field2</Field1>
<Field2>ABC</Field2>
</A>
* "Da ABCD123 auch ABCD enthält, wird es als Duplikat behandelt" * - Nein, nicht durch den XPath, den Sie anzeigen. – Tomalak
Könnten Sie bitte beraten, wie dies zu korrigieren ist.Mein Ziel ist es, alle Felder dieses Segments zu durchlaufen und sie ohne Duplikate im Header zu füllen. – Tpi
Wir können Ihnen nicht raten, wie Sie Ihren Code korrigieren können, ohne dass Sie genau erklären, was Ihr Code tun soll, und mindestens einen charakteristisches Beispiel, das das fehlerhafte Verhalten demonstriert. Zusammen mit der Beispieleingabe und der erwarteten und beobachteten Ausgabe nennen wir dies ein [mcve], und es ist das, was wir von Ihnen erwarten, wenn Sie nach Hilfe fragen, die Ihren Code repariert. –