Beispiel für erweiterte XML-Regel: Entfernen von Bindestrichen (-) aus einem extrahierten Wert

Einige Zahlenfelder in Rechnungen enthalten Werte mit Bindestrichen, die INVOICES nicht in XML-Rechnungen verarbeiten kann. In diesem Beispiel entfernen wir Bindestriche aus dem Feld Lieferanten-Kontonummer 2 in einer Svefaktura-Rechnung, damit der extrahierte Wert den Formatspezifikationen für das Feld entspricht:

  1. Wählen Sie in der Registerkarte Felder des XML-Mappers (auf der rechten Seite des Fensters) im Abschnitt Felder das Feld SupplierAccountNumber2 aus.
  2. Klicken Sie auf die Schaltfläche rechts neben dem Wert, um die Feldzuordnungsregeln für das Feld auf der linken Seite anzuzeigen.
  3. Wählen Sie links unten am Bildschirm XSL verwenden.
  4. Klicken Sie auf Aus erweiterten Regeln importieren, um das XSL-Äquivalent der oben genannten erweiterten Regeln dem unten stehenden XSL-Bearbeitungsfeld hinzuzufügen. (Wie soll das aussehen?)
    <xsl:template match="/">
      <xsl:for-each select="/x:Invoice/cac:PaymentMeans/cac:PayeeFinancialAccount">
        <xsl:if test="cac:FinancialInstitutionBranch/cac:FinancialInstitution/cac:ID='BGABSESS'">
          <xsl:value-of select="./cac:ID"/>
        </xsl:if>
        <xsl:if test="cac:FinancialInstitutionBranch/cac:FinancialInstitution/cac:ID!='BGABSESS'"></xsl:if>
      </xsl:for-each>
    </xsl:template>
  5. Ändern Sie den Code auf diese Weise, um Bindestriche zu entfernen.

Erforderliche Änderungen wurden Fett hinzugefügt:

<xsl:template match="/">
  <xsl:for-each select="/x:Invoice/cac:PaymentMeans/cac:PayeeFinancialAccount">
    <xsl:if test="cac:FinancialInstitutionBranch/cac:FinancialInstitution/cac:ID='BGABSESS'">
      <xsl:value-of select="translate(./cac:ID, '-', '')"/>
    </xsl:if>
    <xsl:if test="cac:FinancialInstitutionBranch/cac:FinancialInstitution/cac:ID!='BGABSESS'"></xsl:if>
  </xsl:for-each>
</xsl:template>

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.

Alternative mit Variablen

Als Alternative zu den Änderungen im oben beschriebenen Schritt 5 können Sie den extrahierten Wert auch ändern, indem Sie den XSL-Code mit Variablen auf folgende Weise anpassen:

<xsl:template match="/">
  <xsl:for-each select="/x:Invoice/cac:PaymentMeans/cac:PayeeFinancialAccount">
    <xsl:if test="cac:FinancialInstitutionBranch/cac:FinancialInstitution/cac:ID='BGABSESS'">
      <xsl:variable name="startstring">
        <xsl:value-of select="substring-before(./cac:ID, '-')" />
      </xsl:variable>
      <xsl:variable name="endstring">
        <xsl:value-of select="substring-after(./cac:ID, '-')" />
      </xsl:variable>
      <xsl:value-of select="concat($startstring, $endstring)"/>
    </xsl:if>
    <xsl:if test="cac:FinancialInstitutionBranch/cac:FinancialInstitution/cac:ID!='BGABSESS'"></xsl:if>
  </xsl:for-each>
</xsl:template>
In this case, the <xsl:value-of select="./cac:ID"/> string is replaced by the text in red above. The startstring and endstring variables are declared using the values of the ID node before and after each hyphen. The concat function is then used to combine the two strings. Multiple strings can be combined this way.

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

Ändern eines extrahierten XML-Feldwerts mit XSL

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