STRUCTURE.xsl 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  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. <!-- domyslne templates do przetwarzania -->
  23. <xsl:function name="default_db__x3A__STRUCTURE:prefix.clean">
  24. <xsl:param name="prefix_or_not"/>
  25. <xsl:choose>
  26. <xsl:when test="substring-before($prefix_or_not,':')">
  27. <xsl:value-of select="substring-after($prefix_or_not,':')"/>
  28. </xsl:when>
  29. <xsl:otherwise>
  30. <xsl:value-of select="$prefix_or_not"/>
  31. </xsl:otherwise>
  32. </xsl:choose>
  33. </xsl:function>
  34. <xsl:function name="default_db__x3A__STRUCTURE:prefix.get">
  35. <xsl:param name="prefix_or_not"/>
  36. <xsl:choose>
  37. <xsl:when test="substring-before($prefix_or_not,':')">
  38. <xsl:value-of select="substring-before($prefix_or_not,':')"/>
  39. </xsl:when>
  40. <xsl:otherwise>
  41. <xsl:message terminate="yes">#47 not have prefix <xsl:value-of select="$prefix_or_not"/></xsl:message>
  42. </xsl:otherwise>
  43. </xsl:choose>
  44. </xsl:function>
  45. <xsl:function name="default_db__x3A__STRUCTURE:namespace.get">
  46. <xsl:param name="context"/>
  47. <xsl:choose>
  48. <xsl:when test="$context/ancestor-or-self::xs:schema[1]/@targetNamespace">
  49. <xsl:variable name="targetNamespace" select="$context/ancestor-or-self::xs:schema[1]/@targetNamespace"/>
  50. <xsl:value-of select="$targetNamespace"/>
  51. </xsl:when>
  52. <xsl:otherwise>
  53. <xsl:message terminate="yes">#67-E problem with $context/ancestor-or-self::xs:schema[@targetNamespace][1]/namespace::*[.=$targetNamespace]/name()</xsl:message>
  54. </xsl:otherwise>
  55. </xsl:choose>
  56. </xsl:function>
  57. <xsl:function name="default_db__x3A__STRUCTURE:namespaceprefix.get">
  58. <xsl:param name="context"/>
  59. <xsl:variable name="namespaceprefix" select="$context/ancestor-or-self::xs:schema[@targetNamespace][1]/namespace::*[.=default_db__x3A__STRUCTURE:namespace.get($context)]/name()"/>
  60. <xsl:choose>
  61. <xsl:when test="string-length($namespaceprefix) &gt;0">
  62. <xsl:value-of select="$namespaceprefix"/>
  63. </xsl:when>
  64. <xsl:otherwise>
  65. <xsl:message terminate="yes">#67-E problem with $context/ancestor-or-self::xs:schema[@targetNamespace][1]/namespace::*[.=$targetNamespace]/name()</xsl:message>
  66. </xsl:otherwise>
  67. </xsl:choose>
  68. </xsl:function>
  69. <xsl:function name="default_db__x3A__STRUCTURE:namespaceprefix.name.element">
  70. <xsl:param name="context"/>
  71. <xsl:param name="name"/> <!-- @name -->
  72. <xsl:value-of select="concat(default_db__x3A__STRUCTURE:namespaceprefix.get($context),':',$name)"/>
  73. </xsl:function>
  74. <xsl:function name="default_db__x3A__STRUCTURE:loop.path.init">
  75. <xsl:param name="default_db__x3A__STRUCTURE:loop.path"/>
  76. <xsl:param name="default_db__x3A__STRUCTURE:ref"/>
  77. <xsl:param name="default_db__x3A__STRUCTURE:name"/>
  78. <xsl:variable name="loop.path.init.test">
  79. <loop.path.init.test>
  80. <xsl:copy-of select="$default_db__x3A__STRUCTURE:loop.path"/>
  81. </loop.path.init.test>
  82. </xsl:variable>
  83. <xsl:choose>
  84. <xsl:when test="$loop.path.init.test//loop.path">
  85. <xsl:message terminate="yes">#99 INIT ALREADY INITLAIZED <xsl:value-of select="count($default_db__x3A__STRUCTURE:loop.path//loop.path)"/></xsl:message>
  86. </xsl:when>
  87. <xsl:otherwise>
  88. <xsl:variable name="loop.path.init">
  89. <loop.path.init>
  90. <xsl:message terminate="no">#35 not(default_db__x3A__STRUCTURE:loop.path/*) - appending</xsl:message>
  91. <loop.path >
  92. <xsl:if test="string-length($default_db__x3A__STRUCTURE:ref)&gt;0"><xsl:attribute name="ref" select="$default_db__x3A__STRUCTURE:ref"/></xsl:if>
  93. <xsl:if test="string-length($default_db__x3A__STRUCTURE:name)&gt;0"><xsl:attribute name="name" select="$default_db__x3A__STRUCTURE:name"/></xsl:if>
  94. INIT</loop.path>
  95. </loop.path.init>
  96. </xsl:variable>
  97. <xsl:copy-of select="$loop.path.init" copy-namespaces="yes"/>
  98. </xsl:otherwise>
  99. </xsl:choose>
  100. </xsl:function>
  101. <xsl:function name="default_db__x3A__STRUCTURE:loop.path.init">
  102. <xsl:param name="default_db__x3A__STRUCTURE:ref"/>
  103. <xsl:param name="default_db__x3A__STRUCTURE:name"/>
  104. <xsl:param name="default_db__x3A__STRUCTURE:document-uri.filename"/> <!-- nazwa pliku schematu -->
  105. <xsl:param name="default_db__x3A__STRUCTURE:namespaceprefix.get" /> <!-- nazwa prefixu -->
  106. <xsl:variable name="loop.path.init">
  107. <loop.path.init>
  108. <xsl:message terminate="no">#35 not(default_db__x3A__STRUCTURE:loop.path/*) - appending</xsl:message>
  109. <loop.path ref="{$default_db__x3A__STRUCTURE:ref}" name="{$default_db__x3A__STRUCTURE:name}">
  110. <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>
  111. <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>
  112. INIT</loop.path>
  113. </loop.path.init>
  114. </xsl:variable>
  115. <xsl:copy-of select="$loop.path.init" copy-namespaces="yes"/>
  116. </xsl:function>
  117. <xsl:function name="default_db__x3A__STRUCTURE:loop.path.init">
  118. <xsl:param name="default_db__x3A__STRUCTURE:ref"/>
  119. <xsl:param name="default_db__x3A__STRUCTURE:name"/>
  120. <xsl:copy-of select="default_db__x3A__STRUCTURE:loop.path.init($default_db__x3A__STRUCTURE:ref,$default_db__x3A__STRUCTURE:name,'')"/>
  121. </xsl:function>
  122. <xsl:function name="default_db__x3A__STRUCTURE:loop.path.test">
  123. <xsl:param name="default_db__x3A__STRUCTURE:loop.path"/>
  124. <xsl:param name="default_db__x3A__STRUCTURE:ref"/>
  125. <xsl:param name="default_db__x3A__STRUCTURE:name"/>
  126. <xsl:choose>
  127. <xsl:when test="default_db__x3A__STRUCTURE:loop.path.test($default_db__x3A__STRUCTURE:loop.path)"></xsl:when>
  128. <xsl:when test="$default_db__x3A__STRUCTURE:loop.path//loop.path[@ref=$default_db__x3A__STRUCTURE:ref and @name=$default_db__x3A__STRUCTURE:name]">
  129. <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>
  130. </xsl:when>
  131. <xsl:otherwise><xsl:message>#104 [TEST][LOOP][PATH] LOOP DETECTED </xsl:message></xsl:otherwise>
  132. </xsl:choose>
  133. </xsl:function>
  134. <xsl:function name="default_db__x3A__STRUCTURE:loop.path.test">
  135. <xsl:param name="default_db__x3A__STRUCTURE:loop.path"/>
  136. <xsl:variable name="default_db__x3A__STRUCTURE:loop.path.test">
  137. <default_db__x3A__STRUCTURE:loop.path.test>
  138. <xsl:copy-of select="$default_db__x3A__STRUCTURE:loop.path"/>
  139. </default_db__x3A__STRUCTURE:loop.path.test>
  140. </xsl:variable>
  141. <xsl:choose>
  142. <xsl:when test="count($default_db__x3A__STRUCTURE:loop.path.test//loop.path) &gt; 0">
  143. <xsl:value-of select="count($default_db__x3A__STRUCTURE:loop.path//loop.path)"/>
  144. </xsl:when>
  145. <xsl:otherwise><xsl:message>#104 [TEST][LOOP][PATH] LOOP DETECTED </xsl:message></xsl:otherwise>
  146. </xsl:choose>
  147. </xsl:function>
  148. <xsl:function name="default_db__x3A__STRUCTURE:loop.path.test.append">
  149. <xsl:param name="default_db__x3A__STRUCTURE:loop.path"/>
  150. <xsl:param name="default_db__x3A__STRUCTURE:ref"/>
  151. <xsl:param name="default_db__x3A__STRUCTURE:name"/>
  152. <xsl:param name="default_db__x3A__STRUCTURE:document-uri.filename"/> <!-- nazwa pliku schematu -->
  153. <xsl:param name="default_db__x3A__STRUCTURE:namespaceprefix.get" /> <!-- nazwa prefixu -->
  154. <xsl:choose>
  155. <xsl:when test="not($default_db__x3A__STRUCTURE:loop.path)">
  156. <xsl:message terminate="yes">#134 LOOP PATH ERROR NOT INITIALIZED by default_db__x3A__STRUCTURE:loop.path.init( </xsl:message>
  157. <xsl:copy-of select="default_db__x3A__STRUCTURE:loop.path.init($default_db__x3A__STRUCTURE:ref,$default_db__x3A__STRUCTURE:name)"/>
  158. </xsl:when>
  159. <xsl:when test="count($default_db__x3A__STRUCTURE:loop.path//loop.path) = 0">
  160. <xsl:message terminate="yes">#134 LOOP PATH ERROR NOT INITIALIZED by default_db__x3A__STRUCTURE:loop.path.init( </xsl:message>
  161. <xsl:copy-of select="default_db__x3A__STRUCTURE:loop.path.init($default_db__x3A__STRUCTURE:ref,$default_db__x3A__STRUCTURE:name)"/>
  162. </xsl:when>
  163. <xsl:when test="$default_db__x3A__STRUCTURE:loop.path//loop.path[@ref=$default_db__x3A__STRUCTURE:ref
  164. and ( @filename=$default_db__x3A__STRUCTURE:document-uri.filename or $default_db__x3A__STRUCTURE:document-uri.filename='' )
  165. and ( @prefix=$default_db__x3A__STRUCTURE:namespaceprefix.get or $default_db__x3A__STRUCTURE:namespaceprefix.get='' )
  166. and @name=$default_db__x3A__STRUCTURE:name]">
  167. <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>
  168. </xsl:when>
  169. <xsl:when test="count($default_db__x3A__STRUCTURE:loop.path//loop.path) &gt; 0">
  170. <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>
  171. <loop.path.init >
  172. <xsl:copy-of select="$default_db__x3A__STRUCTURE:loop.path//loop.path"/>
  173. <loop.path ref="{$default_db__x3A__STRUCTURE:ref}" name="{$default_db__x3A__STRUCTURE:name}">
  174. <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>
  175. <xsl:if test="string-length($default_db__x3A__STRUCTURE:namespaceprefix.get)"><xsl:attribute name="prefix" select="$default_db__x3A__STRUCTURE:namespaceprefix.get"/></xsl:if>
  176. </loop.path>
  177. </loop.path.init>
  178. </xsl:when>
  179. <xsl:otherwise>
  180. <xsl:message terminate="yes">#35-E OTHERWISE ?? count[<xsl:value-of select="count($default_db__x3A__STRUCTURE:loop.path//loop.path)"/>] </xsl:message>
  181. </xsl:otherwise>
  182. </xsl:choose>
  183. </xsl:function>
  184. <xsl:function name="default_db__x3A__STRUCTURE:loop.path.test.append">
  185. <xsl:param name="default_db__x3A__STRUCTURE:loop.path"/>
  186. <xsl:param name="default_db__x3A__STRUCTURE:ref"/>
  187. <xsl:param name="default_db__x3A__STRUCTURE:name"/>
  188. <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,'','')"/>
  189. </xsl:function>
  190. <xsl:function name="default_db__x3A__STRUCTURE:document-uri.filename">
  191. <xsl:param name="document-uri"/>
  192. <xsl:choose>
  193. <xsl:when test="string-length(substring-after($document-uri,'/'))&gt;1">
  194. <xsl:value-of select="default_db__x3A__STRUCTURE:document-uri.filename(substring-after($document-uri,'/'))"/>
  195. </xsl:when>
  196. <xsl:otherwise>
  197. <xsl:value-of select="$document-uri"/>
  198. </xsl:otherwise>
  199. </xsl:choose>
  200. </xsl:function>
  201. <xsl:template name="default_db__x3A__STRUCTURE:document-uri">
  202. <xsl:attribute name="document-uri" select="document-uri(root())" />
  203. </xsl:template>
  204. <xsl:template name="default_db__x3A__STRUCTURE:generate-id">
  205. <xsl:choose>
  206. <xsl:when test="@default_db__x3A__STRUCTURE:generate-id"/>
  207. <xsl:otherwise><xsl:attribute name="default_db__x3A__STRUCTURE:generate-id" select="generate-id()"/></xsl:otherwise>
  208. </xsl:choose>
  209. </xsl:template>
  210. </xsl:stylesheet>