| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314 |
- <?xml version="1.0" encoding="UTF-8"?>
- <xsl:stylesheet xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
- xmlns:xs="http://www.w3.org/2001/XMLSchema"
- xmlns:p5bws="http://biuro.biall-net.pl/xmlschema_procesy5/WPS_Functions/WPS_Functions.xsd"
- xmlns:system_cache__appinfo="http://biuro.biall-net.pl/xmlschema_procesy5/default_db_xml_cache/appinfo.xsd"
- xmlns:p5xsda="http://biuro.biall-net.pl/xmlschema_procesy5/WPS_Functions/xsd_asserts/p5xsda.xsd"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- exclude-result-prefixes="xs"
- extension-element-prefixes="p5xsda"
- version="2.0">
- <xsl:output indent="yes"/>
- <xsl:strip-space elements="*"/>
- <xsl:param name="basedir"/>
-
- <xsl:param name="p5xsda.sort_elements.xsl" required="yes"/>
- <xsl:param name="p5xsda:schema" required="yes"/>
-
- <!-- To generate xsl with asserts from xsd file like
- detecting only from root xs:elements
- TODO using build_complexType to handle all asserts recursively 2018-05
-
- <xsl:template mode="p5dkp:asserts.xml" match="p5dkp:role">
- <!-/- by <xs:assert test="wymagania_role_time_sum = sum(p5dkp:role/role_time)"
- id="___d15e109238-1"/> -/->
- <!-/- <xs:assert test="role_price_per_hour = number(role_price) div number(role_time)"/> -/->
- <xsl:copy>
- <xsl:copy-of select="@*"/>
- <xsl:apply-templates mode="#current" select="*[ not(*)]"/>
- <role_price_per_hour>
- <xsl:value-of select="number(role_price) div number(role_time)"/>
- </role_price_per_hour>
- <xsl:apply-templates mode="#current" select="*[*]"/>
- </xsl:copy>
- </xsl:template>
- -->
-
- <xsl:template mode="p5xsda:asserts" xpath-default-namespace="http://www.w3.org/2001/XMLSchema" match="schema">
- <xsl:element name="xsl:stylesheet">
- <xsl:copy-of select="namespace::node()"/>
- <xsl:namespace name="p5xsda" select="'http://biuro.biall-net.pl/xmlschema_procesy5/WPS_Functions/xsd_asserts/p5xsda.xsd'"/>
- <xsl:attribute name="exclude-result-prefixes" select="'xs'"/>
- <xsl:attribute name="version" select="'2.0'"/>
- <xsl:element name="xsl:output">
- <xsl:attribute name="indent" select="'yes'"/>
- </xsl:element>
-
- <xsl:element name="xsl:strip-space">
- <xsl:attribute name="elements" select="'*'"/>
- </xsl:element>
-
- <xsl:element name="xsl:include">
- <xsl:attribute name="href" select="$p5xsda.sort_elements.xsl"/>
- </xsl:element>
-
- <xsl:apply-templates mode="#current"/>
-
-
- <xsl:element name="xsl:template">
- <xsl:attribute name="mode" select="'p5xsda:assert-apply-genrated'"/>
- <xsl:attribute name="match" select="'*'"/>
- <xsl:attribute name="xpath-default-namespace" select="@targetNamespace"/>
- <xsl:element name="xsl:param">
- <xsl:attribute name="name" select="'p5xsda:after'"/>
- </xsl:element>
- <xsl:element name="xsl:param">
- <xsl:attribute name="name" select="'p5xsda:select'"/>
- </xsl:element>
- <xsl:element name="xsl:param">
- <xsl:attribute name="name" select="'p5xsda:element'"/>
- </xsl:element>
-
- <xsl:element name="xsl:copy">
- <xsl:attribute name="copy-namespaces" select="'no'"/>
- <xsl:element name="xsl:copy-of">
- <xsl:attribute name="select" select="'@*'"/>
- </xsl:element>
- <xsl:element name="xsl:apply-templates">
- <xsl:attribute name="mode" select="'#current'"/>
- <xsl:attribute name="xpath-default-namespace" select="@targetNamespace"/>
- </xsl:element>
- </xsl:element>
-
-
- <xsl:element name="xsl:choose">
- <xsl:element name="xsl:when">
- <xsl:attribute name="test">name() = $p5xsda:after</xsl:attribute>
- <xsl:element name="xsl:element">
- <xsl:attribute name="name">{$p5xsda:element}</xsl:attribute>
- <xsl:element name="xsl:value-of">
- <xsl:attribute name="select">$p5xsda:select</xsl:attribute>
- </xsl:element>
- </xsl:element>
- </xsl:element>
- </xsl:element>
- </xsl:element>
-
- <xsl:element name="xsl:template">
- <xsl:attribute name="mode" select="'p5xsda:assert-apply-genrated'"/>
- <xsl:attribute name="match" select="'comment()|text()'"/>
- <xsl:element name="xsl:copy-of">
- <xsl:attribute name="select" select="'.'"/>
- </xsl:element>
- </xsl:element>
-
-
- </xsl:element>
-
- </xsl:template>
-
-
- <xsl:template xpath-default-namespace="http://www.w3.org/2001/XMLSchema" match="element[ descendant::assert]" mode="p5xsda:asserts">
- <xsl:element name="xsl:template">
- <xsl:attribute name="mode" select="'p5xsda:assert-apply-genrated'"/>
- <xsl:attribute name="match" select="@name"/>
- <xsl:attribute name="xpath-default-namespace" select="../@targetNamespace"/>
- <xsl:element name="xsl:copy">
- <xsl:attribute name="copy-namespaces" select="'no'"/>
- <xsl:element name="xsl:copy-of">
- <xsl:attribute name="select" select="'@*'"/>
- </xsl:element>
-
- <!--<xsl:element name="xsl:choose">
- <xsl:element name="xsl:when">
- <xsl:attribute name="test" />
- </xsl:element>
- </xsl:element>-->
- <!--<xsl:element name="xsl:apply-templates">
- <xsl:attribute name="mode" select="'#current'"/>
- <xsl:attribute name="select" select="'*[ not(*)]'"/>
- </xsl:element>-->
- <!--<xsl:element name="xsl:variable">
- <xsl:attribute name="name" select="'sequence'"/>
- <xsl:copy-of select="sequence" xpath-default-namespace="http://www.w3.org/2001/XMLSchema"/>
- </xsl:element>-->
-
- <xsl:element name="xsl:variable">
- <xsl:attribute name="name" select="'xsi:schemaLocation'"/>
-
- <xsl:attribute name="name" select="'dita'"/>
- <xsl:element name="xsl:element">
- <xsl:attribute name="name" select="@name"/>
- <xsl:element name="xsl:copy-of">
- <xsl:attribute name="select" select="'@*'"/>
- </xsl:element>
- <xsl:element name="xsl:attribute"><xsl:attribute name="name" select="'xsi:schemaLocation'"/><xsl:value-of select="root()/@targetNamespace" xpath-default-namespace="http://www.w3.org/2001/XMLSchema"/><xsl:text> </xsl:text><xsl:value-of select="$p5xsda:schema"/></xsl:element>
-
- <xsl:element name="xsl:for-each">
- <xsl:attribute name="select" select="'*[ not(*)]'"/>
- <!--<xsl:element name="xsl:choose">
- <xsl:element name="xsl:when">
- <xsl:attribute name="test" select="'1=2'"/>
- </xsl:element>
- <xsl:apply-templates mode="p5xsda:asserts.child"/>
- <xsl:element name="xsl:otherwise">-->
- <xsl:element name="xsl:copy-of">
- <xsl:attribute name="select" select="'.'"/>
- <xsl:attribute name="copy-namespaces" select="'no'"/>
- </xsl:element>
- <!--</xsl:element>
- </xsl:element>-->
- </xsl:element>
- <xsl:apply-templates mode="p5xsda:asserts.child"/>
- </xsl:element>
- </xsl:element>
-
- <!--<xsl:element name="xsl:call-template">
- <xsl:attribute name="name" select="'p5xsda:sort_elements'"/>
- <xsl:element name="xsl:with-param">
- <xsl:attribute name="name" select="'p5xsda:elements.local'"/>
- <xsl:attribute name="select" select="'$dita'"/>
- </xsl:element>
- <xsl:element name="xsl:with-param">
- <xsl:attribute name="name" select="'p5xsda:xs.sequence'"/>
- <xsl:attribute name="select">doc('<xsl:value-of select="$p5xsda:schema"/>')/schema/element[@name='<xsl:value-of select="@name"/>']</xsl:attribute>
- <xsl:attribute name="xpath-default-namespace" select="'http://www.w3.org/2001/XMLSchema'"/>
- </xsl:element>
- </xsl:element>-->
- <xsl:element name="xsl:apply-templates">
- <xsl:attribute name="mode" select="'p5xsda:sort2'"/>
- <xsl:attribute name="select" select="'$dita'"/>
- <!--<xsl:element name="xsl:with-param">
- <xsl:attribute name="name" select="'p5xsda:xs.sequence'"/>
- <xsl:attribute name="select">doc('<xsl:value-of select="$p5xsda:schema"/>')/schema/element[@name='<xsl:value-of select="@name"/>']</xsl:attribute>
- <xsl:attribute name="xpath-default-namespace" select="'http://www.w3.org/2001/XMLSchema'"/>
- </xsl:element>-->
- </xsl:element>
-
- <xsl:element name="xsl:apply-templates">
- <xsl:attribute name="mode" select="'#current'"/>
- <xsl:attribute name="select" select="'*[*]'"/>
- <xsl:attribute name="xpath-default-namespace" select="../@targetNamespace"/>
- </xsl:element>
- </xsl:element>
- </xsl:element>
- </xsl:template>
-
- <xsl:template xpath-default-namespace="http://www.w3.org/2001/XMLSchema" mode="p5xsda:asserts.child" match="*">
- <xsl:apply-templates mode="#current"/>
- </xsl:template>
-
- <xsl:template mode="p5xsda:asserts.child" xpath-default-namespace="http://www.w3.org/2001/XMLSchema" match="assert">
- <!--<xsl:apply-templates mode="p5xsda:asserts.child.eval" select="@test"/>-->
- <xsl:variable name="test.tokens">
- <test.tokens>
- <xsl:for-each select="tokenize(@test,'=')">
- <equals>
- <xsl:attribute name="pos" select="position()"/>
- <xsl:value-of select="."/>
- </equals>
- </xsl:for-each>
- </test.tokens>
- </xsl:variable>
- <!--<xsl:copy-of select="$test.tokens"/>-->
- <xsl:variable name="equal.string">
- <xsl:for-each select="$test.tokens//equals[ position() > 1 ]" xpath-default-namespace="">
- <xsl:value-of select="."/><xsl:if test="not(position() = last())"><xsl:text>=</xsl:text></xsl:if>
- </xsl:for-each>
- </xsl:variable>
-
- <xsl:comment>#200 choose style - $equal.string = <xsl:value-of select="$equal.string"/></xsl:comment>
- <xsl:element name="xsl:element">
- <xsl:attribute name="name" select="normalize-space($test.tokens//equals[@pos = 1])" xpath-default-namespace=""/>
- <xsl:element name="xsl:value-of">
- <xsl:attribute name="select" select="$equal.string"/> <!-- normalize-space($test.tokens//equals[@pos = 2]) -->
- <xsl:choose>
- <xsl:when test="@xpathDefaultNamespace='##local'">
- <xsl:attribute name="xpath-default-namespace" select="''"/>
- </xsl:when>
- <xsl:when test="@xpathDefaultNamespace">
- <xsl:attribute name="xpath-default-namespace" select="@xpathDefaultNamespace"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:attribute name="xpath-default-namespace" select="''"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:element>
- </xsl:element>
-
- <!--<xsl:choose>
- <xsl:when test=".//p5xsda:after">
- <xsl:element name="xsl:apply-templates">
- <xsl:attribute name="mode" select="'#current'"/>
- <xsl:attribute name="select" select="'*[ not(*)]'"/>
- <xsl:element name="xsl:with-param">
- <xsl:attribute name="name" select="'p5xsda:after'"/>
- <xsl:attribute name="select"><xsl:text>'</xsl:text><xsl:value-of select=".//p5xsda:after/text()"/><xsl:text>'</xsl:text></xsl:attribute>
- </xsl:element>
- <xsl:element name="xsl:with-param">
- <xsl:attribute name="name" select="'p5xsda:select'"/>
- <xsl:attribute name="select" select="normalize-space($test.tokens//equals[@pos = 2])" xpath-default-namespace=""/>
- <xsl:choose>
- <xsl:when test="@xpathDefaultNamespace='##local'">
- <xsl:attribute name="xpath-default-namespace" select="''"/>
- </xsl:when>
- <xsl:when test="@xpathDefaultNamespace">
- <xsl:attribute name="xpath-default-namespace" select="@xpathDefaultNamespace"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:attribute name="xpath-default-namespace" select="''"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:element>
- <xsl:element name="xsl:with-param">
- <xsl:attribute name="name" select="'p5xsda:element'"/>
- <xsl:attribute name="select"><xsl:text>'</xsl:text><xsl:value-of select="normalize-space($test.tokens//equals[@pos = 1])" xpath-default-namespace=""/><xsl:text>'</xsl:text></xsl:attribute>
- </xsl:element>
- </xsl:element>
-
-
-
-
- </xsl:when>
-
- <!-\-<xsl:otherwise >
- <xsl:element name="xsl:apply-templates">
- <xsl:attribute name="mode" select="'#current'"/>
- <xsl:attribute name="select" select="*[ not(*)]"/>
- </xsl:element>
- <xsl:element name="xsl:element">
- <xsl:attribute name="name" select="normalize-space($test.tokens//equals[@pos = 1])"/>
- <xsl:element name="xsl:value-of">
- <xsl:attribute name="select" select="normalize-space($test.tokens//equals[@pos = 2])"/>
- <xsl:choose>
- <xsl:when test="../@xpathDefaultNamespace='##local'">
- <xsl:attribute name="xpath-default-namespace" select="''"/>
- </xsl:when>
- <xsl:when test="../@xpathDefaultNamespace">
- <xsl:attribute name="xpath-default-namespace" select="../@xpathDefaultNamespace"/>
- </xsl:when>
- </xsl:choose>
- </xsl:element>
- </xsl:element>
- <!-\\-<xsl:element name="{normalize-space($test.tokens//equals[@pos = 1])}">
-
- </xsl:element>-\\->
- </xsl:otherwise>-\->
- </xsl:choose>-->
- </xsl:template>
-
-
- <!--<xsl:template mode="p5xsda:asserts.child.eval" match="@test">
-
- <!-\-<xsl:copy-of select="$test.tokens"/>-\->
-
- </xsl:template>-->
-
-
-
- <xsl:template mode="p5xsda:asserts p5xsda:asserts.child" match="comment()|text()"/>
-
- <xsl:template mode="p5xsda:asserts" match="*"/>
-
- </xsl:stylesheet>
|