STRUCTURE.xsl 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  3. xmlns:xs="http://www.w3.org/2001/XMLSchema"
  4. exclude-result-prefixes="xs"
  5. xmlns:default_db__x3A__NEURO_MIND_INPUT_TEXT="https://biuro.biall-net.pl/wfs/default_db/table/NEURO_MIND_INPUT_TEXT.xsd"
  6. xmlns:default_db__x3A__STRUCTURE="https://biuro.biall-net.pl/wfs/default_db/table/STRUCTURE.xsd"
  7. version="2.0">
  8. <xsl:import href="../../default_db.ant-object.basedir.xsl"/>
  9. <xsl:key name="default_db__x3A__STRUCTURE:generate-id" match="*" use="@default_db__x3A__STRUCTURE:generate-id"/>
  10. <xsl:output indent="yes"/>
  11. <xsl:strip-space elements="*"/>
  12. <xsl:param name="default_db__x3A__STRUCTURE:basedir" select="concat($default_db.ant-object.basedir,'/default_db.STRUCTURE/STRUCTURE')"/>
  13. <xsl:include href="STRUCTURE.init.xsl"/>
  14. <xsl:include href="STRUCTURE.serialize.xsl"/>
  15. <xsl:include href="STRUCTURE.import.xsl"/>
  16. <xsl:include href="STRUCTURE.export.xsl"/><!-- serialize -->
  17. <xsl:include href="STRUCTURE.dependency.xsl"/>
  18. <xsl:include href="STRUCTURE.dependency.context.xsl"/>
  19. <xsl:include href="STRUCTURE.dependency.resolution.xsl"/>
  20. <xsl:include href="STRUCTURE.dependency.subject.xsl"/>
  21. <xsl:include href="STRUCTURE.dependency.analys.xsl"/>
  22. <xsl:include href="STRUCTURE.dependency.context.relation.xsl"/>
  23. <xsl:include href="STRUCTURE.dependency.subject.assert.xsl"/>
  24. <!-- domyslne templates do przetwarzania -->
  25. <xsl:function name="default_db__x3A__STRUCTURE:prefix.clean">
  26. <xsl:param name="prefix_or_not"/>
  27. <xsl:choose>
  28. <xsl:when test="substring-before($prefix_or_not,':')">
  29. <xsl:value-of select="substring-after($prefix_or_not,':')"/>
  30. </xsl:when>
  31. <xsl:otherwise>
  32. <xsl:value-of select="$prefix_or_not"/>
  33. </xsl:otherwise>
  34. </xsl:choose>
  35. </xsl:function>
  36. <xsl:function name="default_db__x3A__STRUCTURE:prefix.get">
  37. <xsl:param name="prefix_or_not"/>
  38. <xsl:choose>
  39. <xsl:when test="substring-before($prefix_or_not,':')">
  40. <xsl:value-of select="substring-before($prefix_or_not,':')"/>
  41. </xsl:when>
  42. <xsl:otherwise>
  43. <xsl:message terminate="yes">#47 not have prefix <xsl:value-of select="$prefix_or_not"/></xsl:message>
  44. </xsl:otherwise>
  45. </xsl:choose>
  46. </xsl:function>
  47. <xsl:function name="default_db__x3A__STRUCTURE:namespace.get">
  48. <xsl:param name="context"/>
  49. <xsl:choose>
  50. <xsl:when test="$context/ancestor-or-self::xs:schema[1]/@targetNamespace">
  51. <xsl:variable name="targetNamespace" select="$context/ancestor-or-self::xs:schema[1]/@targetNamespace"/>
  52. <xsl:value-of select="$targetNamespace"/>
  53. </xsl:when>
  54. <xsl:otherwise>
  55. <xsl:message terminate="yes">#67-E problem with $context/ancestor-or-self::xs:schema[@targetNamespace][1]/namespace::*[.=$targetNamespace]/name()</xsl:message>
  56. </xsl:otherwise>
  57. </xsl:choose>
  58. </xsl:function>
  59. <xsl:function name="default_db__x3A__STRUCTURE:namespaceprefix.get">
  60. <xsl:param name="context"/>
  61. <xsl:variable name="namespaceprefix" select="$context/ancestor-or-self::xs:schema[@targetNamespace][1]/namespace::*[.=default_db__x3A__STRUCTURE:namespace.get($context)]/name()"/>
  62. <xsl:choose>
  63. <xsl:when test="string-length($namespaceprefix) &gt;0">
  64. <xsl:value-of select="$namespaceprefix"/>
  65. </xsl:when>
  66. <xsl:otherwise>
  67. <xsl:message terminate="yes">#67-E problem with $context/ancestor-or-self::xs:schema[@targetNamespace][1]/namespace::*[.=$targetNamespace]/name()</xsl:message>
  68. </xsl:otherwise>
  69. </xsl:choose>
  70. </xsl:function>
  71. <xsl:function name="default_db__x3A__STRUCTURE:namespaceprefix.name.element">
  72. <xsl:param name="context"/>
  73. <xsl:param name="name"/> <!-- @name -->
  74. <xsl:value-of select="concat(default_db__x3A__STRUCTURE:namespaceprefix.get($context),':',$name)"/>
  75. </xsl:function>
  76. <xsl:function name="default_db__x3A__STRUCTURE:loop.path.init">
  77. <xsl:param name="default_db__x3A__STRUCTURE:loop.path"/>
  78. <xsl:param name="default_db__x3A__STRUCTURE:ref"/>
  79. <xsl:param name="default_db__x3A__STRUCTURE:name"/>
  80. <xsl:variable name="loop.path.init.test">
  81. <loop.path.init.test>
  82. <xsl:copy-of select="$default_db__x3A__STRUCTURE:loop.path"/>
  83. </loop.path.init.test>
  84. </xsl:variable>
  85. <xsl:choose>
  86. <xsl:when test="$loop.path.init.test//loop.path">
  87. <xsl:message terminate="yes">#99 INIT ALREADY INITLAIZED <xsl:value-of select="count($default_db__x3A__STRUCTURE:loop.path//loop.path)"/></xsl:message>
  88. </xsl:when>
  89. <xsl:otherwise>
  90. <xsl:variable name="loop.path.init">
  91. <loop.path.init>
  92. <xsl:message terminate="no">#35 not(default_db__x3A__STRUCTURE:loop.path/*) - appending</xsl:message>
  93. <loop.path >
  94. <xsl:if test="string-length($default_db__x3A__STRUCTURE:ref)&gt;0"><xsl:attribute name="ref" select="$default_db__x3A__STRUCTURE:ref"/></xsl:if>
  95. <xsl:if test="string-length($default_db__x3A__STRUCTURE:name)&gt;0"><xsl:attribute name="name" select="$default_db__x3A__STRUCTURE:name"/></xsl:if>
  96. INIT</loop.path>
  97. </loop.path.init>
  98. </xsl:variable>
  99. <xsl:copy-of select="$loop.path.init" copy-namespaces="yes"/>
  100. </xsl:otherwise>
  101. </xsl:choose>
  102. </xsl:function>
  103. <xsl:function name="default_db__x3A__STRUCTURE:loop.path.init">
  104. <xsl:param name="default_db__x3A__STRUCTURE:ref"/>
  105. <xsl:param name="default_db__x3A__STRUCTURE:name"/>
  106. <xsl:param name="default_db__x3A__STRUCTURE:document-uri.filename"/> <!-- nazwa pliku schematu -->
  107. <xsl:param name="default_db__x3A__STRUCTURE:namespaceprefix.get" /> <!-- nazwa prefixu -->
  108. <xsl:variable name="loop.path.init">
  109. <loop.path.init>
  110. <xsl:message terminate="no">#35 not(default_db__x3A__STRUCTURE:loop.path/*) - appending</xsl:message>
  111. <loop.path ref="{$default_db__x3A__STRUCTURE:ref}" name="{$default_db__x3A__STRUCTURE:name}">
  112. <xsl:if test="string-length($default_db__x3A__STRUCTURE:document-uri.filename)&gt;0"><xsl:attribute name="filename" select="$default_db__x3A__STRUCTURE:document-uri.filename"/></xsl:if>
  113. <xsl:if test="string-length($default_db__x3A__STRUCTURE:namespaceprefix.get)&gt;0"><xsl:attribute name="prefix" select="$default_db__x3A__STRUCTURE:namespaceprefix.get"/></xsl:if>
  114. INIT</loop.path>
  115. </loop.path.init>
  116. </xsl:variable>
  117. <xsl:copy-of select="$loop.path.init" copy-namespaces="yes"/>
  118. </xsl:function>
  119. <xsl:function name="default_db__x3A__STRUCTURE:loop.path.init">
  120. <xsl:param name="default_db__x3A__STRUCTURE:ref"/>
  121. <xsl:param name="default_db__x3A__STRUCTURE:name"/>
  122. <xsl:copy-of select="default_db__x3A__STRUCTURE:loop.path.init($default_db__x3A__STRUCTURE:ref,$default_db__x3A__STRUCTURE:name,'')"/>
  123. </xsl:function>
  124. <xsl:function name="default_db__x3A__STRUCTURE:loop.path.test">
  125. <xsl:param name="default_db__x3A__STRUCTURE:loop.path"/>
  126. <xsl:param name="default_db__x3A__STRUCTURE:ref"/>
  127. <xsl:param name="default_db__x3A__STRUCTURE:name"/>
  128. <xsl:choose>
  129. <xsl:when test="default_db__x3A__STRUCTURE:loop.path.test($default_db__x3A__STRUCTURE:loop.path)"></xsl:when>
  130. <xsl:when test="$default_db__x3A__STRUCTURE:loop.path//loop.path[@ref=$default_db__x3A__STRUCTURE:ref and @name=$default_db__x3A__STRUCTURE:name]">
  131. <xsl:message>#35-BC[[ LOOP FOUND]] $ref[<xsl:value-of select="$default_db__x3A__STRUCTURE:ref"/>] and $nam[<xsl:value-of select="$default_db__x3A__STRUCTURE:name"/>]</xsl:message>
  132. </xsl:when>
  133. <xsl:otherwise><xsl:message>#104 [TEST][LOOP][PATH] LOOP DETECTED </xsl:message></xsl:otherwise>
  134. </xsl:choose>
  135. </xsl:function>
  136. <xsl:function name="default_db__x3A__STRUCTURE:loop.path.test">
  137. <xsl:param name="default_db__x3A__STRUCTURE:loop.path"/>
  138. <xsl:variable name="default_db__x3A__STRUCTURE:loop.path.test">
  139. <default_db__x3A__STRUCTURE:loop.path.test>
  140. <xsl:copy-of select="$default_db__x3A__STRUCTURE:loop.path"/>
  141. </default_db__x3A__STRUCTURE:loop.path.test>
  142. </xsl:variable>
  143. <xsl:choose>
  144. <xsl:when test="count($default_db__x3A__STRUCTURE:loop.path.test//loop.path) &gt; 0">
  145. <xsl:value-of select="count($default_db__x3A__STRUCTURE:loop.path//loop.path)"/>
  146. </xsl:when>
  147. <xsl:otherwise><xsl:message>#104 [TEST][LOOP][PATH] LOOP DETECTED </xsl:message></xsl:otherwise>
  148. </xsl:choose>
  149. </xsl:function>
  150. <xsl:function name="default_db__x3A__STRUCTURE:loop.path.test.append">
  151. <xsl:param name="default_db__x3A__STRUCTURE:loop.path"/>
  152. <xsl:param name="default_db__x3A__STRUCTURE:ref"/>
  153. <xsl:param name="default_db__x3A__STRUCTURE:name"/>
  154. <xsl:param name="default_db__x3A__STRUCTURE:document-uri.filename"/> <!-- nazwa pliku schematu -->
  155. <xsl:param name="default_db__x3A__STRUCTURE:namespaceprefix.get" /> <!-- nazwa prefixu -->
  156. <xsl:choose>
  157. <xsl:when test="not($default_db__x3A__STRUCTURE:loop.path)">
  158. <!-- TODO --><xsl:message terminate="no">#134 LOOP PATH ERROR NOT INITIALIZED by default_db__x3A__STRUCTURE:loop.path.init( </xsl:message>
  159. <xsl:copy-of select="default_db__x3A__STRUCTURE:loop.path.init($default_db__x3A__STRUCTURE:ref,$default_db__x3A__STRUCTURE:name)"/>
  160. </xsl:when>
  161. <xsl:when test="count($default_db__x3A__STRUCTURE:loop.path//loop.path) = 0">
  162. <!-- TODO --> <xsl:message terminate="no">#134 LOOP PATH ERROR NOT INITIALIZED by default_db__x3A__STRUCTURE:loop.path.init( </xsl:message>
  163. <xsl:copy-of select="default_db__x3A__STRUCTURE:loop.path.init($default_db__x3A__STRUCTURE:ref,$default_db__x3A__STRUCTURE:name)"/>
  164. </xsl:when>
  165. <xsl:when test="$default_db__x3A__STRUCTURE:loop.path//loop.path[@ref=$default_db__x3A__STRUCTURE:ref
  166. and ( @filename=$default_db__x3A__STRUCTURE:document-uri.filename or $default_db__x3A__STRUCTURE:document-uri.filename='' )
  167. and ( @prefix=$default_db__x3A__STRUCTURE:namespaceprefix.get or $default_db__x3A__STRUCTURE:namespaceprefix.get='' )
  168. and @name=$default_db__x3A__STRUCTURE:name]">
  169. <xsl:message>#35-B[[ LOOP FOUND]] $ref[<xsl:value-of select="$default_db__x3A__STRUCTURE:ref"/>] and $nam[<xsl:value-of select="$default_db__x3A__STRUCTURE:name"/>]</xsl:message>
  170. </xsl:when>
  171. <xsl:when test="count($default_db__x3A__STRUCTURE:loop.path//loop.path) &gt; 0">
  172. <xsl:message>#35-D LOOP count <xsl:value-of select="count($default_db__x3A__STRUCTURE:loop.path//loop.path)"/>; appending [<xsl:value-of select="$default_db__x3A__STRUCTURE:ref"/>]</xsl:message>
  173. <loop.path.init >
  174. <xsl:copy-of select="$default_db__x3A__STRUCTURE:loop.path//loop.path"/>
  175. <loop.path ref="{$default_db__x3A__STRUCTURE:ref}" name="{$default_db__x3A__STRUCTURE:name}">
  176. <xsl:if test="string-length($default_db__x3A__STRUCTURE:document-uri.filename)"><xsl:attribute name="filename" select="$default_db__x3A__STRUCTURE:document-uri.filename"/></xsl:if>
  177. <xsl:if test="string-length($default_db__x3A__STRUCTURE:namespaceprefix.get)"><xsl:attribute name="prefix" select="$default_db__x3A__STRUCTURE:namespaceprefix.get"/></xsl:if>
  178. </loop.path>
  179. </loop.path.init>
  180. </xsl:when>
  181. <xsl:otherwise>
  182. <xsl:message terminate="yes">#35-E OTHERWISE ?? count[<xsl:value-of select="count($default_db__x3A__STRUCTURE:loop.path//loop.path)"/>] </xsl:message>
  183. </xsl:otherwise>
  184. </xsl:choose>
  185. </xsl:function>
  186. <xsl:function name="default_db__x3A__STRUCTURE:loop.path.test.append">
  187. <xsl:param name="default_db__x3A__STRUCTURE:loop.path"/>
  188. <xsl:param name="default_db__x3A__STRUCTURE:ref"/>
  189. <xsl:param name="default_db__x3A__STRUCTURE:name"/>
  190. <xsl:copy-of select="default_db__x3A__STRUCTURE:loop.path.test.append($default_db__x3A__STRUCTURE:loop.path,$default_db__x3A__STRUCTURE:ref,$default_db__x3A__STRUCTURE:name,'','')"/>
  191. </xsl:function>
  192. <xsl:function name="default_db__x3A__STRUCTURE:document-uri.filename">
  193. <xsl:param name="document-uri"/>
  194. <xsl:choose>
  195. <xsl:when test="string-length(substring-after($document-uri,'/'))&gt;1">
  196. <xsl:value-of select="default_db__x3A__STRUCTURE:document-uri.filename(substring-after($document-uri,'/'))"/>
  197. </xsl:when>
  198. <xsl:otherwise>
  199. <xsl:value-of select="$document-uri"/>
  200. </xsl:otherwise>
  201. </xsl:choose>
  202. </xsl:function>
  203. <xsl:template name="default_db__x3A__STRUCTURE:document-uri">
  204. <xsl:attribute name="document-uri" select="document-uri(root())" />
  205. </xsl:template>
  206. <xsl:template name="default_db__x3A__STRUCTURE:generate-id">
  207. <xsl:choose>
  208. <xsl:when test="@default_db__x3A__STRUCTURE:generate-id"/>
  209. <xsl:otherwise><xsl:attribute name="default_db__x3A__STRUCTURE:generate-id" select="generate-id()"/></xsl:otherwise>
  210. </xsl:choose>
  211. </xsl:template>
  212. </xsl:stylesheet>