Beispiel für erweiterte XML-Regel: Formatieren eines extrahierten XML-Werts mit XSL

Dieses Thema enthält zwei Beispiele, die beschreiben, wie Werte, die aus XML-Rechnungen entnommen wurden, neu formatiert werden können.

Beispiel 1: Änderung des Jahresformats YYYY in YY

Das ist ein Beispiel für das InvoicePeriodStart-Feld in einer Svefaktura-Rechnung:

  1. Wählen Sie in der Registerkarte Felder des XML-Mappers (auf der rechten Seite des Fensters) im Abschnitt Felder das Feld Anfang des Rechnungszeitraums 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. Wählen Sie XSL verwenden links unten am Bildschirm.
  3. Klicken Sie auf Aus erweiterten Regeln importieren. In diesem Beispiel wird angenommen, dass keine erweiterten Regeln für dieses Feld definiert wurden. Anfänglicher XSL-Code, der für das ausgewählte Feld relevant ist, wird dem XSL-Bearbeitungsfeld hinzugefügt.
    <xsl:template match="/">
       <xsl:for-each select="//x:Invoice/x:InvoicingPeriod/cbc:StartDateTime">
       </xsl:for-each>
    </xsl:template>
  4. Ändern Sie den Code auf diese Weise, um das Format von YYY in YY zu ändern.

Erforderliche Änderungen wurden Fett hinzugefügt:

<xsl:template match="/">
   <xsl:for-each select="//x:Invoice/x:InvoicingPeriod/cbc:StartDateTime">
          <xsl:choose>
<xsl:when test="starts-with(.,'20')">
<xsl:value-of select="substring(.,3)"/>  
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="substring(.,1)"/>
</xsl:otherwise>
          </xsl:choose>
   </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.

Beispiel 2: Entfernen von zusätzlichen Zeichen

Dieses Beispiel entfernt unnötige Zeichen aus dem extrahierten Wert für das Feld Lieferanten-Steuernummer 1 (d .h. eine Zahl wie SE556078650001 wird in 5560786500 geändert).

  1. Wählen Sie in der Registerkarte Felder des XML-Mappers (auf der rechten Seite des Fensters) im Abschnitt Felder das Feld SupplierTaxNumber1 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 erweiterten Regeln über dem unten stehenden XSL-Bearbeitungsfeld hinzuzufügen, oder um etwas anfänglichen XSL-Code hinzuzufügen, falls keine erweiterte Regel definiert wurde. (Es sieht wie folgt aus, wenn keine erweiterte Regel definiert wurde.)
    <xsl:template match="/">
       <xsl:for-each select="//x:Invoice/x:InvoicingPeriod/cbc:StartDateTime">
       </xsl:for-each>
    </xsl:template>
  5. Ändern Sie den Code auf diese Weise, um das Format von YYY in YY zu ändern.

Erforderliche Änderungen wurden Fett hinzugefügt:

<xsl:template match="/">
   <xsl:for-each select="/x:Invoice/cac:SellerParty/cac:Party/cac:PartyTaxScheme">
<xsl:if test="cac:TaxScheme/cac:ID='VAT'">
<!-- <xsl:value-of select="CompanyID"/> -->
<xsl:choose>
<xsl:when test="starts-with(cac:CompanyID,'SE')">
<xsl:value-of select="substring(cac:CompanyID,3,10)"/>  
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="substring(cac:CompanyID,1)"/>
</xsl:otherwise>
</xsl:choose>
<xsl:if>
<xsl:if test="TaxScheme/ID!='VAT'"></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.

Sonstige Beispiele von erweiterten XML Regeln:

Korrigieren eines falsch geschriebenen Feldnamens in Verbindung mit Stammdaten

Ändern eines extrahierten XML-Feldwerts 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 einer periodischen Rechnung

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