Beispiel für erweiterte XML-Regel: Ändern eines extrahierten XML-Feldwerts mit XSL

In diesem Beispiel wurde das Feld Kofax ReadSoft Invoices DeliveryDate in einer Svefaktura-Rechnung korrekt erfasst - allerdings im Format "2011-06-01 T00:00". Es kann eine erweiterte Regel erstellt werden, damit der angezeigte Wert auf „2011-06-01“ begrenzt ist:

  1. Wählen Sie in der Registerkarte Felder des XML-Mappers (auf der rechten Seite des Fensters) in der Kategorie Felder das Feld DeliveryDate aus.
    • Klicken Sie auf die Schaltfläche rechts neben dem Wert:

      falls keine Regel definiert wurde, oder

      falls es bereits eine bestehende Regel für das Feld gibt.

  2. Öffnen Sie im Bereich für die Auswahl des XML-Knotens der erweiterten Regeln im oberen Bereich der Registerkarte Feldzuordnungsregeln, der sich auf der linken Seite des Fensters befindet, den Knoten Invoice.
  3. Wählen Sie den Unterknoten, der das Feld Lieferdatum repräsentiert (also Invoice/cac:Delivery/cbc:ActualDeliveryDate im Svefaktura XML-Rechnungsstandard) und klicken Sie auf Auswählen.
  4. Wählen Sie Keine Bedingung: Entspricht wahrer und falscher Bedingung unter Ausgewählte Bedingungen in der Mitte des Bildschirms.
  5. Wählen Sie Wert von XML-Knoten verwenden.
  6. Wählen Sie den Knoten für den Wert, der verwendet werden soll, im nachfolgenden Feld aus (für Svefaktura-Rechnungen ist das cbc:ActualDeliveryDate).

Sie müssen den Knoten, der angezeigt wird, eventuell öffnen, falls der Knoten, den Sie auswählen möchten, ein Unterknoten ist.

  1. Klicken Sie auf Hinzufügen.
  2. Wählen Sie XSL verwenden auf der unteren linken Seite des Fensters.
  3. Klicken Sie die Schaltfläche Aus erweiterten Regeln importieren, um den XSL-Code, der die oben ausgewählte Regel repräsentiert, zum unten stehenden Codefeld hinzuzufügen. Hier ist der Code für Svefaktura-Rechnungen:
    <xsl:template match="/">
       <xsl:for-each select="/x:Invoice/cac:Delivery/cbc:ActualDeliveryDateTime">
          <xsl:value-of select="."/>   </xsl:for-each>
    </xsl:template>
  4. Fügen Sie substring-before(.,'T') in der dritten Zeile hinzu, damit der Code wie folgt aussieht:

    <xsl:value-of select="substring-before(.,'T')"/>   </xsl:for-each>

Klicken Sie auf Extrahieren und prüfen Sie das Bild, um die Ergebnisse zu kontrollieren. Wenn Sie die Regel ändern möchten, klicken Sie in das Feld Bei der Zuordnung dieses Feldes verwendete Regeln, wählen Sie Entf, um sie zu löschen, nehmen Sie die nötigen Änderungen vor und klicken Sie dann auf Hinzufügen, um die geänderte Regel hinzuzufügen. Wenn Sie eine Bedingung ändern möchten, ist der Ablauf gleich (und falls eine Regel darauf basiert, wird die Regel auch gelöscht, wenn Sie die Bedingung löschen).

Überlegen Sie, ob die Änderung(en) auf alle Rechnungen oder nur jene der aktuellen XML-Rechnungsdefinition angewandt werden soll(en). Klicken Sie auf XML-Definition speichern, um die Änderung nur für die aktuelle XML-Rechnungsdefinition (also den aktuellen Lieferanten) zu speichern. Klicken Sie auf XML-Profil speichern, falls Sie die Regel unabhängig von der XML-Rechnungsdefinition auf alle XML-Rechnungen anwenden möchten, die mit dem XML-Rechnungsprofil übereinstimmen.

Über Unterzeichenfolge-Funktionen

  • Substring-before(source, str) liefert jenen Teil der Quelle, der vor dem ersten Auftreten von str steht.

Falls str nicht gefunden wird, ist das Ergebnis eine leere Zeichenfolge.

In diesem Beispiel ist die Quelle „2011-06-01 T00:00“, wenn Sie substring-before(.,'T') hinzufügen, lautet das Ergebnis 2011-06-01, da diese Zeichen vor dem ersten Auftreten von 'T' stehen.

  • Substring-after(source, str) liefert jenen Teil der Quelle, der nach dem ersten Auftreten von str. steht.

Falls str nicht gefunden wird, ist das Ergebnis eine leere Zeichenfolge.

Hinweis

Wenn Sie XSL verwenden, um einen gewünschten Wert zu erhalten, testen Sie die Ausgabe, wenn die Daten Sonderzeichen (wie &) enthalten.

Um Sonderzeichen normal anzuzeigen (das heißt, dass ein & tatsächlich als & angezeigt wird), fügen Sie dem XSL-Snippet <xsl:output method="text" /> hinzu.



Falls dieser Code nicht hinzugefügt wird, würde ein & als &amp; erscheinen.

Sonstige Beispiele von erweiterten XML Regeln:

Korrigieren eines falsch geschriebenen Feldnamens in Verbindung mit Stammdaten

Formatieren eines extrahierten XML-Werts mit XSL

Entfernen von Bindestrichen (-) aus einem extrahierten Wert

Auswahl des Knotens X basierend auf Knoten Y (oder auf Attribut a)

Auswahl eines bestimmten Knotens, wenn mehr als ein Knoten nach Anwendung der Standardregel passt

Auswahl des Knotens X, falls vorhanden, und des Knotens Y, falls nicht

Angabe eines konstanten Werts für ein Feld

Zusammenfassung von Daten aus Einzelposten als Hinweis in periodischen Rechnungen

Übersetzen eines XML-Werts in einen für Kofax ReadSoft Invoices verständlichen Wert