Validierung von Puzzle Dokumenten
  • Technische Prüfung der Eingaben nach festen Regeln, bspw.
    • Pflichtfelder
    • logische Datumsangaben
  • ist keine inhaltliche Prüfung des Antrags
  • für den Nutzer wirkt sich das in der Bedienung und Oberfläche durch Hinweise bzw. Fehlermeldungen aus

validierung_01.png

Umsetzung
  1. Puzzle Dokument (XML)
  2. Transformation per XSLT
  3. Fehlerbeschreibung im XML
1. Puzzle Dokument
  1. XML Ansicht des Puzzle Dokumentes erhalten Sie im Puzzle Editor V2
    validierung_02.png
2. Transformation
  • Puzzle-Dokument in eine Fehlerbeschreibung überführen
  • eine Transformationsdatei für jede Kategorie
    <PROJEKT_ORDNER>\IkxXml\Puzzle\ValidationXslt\<KATEGORIE_CLASSID>.xslt
  • vordefinierte Transformation für
    • Mindest-/Maximalvorkommen von Werten

Kontextbezogene Templates

  • werden auf bestimmte Elemente aus dem Puzzle-Dokument angewendet

<xsl:template match="/Root" priority="1">

  <ValidationResult>

    <!-- Pflichtfelder -->

    <xsl:call-template name="ValidatePuzzleCategoryClassData" />

    <!-- Spezialfälle abhandeln -->

    <xsl:for-each select="cardoExtension:SelectSingleNodeByXPathString(., concat('', @type))">

      <xsl:call-template name="Validate_SBP_BBP" />

    </xsl:for-each>

  </ValidationResult>

</xsl:template>

Benannte Templates

  • wiederverwendbar, i.d.R. parametrisiert
  • werden explizit angewendet

 

<xsl:template name="Error">

  <xsl:param name="path"/>

  <xsl:param name="msg"/>

  <Message severity="Error">

    <xsl:attribute name="path">

      <xsl:value-of select="$path"/>

    </xsl:attribute>

    <xsl:value-of select="$msg"/>

  </Message>

</xsl:template>

 

<xsl:call-template name="Error">

  <xsl:with-param name="path" select="concat($cat, '/H2SUEBERWACHUNG')" />

  <xsl:with-param name="msg" select="'Einrichtungen zur H2S-Überwachung müssen angegeben werden.'" />

</xsl:call-template>

Einfache Bedingung

  • wird angewendet, wenn eine Bedingung zutrifft

<xsl:if test="BOHRLOCHBILDUEBERG/text() != 'true' and not(BOHRLOCHBILDDATEI)">

  <xsl:call-template name="Error">

    <xsl:with-param name="path" select="concat($cat, '/BOHRLOCHBILDDATEI')" />

    <xsl:with-param name="msg" select="'Es muss eine der Angaben ausgefüllt werden.'" />

  </xsl:call-template>

</xsl:if>

Bedingte Auswahl

  • mehrere Bedingungen definierbar

<xsl:choose>

  <xsl:when test="$givenCount = 0">

    <xsl:call-template name="Error">

      <xsl:with-param name="msg" select="concat('&#34;',$label,'&#34; ist nicht optional.')"/>

      <xsl:with-param name="path" select="$path"/>

    </xsl:call-template>

  </xsl:when>

  <xsl:when test="string($minOccurs) != '' and $givenCount &lt; $minOccurs">

    <xsl:call-template name="Error">

      <xsl:with-param name="msg" select="concat('&#34;',$label,'&#34; muss mindestens ', $minOccurs, 'x angegeben werden.')"/>

      <xsl:with-param name="path" select="$path"/>

    </xsl:call-template>

  </xsl:when>

</xsl:choose>

Output

  • alles, was kein XSLT ist
  • durch bestimmte XSLT-Tags generierter Inhalt

<xsl:template name="Error">

  <xsl:param name="path"/>

  <xsl:param name="msg"/>

  <Message severity="Error">

    <xsl:attribute name="path">

      <xsl:value-of select="$path"/>

    </xsl:attribute>

    <xsl:value-of select="$msg"/>

  </Message>

</xsl:template>

3. Fehlerbeschreibung erstellen
  • die Fehlerbeschreibung ist ein XML-Dokument
  • enthält eine Liste von Fehlermeldungen mit Entität
  • Pro Entität mehrere Fehler möglich
  • Auswertung durch Anwendungen, bspw. Puzzle-Editor