update
This commit is contained in:
@@ -1,18 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<xsl:stylesheet xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
<xsl:stylesheet xmlns:svrl="http://purl.oclc.org/dsdl/svrl" xmlns:ccts="urn:un:unece:uncefact:documentation:standard:CoreComponentsTechnicalSpecification:2" xmlns:iso="http://purl.oclc.org/dsdl/schematron" xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" xmlns:saxon="http://saxon.sf.net/" xmlns:schold="http://www.ascc.net/xml/schematron" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
|
||||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
<!--Implementers: please note that overriding process-prolog or process-root is
|
||||||
xmlns:saxon="http://saxon.sf.net/"
|
|
||||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
|
||||||
xmlns:schold="http://www.ascc.net/xml/schematron"
|
|
||||||
xmlns:iso="http://purl.oclc.org/dsdl/schematron"
|
|
||||||
xmlns:xhtml="http://www.w3.org/1999/xhtml"
|
|
||||||
xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
|
|
||||||
xmlns:ccts="urn:un:unece:uncefact:documentation:standard:CoreComponentsTechnicalSpecification:2"
|
|
||||||
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
|
||||||
xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
|
|
||||||
xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
|
|
||||||
version="2.0"><!--Implementers: please note that overriding process-prolog or process-root is
|
|
||||||
the preferred method for meta-stylesheets to use where possible. -->
|
the preferred method for meta-stylesheets to use where possible. -->
|
||||||
|
|
||||||
<xsl:param name="archiveDirParameter" />
|
<xsl:param name="archiveDirParameter" />
|
||||||
<xsl:param name="archiveNameParameter" />
|
<xsl:param name="archiveNameParameter" />
|
||||||
<xsl:param name="fileNameParameter" />
|
<xsl:param name="fileNameParameter" />
|
||||||
@@ -20,25 +10,32 @@
|
|||||||
<xsl:variable name="document-uri">
|
<xsl:variable name="document-uri">
|
||||||
<xsl:value-of select="document-uri(/)" />
|
<xsl:value-of select="document-uri(/)" />
|
||||||
</xsl:variable>
|
</xsl:variable>
|
||||||
|
|
||||||
<!--PHASES-->
|
<!--PHASES-->
|
||||||
|
|
||||||
|
|
||||||
<!--PROLOG-->
|
<!--PROLOG-->
|
||||||
<xsl:output xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<xsl:output indent="yes" method="xml" omit-xml-declaration="no" standalone="yes" />
|
||||||
method="xml"
|
|
||||||
omit-xml-declaration="no"
|
|
||||||
standalone="yes"
|
|
||||||
indent="yes"/>
|
|
||||||
<!--XSD TYPES FOR XSLT2-->
|
<!--XSD TYPES FOR XSLT2-->
|
||||||
|
|
||||||
|
|
||||||
<!--KEYS AND FUNCTIONS-->
|
<!--KEYS AND FUNCTIONS-->
|
||||||
|
|
||||||
|
|
||||||
<!--DEFAULT RULES-->
|
<!--DEFAULT RULES-->
|
||||||
|
|
||||||
|
|
||||||
<!--MODE: SCHEMATRON-SELECT-FULL-PATH-->
|
<!--MODE: SCHEMATRON-SELECT-FULL-PATH-->
|
||||||
<!--This mode can be used to generate an ugly though full XPath for locators-->
|
<!--This mode can be used to generate an ugly though full XPath for locators-->
|
||||||
<xsl:template match="*" mode="schematron-select-full-path">
|
<xsl:template match="*" mode="schematron-select-full-path">
|
||||||
<xsl:apply-templates select="." mode="schematron-get-full-path-3"/>
|
<xsl:apply-templates mode="schematron-get-full-path" select="." />
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<!--MODE: SCHEMATRON-FULL-PATH-->
|
<!--MODE: SCHEMATRON-FULL-PATH-->
|
||||||
<!--This mode can be used to generate an ugly though full XPath for locators-->
|
<!--This mode can be used to generate an ugly though full XPath for locators-->
|
||||||
<xsl:template match="*" mode="schematron-get-full-path">
|
<xsl:template match="*" mode="schematron-get-full-path">
|
||||||
<xsl:apply-templates select="parent::*" mode="schematron-get-full-path"/>
|
<xsl:apply-templates mode="schematron-get-full-path" select="parent::*" />
|
||||||
<xsl:text>/</xsl:text>
|
<xsl:text>/</xsl:text>
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="namespace-uri()=''">
|
<xsl:when test="namespace-uri()=''">
|
||||||
@@ -52,14 +49,13 @@
|
|||||||
<xsl:text>']</xsl:text>
|
<xsl:text>']</xsl:text>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
<xsl:variable name="preceding"
|
<xsl:variable name="preceding" select="count(preceding-sibling::*[local-name()=local-name(current()) and namespace-uri() = namespace-uri(current())])" />
|
||||||
select="count(preceding-sibling::*[local-name()=local-name(current()) and namespace-uri() = namespace-uri(current())])"/>
|
|
||||||
<xsl:text>[</xsl:text>
|
<xsl:text>[</xsl:text>
|
||||||
<xsl:value-of select="1+ $preceding" />
|
<xsl:value-of select="1+ $preceding" />
|
||||||
<xsl:text>]</xsl:text>
|
<xsl:text>]</xsl:text>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
<xsl:template match="@*" mode="schematron-get-full-path">
|
<xsl:template match="@*" mode="schematron-get-full-path">
|
||||||
<xsl:apply-templates select="parent::*" mode="schematron-get-full-path"/>
|
<xsl:apply-templates mode="schematron-get-full-path" select="parent::*" />
|
||||||
<xsl:text>/</xsl:text>
|
<xsl:text>/</xsl:text>
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="namespace-uri()=''">@<xsl:value-of select="name()" />
|
<xsl:when test="namespace-uri()=''">@<xsl:value-of select="name()" />
|
||||||
@@ -73,6 +69,7 @@
|
|||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<!--MODE: SCHEMATRON-FULL-PATH-2-->
|
<!--MODE: SCHEMATRON-FULL-PATH-2-->
|
||||||
<!--This mode can be used to generate prefixed XPath for humans-->
|
<!--This mode can be used to generate prefixed XPath for humans-->
|
||||||
<xsl:template match="node() | @*" mode="schematron-get-full-path-2">
|
<xsl:template match="node() | @*" mode="schematron-get-full-path-2">
|
||||||
@@ -92,6 +89,7 @@
|
|||||||
<!--MODE: SCHEMATRON-FULL-PATH-3-->
|
<!--MODE: SCHEMATRON-FULL-PATH-3-->
|
||||||
<!--This mode can be used to generate prefixed XPath for humans
|
<!--This mode can be used to generate prefixed XPath for humans
|
||||||
(Top-level element has index)-->
|
(Top-level element has index)-->
|
||||||
|
|
||||||
<xsl:template match="node() | @*" mode="schematron-get-full-path-3">
|
<xsl:template match="node() | @*" mode="schematron-get-full-path-3">
|
||||||
<xsl:for-each select="ancestor-or-self::*">
|
<xsl:for-each select="ancestor-or-self::*">
|
||||||
<xsl:text>/</xsl:text>
|
<xsl:text>/</xsl:text>
|
||||||
@@ -106,56 +104,56 @@
|
|||||||
<xsl:text />/@<xsl:value-of select="name(.)" />
|
<xsl:text />/@<xsl:value-of select="name(.)" />
|
||||||
</xsl:if>
|
</xsl:if>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<!--MODE: GENERATE-ID-FROM-PATH -->
|
<!--MODE: GENERATE-ID-FROM-PATH -->
|
||||||
<xsl:template match="/" mode="generate-id-from-path" />
|
<xsl:template match="/" mode="generate-id-from-path" />
|
||||||
<xsl:template match="text()" mode="generate-id-from-path">
|
<xsl:template match="text()" mode="generate-id-from-path">
|
||||||
<xsl:apply-templates select="parent::*" mode="generate-id-from-path"/>
|
<xsl:apply-templates mode="generate-id-from-path" select="parent::*" />
|
||||||
<xsl:value-of select="concat('.text-', 1+count(preceding-sibling::text()), '-')" />
|
<xsl:value-of select="concat('.text-', 1+count(preceding-sibling::text()), '-')" />
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
<xsl:template match="comment()" mode="generate-id-from-path">
|
<xsl:template match="comment()" mode="generate-id-from-path">
|
||||||
<xsl:apply-templates select="parent::*" mode="generate-id-from-path"/>
|
<xsl:apply-templates mode="generate-id-from-path" select="parent::*" />
|
||||||
<xsl:value-of select="concat('.comment-', 1+count(preceding-sibling::comment()), '-')" />
|
<xsl:value-of select="concat('.comment-', 1+count(preceding-sibling::comment()), '-')" />
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
<xsl:template match="processing-instruction()" mode="generate-id-from-path">
|
<xsl:template match="processing-instruction()" mode="generate-id-from-path">
|
||||||
<xsl:apply-templates select="parent::*" mode="generate-id-from-path"/>
|
<xsl:apply-templates mode="generate-id-from-path" select="parent::*" />
|
||||||
<xsl:value-of select="concat('.processing-instruction-', 1+count(preceding-sibling::processing-instruction()), '-')" />
|
<xsl:value-of select="concat('.processing-instruction-', 1+count(preceding-sibling::processing-instruction()), '-')" />
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
<xsl:template match="@*" mode="generate-id-from-path">
|
<xsl:template match="@*" mode="generate-id-from-path">
|
||||||
<xsl:apply-templates select="parent::*" mode="generate-id-from-path"/>
|
<xsl:apply-templates mode="generate-id-from-path" select="parent::*" />
|
||||||
<xsl:value-of select="concat('.@', name())" />
|
<xsl:value-of select="concat('.@', name())" />
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
<xsl:template match="*" mode="generate-id-from-path" priority="-0.5">
|
<xsl:template match="*" mode="generate-id-from-path" priority="-0.5">
|
||||||
<xsl:apply-templates select="parent::*" mode="generate-id-from-path"/>
|
<xsl:apply-templates mode="generate-id-from-path" select="parent::*" />
|
||||||
<xsl:text>.</xsl:text>
|
<xsl:text>.</xsl:text>
|
||||||
<xsl:value-of select="concat('.',name(),'-',1+count(preceding-sibling::*[name()=name(current())]),'-')" />
|
<xsl:value-of select="concat('.',name(),'-',1+count(preceding-sibling::*[name()=name(current())]),'-')" />
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<!--MODE: GENERATE-ID-2 -->
|
<!--MODE: GENERATE-ID-2 -->
|
||||||
<xsl:template match="/" mode="generate-id-2">U</xsl:template>
|
<xsl:template match="/" mode="generate-id-2">U</xsl:template>
|
||||||
<xsl:template match="*" mode="generate-id-2" priority="2">
|
<xsl:template match="*" mode="generate-id-2" priority="2">
|
||||||
<xsl:text>U</xsl:text>
|
<xsl:text>U</xsl:text>
|
||||||
<xsl:number level="multiple" count="*"/>
|
<xsl:number count="*" level="multiple" />
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
<xsl:template match="node()" mode="generate-id-2">
|
<xsl:template match="node()" mode="generate-id-2">
|
||||||
<xsl:text>U.</xsl:text>
|
<xsl:text>U.</xsl:text>
|
||||||
<xsl:number level="multiple" count="*"/>
|
<xsl:number count="*" level="multiple" />
|
||||||
<xsl:text>n</xsl:text>
|
<xsl:text>n</xsl:text>
|
||||||
<xsl:number count="node()" />
|
<xsl:number count="node()" />
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
<xsl:template match="@*" mode="generate-id-2">
|
<xsl:template match="@*" mode="generate-id-2">
|
||||||
<xsl:text>U.</xsl:text>
|
<xsl:text>U.</xsl:text>
|
||||||
<xsl:number level="multiple" count="*"/>
|
<xsl:number count="*" level="multiple" />
|
||||||
<xsl:text>_</xsl:text>
|
<xsl:text>_</xsl:text>
|
||||||
<xsl:value-of select="string-length(local-name(.))" />
|
<xsl:value-of select="string-length(local-name(.))" />
|
||||||
<xsl:text>_</xsl:text>
|
<xsl:text>_</xsl:text>
|
||||||
<xsl:value-of select="translate(name(),':','.')" />
|
<xsl:value-of select="translate(name(),':','.')" />
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
<!--Strip characters-->
|
<!--Strip characters--> <xsl:template match="text()" priority="-1" />
|
||||||
<xsl:template match="text()" priority="-1"/>
|
|
||||||
<!--SCHEMA SETUP-->
|
<!--SCHEMA SETUP-->
|
||||||
<xsl:template match="/">
|
<xsl:template match="/">
|
||||||
<svrl:schematron-output xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:schematron-output schemaVersion="" title="Schematron Version 1.6.0 - XRechnung 2.1.1 compatible - CII">
|
||||||
title="Schematron Version 1.6.0 - XRechnung 2.1.1 compatible - CII"
|
|
||||||
schemaVersion="">
|
|
||||||
<xsl:attribute name="phase">xrechnung-model</xsl:attribute>
|
<xsl:attribute name="phase">xrechnung-model</xsl:attribute>
|
||||||
<xsl:comment>
|
<xsl:comment>
|
||||||
<xsl:value-of select="$archiveDirParameter" />
|
<xsl:value-of select="$archiveDirParameter" />
|
||||||
@@ -163,16 +161,11 @@
|
|||||||
<xsl:value-of select="$fileNameParameter" />
|
<xsl:value-of select="$fileNameParameter" />
|
||||||
<xsl:value-of select="$fileDirParameter" />
|
<xsl:value-of select="$fileDirParameter" />
|
||||||
</xsl:comment>
|
</xsl:comment>
|
||||||
<svrl:ns-prefix-in-attribute-values uri="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
|
<svrl:ns-prefix-in-attribute-values prefix="rsm" uri="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" />
|
||||||
prefix="rsm"/>
|
<svrl:ns-prefix-in-attribute-values prefix="ccts" uri="urn:un:unece:uncefact:documentation:standard:CoreComponentsTechnicalSpecification:2" />
|
||||||
<svrl:ns-prefix-in-attribute-values uri="urn:un:unece:uncefact:documentation:standard:CoreComponentsTechnicalSpecification:2"
|
<svrl:ns-prefix-in-attribute-values prefix="udt" uri="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" />
|
||||||
prefix="ccts"/>
|
<svrl:ns-prefix-in-attribute-values prefix="qdt" uri="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" />
|
||||||
<svrl:ns-prefix-in-attribute-values uri="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
<svrl:ns-prefix-in-attribute-values prefix="ram" uri="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" />
|
||||||
prefix="udt"/>
|
|
||||||
<svrl:ns-prefix-in-attribute-values uri="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
|
|
||||||
prefix="qdt"/>
|
|
||||||
<svrl:ns-prefix-in-attribute-values uri="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
|
|
||||||
prefix="ram"/>
|
|
||||||
<svrl:active-pattern>
|
<svrl:active-pattern>
|
||||||
<xsl:attribute name="document">
|
<xsl:attribute name="document">
|
||||||
<xsl:value-of select="document-uri(/)" />
|
<xsl:value-of select="document-uri(/)" />
|
||||||
@@ -181,7 +174,7 @@
|
|||||||
<xsl:attribute name="name">variable-pattern</xsl:attribute>
|
<xsl:attribute name="name">variable-pattern</xsl:attribute>
|
||||||
<xsl:apply-templates />
|
<xsl:apply-templates />
|
||||||
</svrl:active-pattern>
|
</svrl:active-pattern>
|
||||||
<xsl:apply-templates select="/" mode="M7"/>
|
<xsl:apply-templates mode="M7" select="/" />
|
||||||
<svrl:active-pattern>
|
<svrl:active-pattern>
|
||||||
<xsl:attribute name="document">
|
<xsl:attribute name="document">
|
||||||
<xsl:value-of select="document-uri(/)" />
|
<xsl:value-of select="document-uri(/)" />
|
||||||
@@ -190,100 +183,100 @@
|
|||||||
<xsl:attribute name="name">cii-pattern</xsl:attribute>
|
<xsl:attribute name="name">cii-pattern</xsl:attribute>
|
||||||
<xsl:apply-templates />
|
<xsl:apply-templates />
|
||||||
</svrl:active-pattern>
|
</svrl:active-pattern>
|
||||||
<xsl:apply-templates select="/" mode="M8"/>
|
<xsl:apply-templates mode="M8" select="/" />
|
||||||
</svrl:schematron-output>
|
</svrl:schematron-output>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<!--SCHEMATRON PATTERNS-->
|
<!--SCHEMATRON PATTERNS-->
|
||||||
<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl">Schematron Version 1.6.0 - XRechnung 2.1.1 compatible - CII</svrl:text>
|
<svrl:text>Schematron Version 1.6.0 - XRechnung 2.1.1 compatible - CII</svrl:text>
|
||||||
|
|
||||||
<!--PATTERN variable-pattern-->
|
<!--PATTERN variable-pattern-->
|
||||||
<xsl:variable name="XR-MAJOR-MINOR-VERSION" select="'2.1'" />
|
<xsl:variable name="XR-MAJOR-MINOR-VERSION" select="'2.1'" />
|
||||||
<xsl:variable name="XR-CIUS-ID"
|
<xsl:variable name="XR-CIUS-ID" select="concat('urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_', $XR-MAJOR-MINOR-VERSION )" />
|
||||||
select="concat('urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_', $XR-MAJOR-MINOR-VERSION )"/>
|
<xsl:variable name="XR-EXTENSION-ID" select="concat($XR-CIUS-ID, '#conformant#urn:xoev-de:kosit:extension:xrechnung_' ,$XR-MAJOR-MINOR-VERSION )" />
|
||||||
<xsl:variable name="XR-EXTENSION-ID"
|
<xsl:variable name="XR-SKONTO-REGEX" select="'#(SKONTO|VERZUG)#TAGE=([0-9]+#PROZENT=[0-9]+\.[0-9]{2})(#BASISBETRAG=-?[0-9]+\.[0-9]{2})?#$'" />
|
||||||
select="concat($XR-CIUS-ID, '#conformant#urn:xoev-de:kosit:extension:xrechnung_' ,$XR-MAJOR-MINOR-VERSION )"/>
|
<xsl:variable name="BT-81" select="'rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode'" />
|
||||||
<xsl:variable name="XR-SKONTO-REGEX"
|
<xsl:template match="text()" mode="M7" priority="-1" />
|
||||||
select="'#(SKONTO|VERZUG)#TAGE=([0-9]+#PROZENT=[0-9]+\.[0-9]{2})(#BASISBETRAG=-?[0-9]+\.[0-9]{2})?#$'"/>
|
<xsl:template match="@*|node()" mode="M7" priority="-2">
|
||||||
<xsl:variable name="BT-81"
|
<xsl:apply-templates mode="M7" select="*" />
|
||||||
select="'rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode'"/>
|
|
||||||
<xsl:template match="text()" priority="-1" mode="M7"/>
|
|
||||||
<xsl:template match="@*|node()" priority="-2" mode="M7">
|
|
||||||
<xsl:apply-templates select="*" mode="M7"/>
|
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<!--PATTERN cii-pattern-->
|
<!--PATTERN cii-pattern-->
|
||||||
|
|
||||||
|
|
||||||
<!--RULE -->
|
<!--RULE -->
|
||||||
<xsl:template match="/rsm:CrossIndustryInvoice" priority="1010" mode="M8">
|
<xsl:template match="/rsm:CrossIndustryInvoice" mode="M8" priority="1010">
|
||||||
<svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:fired-rule context="/rsm:CrossIndustryInvoice" />
|
||||||
context="/rsm:CrossIndustryInvoice"/>
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans" />
|
<xsl:when test="rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans">
|
||||||
test="rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans">
|
|
||||||
<xsl:attribute name="id">BR-DE-1</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-1</xsl:attribute>
|
||||||
<xsl:attribute name="flag">fatal</xsl:attribute>
|
<xsl:attribute name="flag">fatal</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-1] Eine Rechnung (INVOICE) muss Angaben zu "PAYMENT INSTRUCTIONS" (BG-16) enthalten.</svrl:text>
|
<svrl:text>[BR-DE-1] Eine Rechnung (INVOICE) muss Angaben zu "PAYMENT INSTRUCTIONS" (BG-16) enthalten.</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerReference[boolean(normalize-space(.))]" />
|
<xsl:when test="rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerReference[boolean(normalize-space(.))]" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerReference[boolean(normalize-space(.))]">
|
||||||
test="rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerReference[boolean(normalize-space(.))]">
|
|
||||||
<xsl:attribute name="id">BR-DE-15</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-15</xsl:attribute>
|
||||||
<xsl:attribute name="flag">fatal</xsl:attribute>
|
<xsl:attribute name="flag">fatal</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-15] Das Element "Buyer reference" (BT-10) muss übermittelt werden.</svrl:text>
|
<svrl:text>[BR-DE-15] Das Element "Buyer reference" (BT-10) muss übermittelt werden.</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="not((rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode = 'VAT' and rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = ('S', 'Z', 'E', 'AE', 'K', 'G', 'L', 'M')) or (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax = 'VAT' and rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode = ('S', 'Z', 'E', 'AE', 'K', 'G', 'L', 'M')) or (rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode = 'VAT' and rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = ('S', 'Z', 'E', 'AE', 'K', 'G', 'L', 'M'))) or ((rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID='VA' or @schemeID='VAT' or @schemeID='FC'][boolean(normalize-space(.))], rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty))" />
|
<xsl:when test="not((rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode = 'VAT' and rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = ('S', 'Z', 'E', 'AE', 'K', 'G', 'L', 'M')) or (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax = 'VAT' and rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode = ('S', 'Z', 'E', 'AE', 'K', 'G', 'L', 'M')) or (rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode = 'VAT' and rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = ('S', 'Z', 'E', 'AE', 'K', 'G', 'L', 'M'))) or ((rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID='VA' or @schemeID='VAT' or @schemeID='FC'][boolean(normalize-space(.))], rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty))" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="not((rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode = 'VAT' and rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = ('S', 'Z', 'E', 'AE', 'K', 'G', 'L', 'M')) or (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax = 'VAT' and rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode = ('S', 'Z', 'E', 'AE', 'K', 'G', 'L', 'M')) or (rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode = 'VAT' and rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = ('S', 'Z', 'E', 'AE', 'K', 'G', 'L', 'M'))) or ((rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID='VA' or @schemeID='VAT' or @schemeID='FC'][boolean(normalize-space(.))], rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty))">
|
||||||
test="not((rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode = 'VAT' and rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = ('S', 'Z', 'E', 'AE', 'K', 'G', 'L', 'M')) or (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax = 'VAT' and rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode = ('S', 'Z', 'E', 'AE', 'K', 'G', 'L', 'M')) or (rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode = 'VAT' and rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = ('S', 'Z', 'E', 'AE', 'K', 'G', 'L', 'M'))) or ((rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID='VA' or @schemeID='VAT' or @schemeID='FC'][boolean(normalize-space(.))], rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty))">
|
|
||||||
<xsl:attribute name="id">BR-DE-16</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-16</xsl:attribute>
|
||||||
<xsl:attribute name="flag">fatal</xsl:attribute>
|
<xsl:attribute name="flag">fatal</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-16] In der Rechnung muss mindestens eines der Elemente "Seller VAT identifier" (BT-31), "Seller tax registration identifier" (BT-32) oder "SELLER TAX REPRESENTATIVE PARTY" (BG-11) übermittelt werden.</svrl:text>
|
<svrl:text>[BR-DE-16] In der Rechnung muss mindestens eines der Elemente "Seller VAT identifier" (BT-31), "Seller tax registration identifier" (BT-32) oder "SELLER TAX REPRESENTATIVE PARTY" (BG-11) übermittelt werden.</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="rsm:ExchangedDocument/ram:TypeCode = ('326', '380', '384', '389', '381', '875', '876', '877')" />
|
<xsl:when test="rsm:ExchangedDocument/ram:TypeCode = ('326', '380', '384', '389', '381', '875', '876', '877')" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="rsm:ExchangedDocument/ram:TypeCode = ('326', '380', '384', '389', '381', '875', '876', '877')">
|
||||||
test="rsm:ExchangedDocument/ram:TypeCode = ('326', '380', '384', '389', '381', '875', '876', '877')">
|
|
||||||
<xsl:attribute name="id">BR-DE-17</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-17</xsl:attribute>
|
||||||
<xsl:attribute name="flag">warning</xsl:attribute>
|
<xsl:attribute name="flag">warning</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-17] Mit dem Element "Invoice type code" (BT-3) sollen ausschließlich folgende Codes aus der Codeliste UNTDID 1001 übermittelt werden: 326 (Partial invoice), 380 (Commercial invoice), 384 (Corrected invoice), 389 (Self-billed invoice) und 381 (Credit note),875 (Partial construction invoice), 876 (Partial final construction invoice), 877 (Final construction invoice).</svrl:text>
|
<svrl:text>[BR-DE-17] Mit dem Element "Invoice type code" (BT-3) sollen ausschließlich folgende Codes aus der Codeliste UNTDID 1001 übermittelt werden: 326 (Partial invoice), 380 (Commercial invoice), 384 (Corrected invoice), 389 (Self-billed invoice) und 381 (Credit note),875 (Partial construction invoice), 876 (Partial final construction invoice), 877 (Final construction invoice).</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="every $line in rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description/tokenize(. , '(\r?\n)')[starts-with( normalize-space(.) , '#')] satisfies matches ( normalize-space ($line), $XR-SKONTO-REGEX ) and matches( rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description/text(), '\n\s*$' )"/>
|
<xsl:when test="every $line in rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description/tokenize(. , '(\r?\n)')[starts-with( normalize-space(.) , '#')] satisfies matches ( normalize-space ($line), $XR-SKONTO-REGEX ) and matches( rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description/tokenize(. , '#.+#')[last()], '^\s*\n' )" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="every $line in rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description/tokenize(. , '(\r?\n)')[starts-with( normalize-space(.) , '#')] satisfies matches ( normalize-space ($line), $XR-SKONTO-REGEX ) and matches( rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description/tokenize(. , '#.+#')[last()], '^\s*\n' )">
|
||||||
test="every $line in rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description/tokenize(. , '(\r?\n)')[starts-with( normalize-space(.) , '#')] satisfies matches ( normalize-space ($line), $XR-SKONTO-REGEX ) and matches( rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description/text(), '\n\s*$' )">
|
|
||||||
<xsl:attribute name="id">BR-DE-18</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-18</xsl:attribute>
|
||||||
<xsl:attribute name="flag">fatal</xsl:attribute>
|
<xsl:attribute name="flag">fatal</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-18] Skonto/Verzug Zeilen in <xsl:text />
|
<svrl:text>[BR-DE-18] Skonto/Verzug Zeilen in <xsl:text />
|
||||||
<xsl:value-of select="name(.)" />
|
<xsl:value-of select="name(.)" />
|
||||||
@@ -293,419 +286,400 @@
|
|||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="count(//ram:AdditionalReferencedDocument) = count(//ram:AdditionalReferencedDocument[not(./ram:AttachmentBinaryObject/@filename = preceding-sibling::ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject/@filename)])" />
|
<xsl:when test="count(//ram:AdditionalReferencedDocument) = count(//ram:AdditionalReferencedDocument[not(./ram:AttachmentBinaryObject/@filename = preceding-sibling::ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject/@filename)])" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="count(//ram:AdditionalReferencedDocument) = count(//ram:AdditionalReferencedDocument[not(./ram:AttachmentBinaryObject/@filename = preceding-sibling::ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject/@filename)])">
|
||||||
test="count(//ram:AdditionalReferencedDocument) = count(//ram:AdditionalReferencedDocument[not(./ram:AttachmentBinaryObject/@filename = preceding-sibling::ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject/@filename)])">
|
|
||||||
<xsl:attribute name="id">BR-DE-22</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-22</xsl:attribute>
|
||||||
<xsl:attribute name="flag">fatal</xsl:attribute>
|
<xsl:attribute name="flag">fatal</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-22] Not all filename attributes of the embeddedDocumentBinaryObject elements are unique</svrl:text>
|
<svrl:text>[BR-DE-22] Not all filename attributes of the embeddedDocumentBinaryObject elements are unique</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="not(rsm:ExchangedDocument/ram:TypeCode = 384) or (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument)" />
|
<xsl:when test="not(rsm:ExchangedDocument/ram:TypeCode = 384) or (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument)" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="not(rsm:ExchangedDocument/ram:TypeCode = 384) or (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument)">
|
||||||
test="not(rsm:ExchangedDocument/ram:TypeCode = 384) or (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument)">
|
|
||||||
<xsl:attribute name="id">BR-DE-26</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-26</xsl:attribute>
|
||||||
<xsl:attribute name="flag">warning</xsl:attribute>
|
<xsl:attribute name="flag">warning</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-26] Wenn im Element Invoice type code (BT-3) der Code 384 (Corrected invoice) übergeben wird, soll PRECEDING INVOICE REFERENCE BG-3 mind. einmal vorhanden sein.</svrl:text>
|
<svrl:text>[BR-DE-26] Wenn im Element Invoice type code (BT-3) der Code 384 (Corrected invoice) übergeben wird, soll PRECEDING INVOICE REFERENCE BG-3 mind. einmal vorhanden sein.</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
<xsl:apply-templates select="*" mode="M8"/>
|
<xsl:apply-templates mode="M8" select="*" />
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<!--RULE -->
|
<!--RULE -->
|
||||||
<xsl:template match="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext"
|
<xsl:template match="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext" mode="M8" priority="1009">
|
||||||
priority="1009"
|
<svrl:fired-rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext" />
|
||||||
mode="M8">
|
|
||||||
<svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
|
||||||
context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext"/>
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="ram:GuidelineSpecifiedDocumentContextParameter/ram:ID = $XR-CIUS-ID" />
|
<xsl:when test="ram:GuidelineSpecifiedDocumentContextParameter/ram:ID = $XR-CIUS-ID" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="ram:GuidelineSpecifiedDocumentContextParameter/ram:ID = $XR-CIUS-ID">
|
||||||
test="ram:GuidelineSpecifiedDocumentContextParameter/ram:ID = $XR-CIUS-ID">
|
|
||||||
<xsl:attribute name="id">BR-DE-21</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-21</xsl:attribute>
|
||||||
<xsl:attribute name="flag">warning</xsl:attribute>
|
<xsl:attribute name="flag">warning</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-21] Das Element "Specification identifier" (BT-24) soll syntaktisch der Kennung des Standards XRechnung entsprechen.</svrl:text>
|
<svrl:text>[BR-DE-21] Das Element "Specification identifier" (BT-24) soll syntaktisch der Kennung des Standards XRechnung entsprechen.</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
<xsl:apply-templates select="*" mode="M8"/>
|
<xsl:apply-templates mode="M8" select="*" />
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<!--RULE -->
|
<!--RULE -->
|
||||||
<xsl:template match="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty"
|
<xsl:template match="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty" mode="M8" priority="1008">
|
||||||
priority="1008"
|
<svrl:fired-rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty" />
|
||||||
mode="M8">
|
|
||||||
<svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
|
||||||
context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty"/>
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="ram:DefinedTradeContact" />
|
<xsl:when test="ram:DefinedTradeContact" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" test="ram:DefinedTradeContact">
|
<svrl:failed-assert test="ram:DefinedTradeContact">
|
||||||
<xsl:attribute name="id">BR-DE-2</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-2</xsl:attribute>
|
||||||
<xsl:attribute name="flag">fatal</xsl:attribute>
|
<xsl:attribute name="flag">fatal</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-2] Die Gruppe "SELLER CONTACT" (BG-6) muss übermittelt werden.</svrl:text>
|
<svrl:text>[BR-DE-2] Die Gruppe "SELLER CONTACT" (BG-6) muss übermittelt werden.</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
<xsl:apply-templates select="*" mode="M8"/>
|
<xsl:apply-templates mode="M8" select="*" />
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<!--RULE -->
|
<!--RULE -->
|
||||||
<xsl:template match="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress"
|
<xsl:template match="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress" mode="M8" priority="1007">
|
||||||
priority="1007"
|
<svrl:fired-rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress" />
|
||||||
mode="M8">
|
|
||||||
<svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
|
||||||
context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress"/>
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="ram:CityName[boolean(normalize-space(.))]" />
|
<xsl:when test="ram:CityName[boolean(normalize-space(.))]" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="ram:CityName[boolean(normalize-space(.))]">
|
||||||
test="ram:CityName[boolean(normalize-space(.))]">
|
|
||||||
<xsl:attribute name="id">BR-DE-3</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-3</xsl:attribute>
|
||||||
<xsl:attribute name="flag">fatal</xsl:attribute>
|
<xsl:attribute name="flag">fatal</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-3] Das Element "Seller city" (BT-37) muss übermittelt werden.</svrl:text>
|
<svrl:text>[BR-DE-3] Das Element "Seller city" (BT-37) muss übermittelt werden.</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="ram:PostcodeCode[boolean(normalize-space(.))]" />
|
<xsl:when test="ram:PostcodeCode[boolean(normalize-space(.))]" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="ram:PostcodeCode[boolean(normalize-space(.))]">
|
||||||
test="ram:PostcodeCode[boolean(normalize-space(.))]">
|
|
||||||
<xsl:attribute name="id">BR-DE-4</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-4</xsl:attribute>
|
||||||
<xsl:attribute name="flag">fatal</xsl:attribute>
|
<xsl:attribute name="flag">fatal</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-4] Das Element "Seller post code" (BT-38) muss übermittelt werden.</svrl:text>
|
<svrl:text>[BR-DE-4] Das Element "Seller post code" (BT-38) muss übermittelt werden.</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
<xsl:apply-templates select="*" mode="M8"/>
|
<xsl:apply-templates mode="M8" select="*" />
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<!--RULE -->
|
<!--RULE -->
|
||||||
<xsl:template match="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact"
|
<xsl:template match="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact" mode="M8" priority="1006">
|
||||||
priority="1006"
|
<svrl:fired-rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact" />
|
||||||
mode="M8">
|
|
||||||
<svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
|
||||||
context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact"/>
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="(ram:PersonName,ram:DepartmentName)[boolean(normalize-space(.))]" />
|
<xsl:when test="(ram:PersonName,ram:DepartmentName)[boolean(normalize-space(.))]" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="(ram:PersonName,ram:DepartmentName)[boolean(normalize-space(.))]">
|
||||||
test="(ram:PersonName,ram:DepartmentName)[boolean(normalize-space(.))]">
|
|
||||||
<xsl:attribute name="id">BR-DE-5</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-5</xsl:attribute>
|
||||||
<xsl:attribute name="flag">fatal</xsl:attribute>
|
<xsl:attribute name="flag">fatal</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-5] Das Element "Seller contact point" (BT-41) muss übermittelt werden.</svrl:text>
|
<svrl:text>[BR-DE-5] Das Element "Seller contact point" (BT-41) muss übermittelt werden.</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="ram:TelephoneUniversalCommunication/ram:CompleteNumber[boolean(normalize-space(.))]" />
|
<xsl:when test="ram:TelephoneUniversalCommunication/ram:CompleteNumber[boolean(normalize-space(.))]" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="ram:TelephoneUniversalCommunication/ram:CompleteNumber[boolean(normalize-space(.))]">
|
||||||
test="ram:TelephoneUniversalCommunication/ram:CompleteNumber[boolean(normalize-space(.))]">
|
|
||||||
<xsl:attribute name="id">BR-DE-6</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-6</xsl:attribute>
|
||||||
<xsl:attribute name="flag">fatal</xsl:attribute>
|
<xsl:attribute name="flag">fatal</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-6] Das Element "Seller contact telephone number" (BT-42) muss übermittelt werden.</svrl:text>
|
<svrl:text>[BR-DE-6] Das Element "Seller contact telephone number" (BT-42) muss übermittelt werden.</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="ram:EmailURIUniversalCommunication/ram:URIID[boolean(normalize-space(.))]" />
|
<xsl:when test="ram:EmailURIUniversalCommunication/ram:URIID[boolean(normalize-space(.))]" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="ram:EmailURIUniversalCommunication/ram:URIID[boolean(normalize-space(.))]">
|
||||||
test="ram:EmailURIUniversalCommunication/ram:URIID[boolean(normalize-space(.))]">
|
|
||||||
<xsl:attribute name="id">BR-DE-7</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-7</xsl:attribute>
|
||||||
<xsl:attribute name="flag">fatal</xsl:attribute>
|
<xsl:attribute name="flag">fatal</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-7] Das Element "Seller contact email address" (BT-43) muss übermittelt werden.</svrl:text>
|
<svrl:text>[BR-DE-7] Das Element "Seller contact email address" (BT-43) muss übermittelt werden.</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
<xsl:apply-templates select="*" mode="M8"/>
|
<xsl:apply-templates mode="M8" select="*" />
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<!--RULE -->
|
<!--RULE -->
|
||||||
<xsl:template match="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress"
|
<xsl:template match="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress" mode="M8" priority="1005">
|
||||||
priority="1005"
|
<svrl:fired-rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress" />
|
||||||
mode="M8">
|
|
||||||
<svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
|
||||||
context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress"/>
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="ram:CityName[boolean(normalize-space(.))]" />
|
<xsl:when test="ram:CityName[boolean(normalize-space(.))]" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="ram:CityName[boolean(normalize-space(.))]">
|
||||||
test="ram:CityName[boolean(normalize-space(.))]">
|
|
||||||
<xsl:attribute name="id">BR-DE-8</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-8</xsl:attribute>
|
||||||
<xsl:attribute name="flag">fatal</xsl:attribute>
|
<xsl:attribute name="flag">fatal</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-8] Das Element "Buyer city" (BT-52) muss übermittelt werden.</svrl:text>
|
<svrl:text>[BR-DE-8] Das Element "Buyer city" (BT-52) muss übermittelt werden.</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="ram:PostcodeCode[boolean(normalize-space(.))]" />
|
<xsl:when test="ram:PostcodeCode[boolean(normalize-space(.))]" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="ram:PostcodeCode[boolean(normalize-space(.))]">
|
||||||
test="ram:PostcodeCode[boolean(normalize-space(.))]">
|
|
||||||
<xsl:attribute name="id">BR-DE-9</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-9</xsl:attribute>
|
||||||
<xsl:attribute name="flag">fatal</xsl:attribute>
|
<xsl:attribute name="flag">fatal</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-9] Das Element "Buyer post code" (BT-53) muss übermittelt werden.</svrl:text>
|
<svrl:text>[BR-DE-9] Das Element "Buyer post code" (BT-53) muss übermittelt werden.</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
<xsl:apply-templates select="*" mode="M8"/>
|
<xsl:apply-templates mode="M8" select="*" />
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<!--RULE -->
|
<!--RULE -->
|
||||||
<xsl:template match="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress"
|
<xsl:template match="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress" mode="M8" priority="1004">
|
||||||
priority="1004"
|
<svrl:fired-rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress" />
|
||||||
mode="M8">
|
|
||||||
<svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
|
||||||
context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress"/>
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="ram:CityName[boolean(normalize-space(.))]" />
|
<xsl:when test="ram:CityName[boolean(normalize-space(.))]" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="ram:CityName[boolean(normalize-space(.))]">
|
||||||
test="ram:CityName[boolean(normalize-space(.))]">
|
|
||||||
<xsl:attribute name="id">BR-DE-10</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-10</xsl:attribute>
|
||||||
<xsl:attribute name="flag">fatal</xsl:attribute>
|
<xsl:attribute name="flag">fatal</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-10] Das Element "Deliver to city" (BT-77) muss übermittelt werden, wenn die Gruppe "DELIVER TO ADDRESS" (BG-15) übermittelt wird.</svrl:text>
|
<svrl:text>[BR-DE-10] Das Element "Deliver to city" (BT-77) muss übermittelt werden, wenn die Gruppe "DELIVER TO ADDRESS" (BG-15) übermittelt wird.</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="ram:PostcodeCode[boolean(normalize-space(.))]" />
|
<xsl:when test="ram:PostcodeCode[boolean(normalize-space(.))]" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="ram:PostcodeCode[boolean(normalize-space(.))]">
|
||||||
test="ram:PostcodeCode[boolean(normalize-space(.))]">
|
|
||||||
<xsl:attribute name="id">BR-DE-11</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-11</xsl:attribute>
|
||||||
<xsl:attribute name="flag">fatal</xsl:attribute>
|
<xsl:attribute name="flag">fatal</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-11] Das Element "Deliver to post code" (BT-78) muss übermittelt werden, wenn die Gruppe "DELIVER TO ADDRESS" (BG-15) übermittelt wird.</svrl:text>
|
<svrl:text>[BR-DE-11] Das Element "Deliver to post code" (BT-78) muss übermittelt werden, wenn die Gruppe "DELIVER TO ADDRESS" (BG-15) übermittelt wird.</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
<xsl:apply-templates select="*" mode="M8"/>
|
<xsl:apply-templates mode="M8" select="*" />
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<!--RULE -->
|
<!--RULE -->
|
||||||
<xsl:template match="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans[ram:TypeCode = (30,58)]"
|
<xsl:template match="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans[ram:TypeCode = (30,58)]" mode="M8" priority="1003">
|
||||||
priority="1003"
|
<svrl:fired-rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans[ram:TypeCode = (30,58)]" />
|
||||||
mode="M8">
|
|
||||||
<svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
|
||||||
context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans[ram:TypeCode = (30,58)]"/>
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="not(ram:TypeCode = '58') or matches(normalize-space(replace(ram:PayeePartyCreditorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')), '^[A-Z]{2}[0-9]{2}[a-zA-Z0-9]{0,30}$') and xs:integer(string-join(for $cp in string-to-codepoints(concat(substring(normalize-space(replace(ram:PayeePartyCreditorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),5),upper-case(substring(normalize-space(replace(ram:PayeePartyCreditorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),1,2)),substring(normalize-space(replace(ram:PayeePartyCreditorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),3,2))) return (if($cp > 64) then $cp - 55 else $cp - 48),'')) mod 97 = 1"/>
|
<xsl:when test="not(ram:TypeCode = '58') or matches(normalize-space(replace(ram:PayeePartyCreditorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')), '^[A-Z]{2}[0-9]{2}[a-zA-Z0-9]{0,30}$') and xs:integer(string-join(for $cp in string-to-codepoints(concat(substring(normalize-space(replace(ram:PayeePartyCreditorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),5),upper-case(substring(normalize-space(replace(ram:PayeePartyCreditorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),1,2)),substring(normalize-space(replace(ram:PayeePartyCreditorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),3,2))) return (if($cp > 64) then $cp - 55 else $cp - 48),'')) mod 97 = 1" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="not(ram:TypeCode = '58') or matches(normalize-space(replace(ram:PayeePartyCreditorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')), '^[A-Z]{2}[0-9]{2}[a-zA-Z0-9]{0,30}$') and xs:integer(string-join(for $cp in string-to-codepoints(concat(substring(normalize-space(replace(ram:PayeePartyCreditorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),5),upper-case(substring(normalize-space(replace(ram:PayeePartyCreditorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),1,2)),substring(normalize-space(replace(ram:PayeePartyCreditorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),3,2))) return (if($cp > 64) then $cp - 55 else $cp - 48),'')) mod 97 = 1">
|
||||||
test="not(ram:TypeCode = '58') or matches(normalize-space(replace(ram:PayeePartyCreditorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')), '^[A-Z]{2}[0-9]{2}[a-zA-Z0-9]{0,30}$') and xs:integer(string-join(for $cp in string-to-codepoints(concat(substring(normalize-space(replace(ram:PayeePartyCreditorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),5),upper-case(substring(normalize-space(replace(ram:PayeePartyCreditorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),1,2)),substring(normalize-space(replace(ram:PayeePartyCreditorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),3,2))) return (if($cp > 64) then $cp - 55 else $cp - 48),'')) mod 97 = 1">
|
|
||||||
<xsl:attribute name="id">BR-DE-19</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-19</xsl:attribute>
|
||||||
<xsl:attribute name="flag">warning</xsl:attribute>
|
<xsl:attribute name="flag">warning</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-19] "Payment account identifier" (BT-84) soll eine korrekte IBAN enthalten, wenn in "Payment means type code" (BT-81) mit dem Code 58 SEPA als Zahlungsmittel gefordert wird.</svrl:text>
|
<svrl:text>[BR-DE-19] "Payment account identifier" (BT-84) soll eine korrekte IBAN enthalten, wenn in "Payment means type code" (BT-81) mit dem Code 58 SEPA als Zahlungsmittel gefordert wird.</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="ram:PayeePartyCreditorFinancialAccount" />
|
<xsl:when test="ram:PayeePartyCreditorFinancialAccount" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="ram:PayeePartyCreditorFinancialAccount">
|
||||||
test="ram:PayeePartyCreditorFinancialAccount">
|
|
||||||
<xsl:attribute name="id">BR-DE-23-a</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-23-a</xsl:attribute>
|
||||||
<xsl:attribute name="flag">fatal</xsl:attribute>
|
<xsl:attribute name="flag">fatal</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-23-a] Wenn BT-81 "Payment means type code" einen Schlüssel für Überweisungen enthält (30, 58), muss BG-17 "CREDIT TRANSFER" übermittelt werden.</svrl:text>
|
<svrl:text>[BR-DE-23-a] Wenn BT-81 "Payment means type code" einen Schlüssel für Überweisungen enthält (30, 58), muss BG-17 "CREDIT TRANSFER" übermittelt werden.</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="not(ram:ApplicableTradeSettlementFinancialCard) and not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID or ram:PayerPartyDebtorFinancialAccount/ram:IBANID)" />
|
<xsl:when test="not(ram:ApplicableTradeSettlementFinancialCard) and not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID or ram:PayerPartyDebtorFinancialAccount/ram:IBANID)" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="not(ram:ApplicableTradeSettlementFinancialCard) and not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID or ram:PayerPartyDebtorFinancialAccount/ram:IBANID)">
|
||||||
test="not(ram:ApplicableTradeSettlementFinancialCard) and not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID or ram:PayerPartyDebtorFinancialAccount/ram:IBANID)">
|
|
||||||
<xsl:attribute name="id">BR-DE-23-b</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-23-b</xsl:attribute>
|
||||||
<xsl:attribute name="flag">fatal</xsl:attribute>
|
<xsl:attribute name="flag">fatal</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-23-b] Wenn BT-81 "Payment means type code" einen Schlüssel für Überweisungen enthält (30, 58), dürfen BG-18 und BG-19 nicht übermittelt werden.</svrl:text>
|
<svrl:text>[BR-DE-23-b] Wenn BT-81 "Payment means type code" einen Schlüssel für Überweisungen enthält (30, 58), dürfen BG-18 und BG-19 nicht übermittelt werden.</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
<xsl:apply-templates select="*" mode="M8"/>
|
<xsl:apply-templates mode="M8" select="*" />
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<!--RULE -->
|
<!--RULE -->
|
||||||
<xsl:template match="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans[ram:TypeCode = (48,54,55)]"
|
<xsl:template match="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans[ram:TypeCode = (48,54,55)]" mode="M8" priority="1002">
|
||||||
priority="1002"
|
<svrl:fired-rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans[ram:TypeCode = (48,54,55)]" />
|
||||||
mode="M8">
|
|
||||||
<svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
|
||||||
context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans[ram:TypeCode = (48,54,55)]"/>
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="ram:ApplicableTradeSettlementFinancialCard" />
|
<xsl:when test="ram:ApplicableTradeSettlementFinancialCard" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="ram:ApplicableTradeSettlementFinancialCard">
|
||||||
test="ram:ApplicableTradeSettlementFinancialCard">
|
|
||||||
<xsl:attribute name="id">BR-DE-24-a</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-24-a</xsl:attribute>
|
||||||
<xsl:attribute name="flag">fatal</xsl:attribute>
|
<xsl:attribute name="flag">fatal</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-24-a] Wenn BT-81 "Payment means type code" einen Schlüssel für Kartenzahlungen enthält (48, 54, 55), muss genau BG-18 "PAYMENT CARD INFORMATION" übermittelt werden.</svrl:text>
|
<svrl:text>[BR-DE-24-a] Wenn BT-81 "Payment means type code" einen Schlüssel für Kartenzahlungen enthält (48, 54, 55), muss genau BG-18 "PAYMENT CARD INFORMATION" übermittelt werden.</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="not(ram:PayeePartyCreditorFinancialAccount) and not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID or ram:PayerPartyDebtorFinancialAccount/ram:IBANID)" />
|
<xsl:when test="not(ram:PayeePartyCreditorFinancialAccount) and not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID or ram:PayerPartyDebtorFinancialAccount/ram:IBANID)" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="not(ram:PayeePartyCreditorFinancialAccount) and not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID or ram:PayerPartyDebtorFinancialAccount/ram:IBANID)">
|
||||||
test="not(ram:PayeePartyCreditorFinancialAccount) and not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID or ram:PayerPartyDebtorFinancialAccount/ram:IBANID)">
|
|
||||||
<xsl:attribute name="id">BR-DE-24-b</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-24-b</xsl:attribute>
|
||||||
<xsl:attribute name="flag">fatal</xsl:attribute>
|
<xsl:attribute name="flag">fatal</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-24-b] Wenn BT-81 "Payment means type code" einen Schlüssel für Kartenzahlungen enthält (48, 54, 55), dürfen BG-17 und BG-19 nicht übermittelt werden.</svrl:text>
|
<svrl:text>[BR-DE-24-b] Wenn BT-81 "Payment means type code" einen Schlüssel für Kartenzahlungen enthält (48, 54, 55), dürfen BG-17 und BG-19 nicht übermittelt werden.</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
<xsl:apply-templates select="*" mode="M8"/>
|
<xsl:apply-templates mode="M8" select="*" />
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<!--RULE -->
|
<!--RULE -->
|
||||||
<xsl:template match="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans[ram:TypeCode = 59]"
|
<xsl:template match="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans[ram:TypeCode = 59]" mode="M8" priority="1001">
|
||||||
priority="1001"
|
<svrl:fired-rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans[ram:TypeCode = 59]" />
|
||||||
mode="M8">
|
|
||||||
<svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
|
||||||
context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans[ram:TypeCode = 59]"/>
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="not(ram:TypeCode = '59') or matches(normalize-space(replace(ram:PayerPartyDebtorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')), '^[A-Z]{2}[0-9]{2}[a-zA-Z0-9]{0,30}$') and xs:integer(string-join(for $cp in string-to-codepoints(concat(substring(normalize-space(replace(ram:PayerPartyDebtorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),5),upper-case(substring(normalize-space(replace(ram:PayerPartyDebtorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),1,2)),substring(normalize-space(replace(ram:PayerPartyDebtorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),3,2))) return (if($cp > 64) then $cp - 55 else $cp - 48),'')) mod 97 = 1"/>
|
<xsl:when test="not(ram:TypeCode = '59') or matches(normalize-space(replace(ram:PayerPartyDebtorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')), '^[A-Z]{2}[0-9]{2}[a-zA-Z0-9]{0,30}$') and xs:integer(string-join(for $cp in string-to-codepoints(concat(substring(normalize-space(replace(ram:PayerPartyDebtorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),5),upper-case(substring(normalize-space(replace(ram:PayerPartyDebtorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),1,2)),substring(normalize-space(replace(ram:PayerPartyDebtorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),3,2))) return (if($cp > 64) then $cp - 55 else $cp - 48),'')) mod 97 = 1" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="not(ram:TypeCode = '59') or matches(normalize-space(replace(ram:PayerPartyDebtorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')), '^[A-Z]{2}[0-9]{2}[a-zA-Z0-9]{0,30}$') and xs:integer(string-join(for $cp in string-to-codepoints(concat(substring(normalize-space(replace(ram:PayerPartyDebtorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),5),upper-case(substring(normalize-space(replace(ram:PayerPartyDebtorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),1,2)),substring(normalize-space(replace(ram:PayerPartyDebtorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),3,2))) return (if($cp > 64) then $cp - 55 else $cp - 48),'')) mod 97 = 1">
|
||||||
test="not(ram:TypeCode = '59') or matches(normalize-space(replace(ram:PayerPartyDebtorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')), '^[A-Z]{2}[0-9]{2}[a-zA-Z0-9]{0,30}$') and xs:integer(string-join(for $cp in string-to-codepoints(concat(substring(normalize-space(replace(ram:PayerPartyDebtorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),5),upper-case(substring(normalize-space(replace(ram:PayerPartyDebtorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),1,2)),substring(normalize-space(replace(ram:PayerPartyDebtorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),3,2))) return (if($cp > 64) then $cp - 55 else $cp - 48),'')) mod 97 = 1">
|
|
||||||
<xsl:attribute name="id">BR-DE-20</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-20</xsl:attribute>
|
||||||
<xsl:attribute name="flag">warning</xsl:attribute>
|
<xsl:attribute name="flag">warning</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-20] "Debited account identifier" (BT-91) soll eine korrekte IBAN enthalten, wenn in "Payment means type code" (BT-81) mit dem Code 59 SEPA als Zahlungsmittel gefordert wird.</svrl:text>
|
<svrl:text>[BR-DE-20] "Debited account identifier" (BT-91) soll eine korrekte IBAN enthalten, wenn in "Payment means type code" (BT-81) mit dem Code 59 SEPA als Zahlungsmittel gefordert wird.</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID or ram:PayerPartyDebtorFinancialAccount/ram:IBANID" />
|
<xsl:when test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID or ram:PayerPartyDebtorFinancialAccount/ram:IBANID" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID or ram:PayerPartyDebtorFinancialAccount/ram:IBANID">
|
||||||
test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID or ram:PayerPartyDebtorFinancialAccount/ram:IBANID">
|
|
||||||
<xsl:attribute name="id">BR-DE-25-a</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-25-a</xsl:attribute>
|
||||||
<xsl:attribute name="flag">fatal</xsl:attribute>
|
<xsl:attribute name="flag">fatal</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-25-a] Wenn BT-81 "Payment means type code" einen Schlüssel für Lastschriften enthält (59), muss genau BG-19 "DIRECT DEBIT" übermittelt werden.</svrl:text>
|
<svrl:text>[BR-DE-25-a] Wenn BT-81 "Payment means type code" einen Schlüssel für Lastschriften enthält (59), muss genau BG-19 "DIRECT DEBIT" übermittelt werden.</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="not(ram:PayeePartyCreditorFinancialAccount) and not(ram:ApplicableTradeSettlementFinancialCard)" />
|
<xsl:when test="not(ram:PayeePartyCreditorFinancialAccount) and not(ram:ApplicableTradeSettlementFinancialCard)" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="not(ram:PayeePartyCreditorFinancialAccount) and not(ram:ApplicableTradeSettlementFinancialCard)">
|
||||||
test="not(ram:PayeePartyCreditorFinancialAccount) and not(ram:ApplicableTradeSettlementFinancialCard)">
|
|
||||||
<xsl:attribute name="id">BR-DE-25-b</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-25-b</xsl:attribute>
|
||||||
<xsl:attribute name="flag">fatal</xsl:attribute>
|
<xsl:attribute name="flag">fatal</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-25-b] Wenn BT-81 "Payment means type code" einen Schlüssel für Lastschriften enthält (59), dürfen BG-17 und BG-18 nicht übermittelt werden.</svrl:text>
|
<svrl:text>[BR-DE-25-b] Wenn BT-81 "Payment means type code" einen Schlüssel für Lastschriften enthält (59), dürfen BG-17 und BG-18 nicht übermittelt werden.</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
<xsl:apply-templates select="*" mode="M8"/>
|
<xsl:apply-templates mode="M8" select="*" />
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<!--RULE -->
|
<!--RULE -->
|
||||||
<xsl:template match="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax"
|
<xsl:template match="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax" mode="M8" priority="1000">
|
||||||
priority="1000"
|
<svrl:fired-rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax" />
|
||||||
mode="M8">
|
|
||||||
<svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
|
||||||
context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax"/>
|
|
||||||
<!--ASSERT -->
|
<!--ASSERT -->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="ram:RateApplicablePercent[boolean(normalize-space(.))]" />
|
<xsl:when test="ram:RateApplicablePercent[boolean(normalize-space(.))]" />
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
|
<svrl:failed-assert test="ram:RateApplicablePercent[boolean(normalize-space(.))]">
|
||||||
test="ram:RateApplicablePercent[boolean(normalize-space(.))]">
|
|
||||||
<xsl:attribute name="id">BR-DE-14</xsl:attribute>
|
<xsl:attribute name="id">BR-DE-14</xsl:attribute>
|
||||||
<xsl:attribute name="flag">fatal</xsl:attribute>
|
<xsl:attribute name="flag">fatal</xsl:attribute>
|
||||||
<xsl:attribute name="location">
|
<xsl:attribute name="location">
|
||||||
<xsl:apply-templates select="." mode="schematron-select-full-path"/>
|
<xsl:apply-templates mode="schematron-select-full-path" select="." />
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<svrl:text>[BR-DE-14] Das Element "VAT category rate" (BT-119) muss übermittelt werden.</svrl:text>
|
<svrl:text>[BR-DE-14] Das Element "VAT category rate" (BT-119) muss übermittelt werden.</svrl:text>
|
||||||
</svrl:failed-assert>
|
</svrl:failed-assert>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
<xsl:apply-templates select="*" mode="M8"/>
|
<xsl:apply-templates mode="M8" select="*" />
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
<xsl:template match="text()" priority="-1" mode="M8"/>
|
<xsl:template match="text()" mode="M8" priority="-1" />
|
||||||
<xsl:template match="@*|node()" priority="-2" mode="M8">
|
<xsl:template match="@*|node()" mode="M8" priority="-2">
|
||||||
<xsl:apply-templates select="*" mode="M8"/>
|
<xsl:apply-templates mode="M8" select="*" />
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
</xsl:stylesheet>
|
</xsl:stylesheet>
|
||||||
|
|||||||
Reference in New Issue
Block a user