STRUCTURE.init.xsl 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  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="STRUCTURE.init.type.xsl"/>
  9. <!-- *ZASADA*201904 w lokalnych schematach rozwijac refy i modele, ale w obcych zostawiac @ref - aby je resolve robic lokalnie, za pierwszym razem lecimy schematy unikalnie, ktore wariantuja sie na bazie importow -->
  10. <xsl:output indent="yes"/>
  11. <xsl:strip-space elements="*"/>
  12. <xsl:include href="STRUCTURE.init.ref.xsl"/>
  13. <xsl:template mode="default_db__x3A__STRUCTURE:init" match="xs:group[descendant-or-self::*[default_db__x3A__STRUCTURE:prefix.get(@ref)=default_db__x3A__STRUCTURE:namespaceprefix.get(root())] or @id]">
  14. <default_db__x3A__STRUCTURE:init__SA_DZIECI>
  15. Taaka
  16. </default_db__x3A__STRUCTURE:init__SA_DZIECI>
  17. </xsl:template>
  18. <xsl:template mode="default_db__x3A__STRUCTURE:init" match="xs:schema"> <!-- default_db__x3A__NEURO_MIND_INPUT_TEXT:init -->
  19. <xsl:param name="default_db__x3A__STRUCTURE:loop.path" select="default_db__x3A__STRUCTURE:loop.path.init(name(),@targetNamespace)" />
  20. <xsl:copy>
  21. <xsl:attribute name="debug">#20 m[default_db__x3A__STRUCTURE:init] [xs:schema]</xsl:attribute>
  22. <xsl:call-template name="default_db__x3A__STRUCTURE:document-uri"/>
  23. <xsl:call-template name="default_db__x3A__STRUCTURE:generate-id"/>
  24. <xsl:copy-of select="$default_db__x3A__STRUCTURE:loop.path"/>
  25. <xsl:apply-templates mode="default_db__x3A__STRUCTURE:init" select="xs:complexType[@name='init']|xs:import|xs:element|xs:group|xs:simpleType" >
  26. <xsl:with-param name="default_db__x3A__STRUCTURE:loop.path" select="$default_db__x3A__STRUCTURE:loop.path"/>
  27. </xsl:apply-templates>
  28. </xsl:copy>
  29. </xsl:template>
  30. <xsl:template mode="default_db__x3A__STRUCTURE:init" match="*[@default_db__x3A__STRUCTURE:generate-id='d24e51']">
  31. <xsl:message terminate="yes">#49 key lkoop[[<xsl:value-of select="@default_db__x3A__STRUCTURE:generate-id"/>]]
  32. KEY[[ <xsl:copy-of select="key('default_db__x3A__STRUCTURE:generate-id',@default_db__x3A__STRUCTURE:generate-id)/@*"/>]]
  33. </xsl:message>
  34. </xsl:template>
  35. <xsl:template mode="default_db__x3A__STRUCTURE:init" match="*">
  36. <xsl:param name="default_db__x3A__STRUCTURE:loop.path"/>
  37. <xsl:copy>
  38. <xsl:apply-templates mode="#current" select="@*"/>
  39. <xsl:attribute name="debug">#34-KKX m[default_db__x3A__STRUCTURE:init][*]</xsl:attribute>
  40. <xsl:call-template name="default_db__x3A__STRUCTURE:generate-id"/>
  41. <xsl:apply-templates mode="#current" >
  42. <xsl:with-param name="default_db__x3A__STRUCTURE:loop.path" select="$default_db__x3A__STRUCTURE:loop.path"/>
  43. </xsl:apply-templates>
  44. </xsl:copy>
  45. </xsl:template>
  46. <xsl:template mode="default_db__x3A__STRUCTURE:init default_db__x3A__STRUCTURE:init.ref" match="xs:annotation[xs:documentation and not(xs:appinfo)]"/>
  47. <xsl:template mode="default_db__x3A__STRUCTURE:init" match="xs:element[@type and @name and parent::xs:schema]" >
  48. <xsl:param name="default_db__x3A__STRUCTURE:loop.path" />
  49. <!--<DEENUG parent="{parent::*/name()}">
  50. <xsl:copy-of select="@*"/>-->
  51. <xsl:apply-imports>
  52. <xsl:with-param name="default_db__x3A__STRUCTURE:loop.path" select="$default_db__x3A__STRUCTURE:loop.path"/>
  53. <xsl:with-param name="default_db__x3A__STRUCTURE:init.ref" select="@type" />
  54. <xsl:with-param name="default_db__x3A__STRUCTURE:init.ref.name" select="name()" />
  55. </xsl:apply-imports>
  56. <!-- <xsl:copy>
  57. <xsl:call-template name="default_db__x3A__STRUCTURE:generate-id"/>
  58. <xsl:apply-templates mode="default_db__x3A__STRUCTURE:init" select="@*"/>
  59. <xsl:apply-templates mode="default_db__x3A__STRUCTURE:init" >
  60. <xsl:with-param name="default_db__x3A__STRUCTURE:loop.path" select="$default_db__x3A__STRUCTURE:loop.path"/>
  61. </xsl:apply-templates>
  62. </xsl:copy>-->
  63. <!--</DEENUG>-->
  64. </xsl:template>
  65. <xsl:template mode="default_db__x3A__STRUCTURE:init.type" match="xs:complexType">
  66. <xsl:param name="default_db__x3A__STRUCTURE:loop.path" />
  67. <xsl:copy>
  68. <xsl:call-template name="default_db__x3A__STRUCTURE:generate-id"/>
  69. <xsl:apply-templates mode="default_db__x3A__STRUCTURE:init" select="@*"/>
  70. <xsl:apply-templates mode="default_db__x3A__STRUCTURE:init" >
  71. <xsl:with-param name="default_db__x3A__STRUCTURE:loop.path" select="$default_db__x3A__STRUCTURE:loop.path"/>
  72. </xsl:apply-templates>
  73. </xsl:copy>
  74. </xsl:template>
  75. <xsl:template mode="default_db__x3A__STRUCTURE:init" match="@*">
  76. <xsl:copy-of select="."/>
  77. </xsl:template>
  78. <!--<xsl:template mode="default_db__x3A__STRUCTURE:init" match="@default_db__x3A__STRUCTURE:generate-id">
  79. <xsl:copy-of select="."/>
  80. </xsl:template>-->
  81. <xsl:function name="default_db__x3A__STRUCTURE:init.element.ref.document-uri">
  82. <xsl:param name="context"/>
  83. <xsl:param name="ref"/>
  84. <xsl:variable name="namespace-uri-for-prefix" select="namespace-uri-for-prefix(default_db__x3A__STRUCTURE:prefix.get($ref),$context)"/>
  85. <xsl:message terminate="no">#45 $namespace-uri-for-prefix <xsl:value-of select="$context/name()"/>
  86. <xsl:value-of select="$namespace-uri-for-prefix"/></xsl:message>
  87. <xsl:choose>
  88. <xsl:when test="count($context/preceding::xs:import[@namespace=$namespace-uri-for-prefix]) &gt;1">
  89. <xsl:message terminate="yes">#50 unsupported multiple import same namespace <xsl:copy-of select="$context/ancestor::xs:schema/xs:import[@namespace=$namespace-uri-for-prefix]" copy-namespaces="no"/></xsl:message>
  90. </xsl:when>
  91. <xsl:when test="count($context/preceding::xs:import[@namespace=$namespace-uri-for-prefix]) = 1">
  92. <xsl:value-of select="$context/preceding::xs:import[@namespace=$namespace-uri-for-prefix]/@schemaLocation"/>
  93. </xsl:when>
  94. <xsl:when test="$context/root()/xs:schema[@targetNamespace=$namespace-uri-for-prefix]">
  95. <xsl:message>#50-B - $context/preceding::xs:schema[@targetNamespace=$namespace-uri-for-prefix] = <xsl:value-of select="$namespace-uri-for-prefix"/>;
  96. count[same tnsp] = [[<xsl:value-of select="$context/count(preceding::xs:schema)"/>]]
  97. PARENT [[ <xsl:value-of select="$context/ancestor::xs:schema/@targetNamespace"/> ]]
  98. </xsl:message>
  99. <xsl:value-of select="''"/>
  100. </xsl:when>
  101. <xsl:otherwise>
  102. <xsl:message terminate="yes">#56 error not found $context/preceding::xs:import[@namespace=$namespace-uri-for-prefix]/@schemaLocation for $namespace-uri-for-prefix[<xsl:value-of select="$namespace-uri-for-prefix"/>]
  103. $context/preceding::xs:schema[@targetNamespace[[ <xsl:value-of select="$context/ancestor-or-self::xs:schema/@targetNamespace"/>]]]
  104. PARENT [[ <xsl:value-of select="$context/parent::*/name()"/> ]]
  105. </xsl:message>
  106. </xsl:otherwise>
  107. </xsl:choose>
  108. </xsl:function>
  109. <!--<xsl:template name="default_db__x3A__STRUCTURE:init.element.ref.document-uri" match="xs:element[@ref]">
  110. <!-\-<xsl:call-template name="default_db__x3A__STRUCTURE:init.element.ref.document-uri"/>-\->
  111. <xsl:apply-templates mode="#current" select="doc(default_db__x3A__STRUCTURE:init.element.ref.document-uri(.,@ref))/xs:schema/xs:complexType[@name='init']|doc(default_db__x3A__STRUCTURE:init.element.ref.document-uri(.,@ref))/xs:schema/xs:element[@ref]"/>
  112. <!-\-<xsl:apply-templates mode="#current" select="doc(default_db__x3A__STRUCTURE:init.element.ref.document-uri(.,@ref))/xs:schema/xs:complexType[@name='init']"/>-\->
  113. </xsl:template>-->
  114. <xsl:template mode="default_db__x3A__STRUCTURE:init" match="xs:group[@ref]">
  115. <xsl:param name="default_db__x3A__STRUCTURE:loop.path" />
  116. <!--<xsl:message terminate="yes">#62 mode="default_db__x3A__STRUCTURE:init" match="xs:group[@ref] <xsl:value-of select="@ref"/>;
  117. </xsl:message>-->
  118. <xsl:choose>
  119. <xsl:when test="string-length(default_db__x3A__STRUCTURE:init.element.ref.document-uri(.,@ref))&gt;150">
  120. <xsl:message terminate="yes">#89 @ref - too long name [<xsl:value-of select="string-length(default_db__x3A__STRUCTURE:init.element.ref.document-uri(.,@ref))"/>]</xsl:message>
  121. </xsl:when>
  122. <xsl:when test="default_db__x3A__STRUCTURE:init.element.ref.document-uri(.,@ref)='' and ancestor::xs:schema/xs:group[@name=substring-after(current()/@ref,':')]">
  123. <xsl:apply-templates mode="#current" select="ancestor::xs:schema/xs:group[@name=substring-after(current()/@ref,':')]">
  124. <xsl:with-param name="default_db__x3A__STRUCTURE:loop.path" select="default_db__x3A__STRUCTURE:loop.path.test.append($default_db__x3A__STRUCTURE:loop.path,@ref,name())"/>
  125. <xsl:with-param name="default_db__x3A__STRUCTURE:init.ref" select="@ref"/>
  126. <xsl:with-param name="default_db__x3A__STRUCTURE:init.ref.name" select="name()"/>
  127. </xsl:apply-templates>
  128. </xsl:when>
  129. <xsl:when test="string-length(default_db__x3A__STRUCTURE:init.element.ref.document-uri(.,@ref))&gt;0">
  130. <xsl:apply-templates mode="default_db__x3A__STRUCTURE:init.ref" select="doc(default_db__x3A__STRUCTURE:init.element.ref.document-uri(.,@ref))">
  131. <xsl:with-param name="default_db__x3A__STRUCTURE:loop.path" select="default_db__x3A__STRUCTURE:loop.path.test.append($default_db__x3A__STRUCTURE:loop.path,@ref,name())"/>
  132. <xsl:with-param name="default_db__x3A__STRUCTURE:init.ref" select="@ref"/>
  133. <xsl:with-param name="default_db__x3A__STRUCTURE:init.ref.name" select="name()"/>
  134. </xsl:apply-templates>
  135. <xsl:apply-templates mode="#current">
  136. <xsl:with-param name="default_db__x3A__STRUCTURE:loop.path" select="default_db__x3A__STRUCTURE:loop.path.test.append($default_db__x3A__STRUCTURE:loop.path,@ref,name())"/>
  137. <xsl:with-param name="default_db__x3A__STRUCTURE:init.ref" select="@ref"/>
  138. <xsl:with-param name="default_db__x3A__STRUCTURE:init.ref.name" select="name()"/>
  139. </xsl:apply-templates>
  140. </xsl:when>
  141. <xsl:otherwise>
  142. <xsl:message terminate="yes">#89 error with @ref[[<xsl:value-of select="@ref"/>]]
  143. ancestor::xs:schema/xs:group[<xsl:copy-of select="ancestor::xs:schema/xs:group/@name" copy-namespaces="no"></xsl:copy-of>]
  144. default_db__x3A__STRUCTURE:init.element.ref.document-uri(.,@ref) = [[<xsl:value-of select="default_db__x3A__STRUCTURE:init.element.ref.document-uri(.,@ref)"/>]]
  145. </xsl:message>
  146. <!--<xsl:comment >#89 error with @ref[[<xsl:value-of select="@ref"/>]]
  147. strlen(url)[[<xsl:value-of select="default_db__x3A__STRUCTURE:init.element.ref.document-uri(.,@ref)=''"/>]]
  148. ::a/sch/@ts [[<xsl:value-of select="ancestor::xs:schema/@targetNamespace"/>]]
  149. ::a/sch/gr/n [[<xsl:value-of select="ancestor::xs:schema/xs:group[@name=substring-after(current()/@ref,':')]/name()"/>]]
  150. ancestor::xs:schema/xs:group[<xsl:copy-of select="ancestor::xs:schema/xs:group/@name" copy-namespaces="no"></xsl:copy-of>]
  151. default_db__x3A__STRUCTURE:init.element.ref.document-uri(.,@ref) = [[<xsl:value-of select="default_db__x3A__STRUCTURE:init.element.ref.document-uri(.,@ref)"/>]]
  152. </xsl:comment>-->
  153. </xsl:otherwise>
  154. </xsl:choose>
  155. </xsl:template>
  156. <xsl:template mode="default_db__x3A__STRUCTURE:init" match="xs:element[@ref]">
  157. <xsl:param name="default_db__x3A__STRUCTURE:loop.path" />
  158. <!--<xsl:apply-templates mode="#current" select="doc('NEURO_MIND_INPUT_SENTENCE.xsd')/xs:schema/xs:complexType[@name='import']"/>-->
  159. <!--<xsl:copy-of select=""/>-->
  160. <!--<xsl:copy-of select="default_db__x3A__STRUCTURE:init.element.ref.document-uri(.,@ref)"></xsl:copy-of>-->
  161. <xsl:choose>
  162. <xsl:when test="string-length(default_db__x3A__STRUCTURE:init.element.ref.document-uri(.,@ref))&gt;150">
  163. <xsl:message terminate="no">#89 -B @ref - too long name [<xsl:value-of select="string-length(default_db__x3A__STRUCTURE:init.element.ref.document-uri(.,@ref))"/>]</xsl:message>
  164. <xsl:comment >#89 -B @ref - too long name [<xsl:value-of select="string-length(default_db__x3A__STRUCTURE:init.element.ref.document-uri(.,@ref))"/>] = [<xsl:value-of select="default_db__x3A__STRUCTURE:init.element.ref.document-uri(.,@ref)"/>]</xsl:comment>
  165. </xsl:when>
  166. <xsl:when test="default_db__x3A__STRUCTURE:init.element.ref.document-uri(.,@ref)='' and ancestor::xs:schema/(xs:complexType[@name=substring-after(current()/@ref,':')]|xs:simpleType[@name=substring-after(current()/@ref,':')])">
  167. <xsl:apply-templates mode="default_db__x3A__STRUCTURE:init.ref" select="doc(default_db__x3A__STRUCTURE:init.element.ref.document-uri(.,@ref))">
  168. <xsl:with-param name="default_db__x3A__STRUCTURE:loop.path" select="default_db__x3A__STRUCTURE:loop.path.test.append($default_db__x3A__STRUCTURE:loop.path,@ref,name())"/>
  169. <xsl:with-param name="default_db__x3A__STRUCTURE:init.ref" select="@ref"/>
  170. <xsl:with-param name="default_db__x3A__STRUCTURE:init.ref.name" select="name()"/>
  171. </xsl:apply-templates>
  172. </xsl:when>
  173. <xsl:when test="string-length(default_db__x3A__STRUCTURE:init.element.ref.document-uri(.,@ref))&gt;0">
  174. <xsl:apply-templates mode="default_db__x3A__STRUCTURE:init.ref" select="doc(default_db__x3A__STRUCTURE:init.element.ref.document-uri(.,@ref))">
  175. <xsl:with-param name="default_db__x3A__STRUCTURE:loop.path" select="default_db__x3A__STRUCTURE:loop.path.test.append($default_db__x3A__STRUCTURE:loop.path,@ref,name())"/>
  176. <xsl:with-param name="default_db__x3A__STRUCTURE:init.ref" select="@ref"/>
  177. <xsl:with-param name="default_db__x3A__STRUCTURE:init.ref.name" select="name()"/>
  178. </xsl:apply-templates>
  179. </xsl:when>
  180. <xsl:otherwise>
  181. <xsl:message terminate="yes">#89-B error with @ref[[<xsl:value-of select="@ref"/>]]
  182. ancestor::xs:schema/xs:group[<xsl:copy-of select="ancestor::xs:schema/(xs:complexType|xs:simpleType)/@name" copy-namespaces="no"></xsl:copy-of>]
  183. default_db__x3A__STRUCTURE:init.element.ref.document-uri(.,@ref) = [[<xsl:value-of select="default_db__x3A__STRUCTURE:init.element.ref.document-uri(.,@ref)"/>]]
  184. </xsl:message>
  185. </xsl:otherwise>
  186. </xsl:choose>
  187. <!-- /xs:schema/xs:complexType[@name='init'] --><!-- default_db__x3A__NEURO_MIND_INPUT_SENTENCE:init -->
  188. </xsl:template>
  189. <xsl:template mode="default_db__x3A__STRUCTURE:init" match="xs:simpleType">
  190. <xsl:param name="default_db__x3A__STRUCTURE:loop.path" />
  191. <xsl:copy>
  192. <xsl:call-template name="default_db__x3A__STRUCTURE:generate-id"/>
  193. <xsl:attribute name="debug">#118 migrate out</xsl:attribute>
  194. <xsl:apply-templates mode="#current" select="@*"/>
  195. <xsl:apply-templates mode="#current">
  196. <xsl:with-param name="default_db__x3A__STRUCTURE:loop.path" select="$default_db__x3A__STRUCTURE:loop.path"/>
  197. </xsl:apply-templates>
  198. </xsl:copy>
  199. </xsl:template>
  200. <xsl:template mode="default_db__x3A__STRUCTURE:init default_db__x3A__STRUCTURE:init.ref" match="text()">
  201. <xsl:copy-of select="."/>
  202. </xsl:template>
  203. <xsl:template mode="default_db__x3A__STRUCTURE:init default_db__x3A__STRUCTURE:init.ref" match="comment()"/>
  204. </xsl:stylesheet>