p5dkp.ditafiles.signature.fix.xsl 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  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. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xmlns:p5dkp="http://biuro.biall-net.pl/xmlschema_procesy5/WPS_Functions/dita_kosztorys_projektowy/p5dkp.xsd"
  6. exclude-result-prefixes="xs xsi p5dkp"
  7. version="2.0">
  8. <xsl:output indent="yes"/>
  9. <xsl:strip-space elements="*"/>
  10. <xsl:param name="basedir"/>
  11. <xsl:param name="p5dkp.ditafiles.signature.fix.xsl" required="yes"/>
  12. <!-- CONCEPT
  13. naprawa plikow dita po sygnaturze np
  14. wartosci href klucza
  15. nazwa klucza (stara)
  16. cel href (stary)
  17. (lub bez warunku celku starego)
  18. cel href (nowy)
  19. analogicznie
  20. zmiana nazwy klucza z nazwy A na nazwe B
  21. warunki opcjonalne co wskazywał klucz
  22. w jakiej był relacji w pliku dita
  23. optymalnie jest wygnerowac xsla i nim pojechac
  24. -->
  25. <xsl:include href="p5dkp.ditafiles.func.isditafile.xsl"/>
  26. <xsl:template mode="p5dkp:ditafiles.signature.fix.match.xsl" match="p5dkp.ditafiles.signature.fix.match.xml" xpath-default-namespace="http://biuro.biall-net.pl/xmlschema_procesy5/WPS_Functions/dita_kosztorys_projektowy/dita_kosztorys_projektowy.xsd">
  27. <!-- generowanie tamplate -->
  28. <xsl:element name="xsl:stylesheet">
  29. <xsl:namespace name="xsl" select="'http://www.w3.org/1999/XSL/Transform'"/>
  30. <xsl:namespace name="xs" select="'http://www.w3.org/2001/XMLSchema'"/>
  31. <xsl:namespace name="p5dkp" select="'http://biuro.biall-net.pl/xmlschema_procesy5/WPS_Functions/dita_kosztorys_projektowy/p5dkp.xsd'"/>
  32. <xsl:attribute name="exclude-result-prefixes">xs</xsl:attribute>
  33. <xsl:attribute name="version">2.0</xsl:attribute>
  34. <xsl:element name="xsl:output">
  35. <xsl:attribute name="indent">yes</xsl:attribute>
  36. </xsl:element>
  37. <xsl:element name="xsl:strip-space">
  38. <xsl:attribute name="elements">*</xsl:attribute>
  39. </xsl:element>
  40. <xsl:element name="xsl:include">
  41. <xsl:attribute name="href" select="$p5dkp.ditafiles.signature.fix.xsl"/>
  42. </xsl:element>
  43. <!--<xsl:element name="xsl:template">
  44. <xsl:attribute name="mode">p5dkp:ditafiles.signature.fix.generated-template.found</xsl:attribute>
  45. <xsl:attribute name="match">*[not(parent::*)]</xsl:attribute>
  46. <p5dkp:ditafiles.signature.fix.generated-template.found>
  47. <xsl:element name="xsl:apply-templates">
  48. <xsl:attribute name="mode">#current</xsl:attribute>
  49. </xsl:element>
  50. </p5dkp:ditafiles.signature.fix.generated-template.found>
  51. </xsl:element>-->
  52. <xsl:element name="xsl:template">
  53. <xsl:attribute name="mode">p5dkp:ditafiles.signature.fix.generated-template.found</xsl:attribute>
  54. <xsl:attribute name="match">*</xsl:attribute>
  55. <xsl:element name="xsl:apply-templates">
  56. <xsl:attribute name="mode">#current</xsl:attribute>
  57. </xsl:element>
  58. </xsl:element>
  59. <xsl:element name="xsl:template">
  60. <xsl:attribute name="mode">p5dkp:ditafiles.signature.fix.generated-template.found</xsl:attribute>
  61. <xsl:attribute name="match">comment()|text()</xsl:attribute>
  62. <xsl:attribute name="priority">1</xsl:attribute>
  63. </xsl:element>
  64. <xsl:apply-templates mode="p5dkp:ditafiles.signature.fix.match" />
  65. </xsl:element>
  66. </xsl:template>
  67. <xsl:template mode="p5dkp:ditafiles.signature.fix.match.match" match="*" >
  68. <xsl:variable name="attrs">
  69. <attrs>
  70. <!--<xsl:choose>
  71. <xsl:when test="name()='p5dkp.ditafiles.signature.fix.match.descendant.3.name'">
  72. <attr ancestor="{parent::*/@p5dkp.ditafiles.signature.fix.match.element.name}"
  73. position="2"
  74. />
  75. </xsl:when>
  76. </xsl:choose>-->
  77. <xsl:variable name="current" select="."/>
  78. <xsl:choose>
  79. <xsl:when test="string-length(@p5dkp.ditafiles.signature.fix.match.element.value) &gt; 0">
  80. <attr text="{@p5dkp.ditafiles.signature.fix.match.element.value}"/>
  81. </xsl:when>
  82. </xsl:choose>
  83. <xsl:for-each select="1 to count(@*)">
  84. <xsl:choose>
  85. <xsl:when test="$current/@*[ local-name() = concat('p5dkp.ditafiles.signature.fix.match.element.attribute.',current(),'.name')]">
  86. <attr name="{$current/@*[ local-name() = concat('p5dkp.ditafiles.signature.fix.match.element.attribute.',current(),'.name')]}">
  87. <xsl:choose>
  88. <xsl:when test="$current/@*[ local-name() = concat('p5dkp.ditafiles.signature.fix.match.element.attribute.',current(),'.matches')] and $current/@*[ local-name() = concat('p5dkp.ditafiles.signature.fix.match.element.attribute.',current(),'.value')]">
  89. <xsl:attribute name="matches" select="$current/@*[ local-name() = concat('p5dkp.ditafiles.signature.fix.match.element.attribute.',current(),'.matches')]"/>
  90. <xsl:attribute name="value" select="$current/@*[ local-name() = concat('p5dkp.ditafiles.signature.fix.match.element.attribute.',current(),'.value')]"/>
  91. </xsl:when>
  92. <xsl:when test="string-length($current/@*[ local-name() = concat('p5dkp.ditafiles.signature.fix.match.element.attribute.',current(),'.matches')]/text()) &gt; 0">
  93. <xsl:attribute name="matches" select="$current/@*[ local-name() = concat('p5dkp.ditafiles.signature.fix.match.element.attribute.',current(),'.matches')]"/>
  94. </xsl:when>
  95. <xsl:when test="$current/@*[ local-name() = concat('p5dkp.ditafiles.signature.fix.match.element.attribute.',current(),'.value')]">
  96. <xsl:attribute name="value" select="$current/@*[ local-name() = concat('p5dkp.ditafiles.signature.fix.match.element.attribute.',current(),'.value')]"/>
  97. </xsl:when>
  98. </xsl:choose>
  99. </attr>
  100. </xsl:when>
  101. <xsl:otherwise>
  102. <not pos="{position()}"> </not>
  103. </xsl:otherwise>
  104. </xsl:choose>
  105. </xsl:for-each>
  106. </attrs>
  107. </xsl:variable>
  108. <xsl:attribute name="match">
  109. <xsl:value-of select="@p5dkp.ditafiles.signature.fix.match.element.name"/>
  110. <xsl:choose>
  111. <xsl:when test="$attrs//attr">
  112. <xsl:text>[ </xsl:text>
  113. <xsl:for-each select="$attrs//attr">
  114. <xsl:apply-templates mode="p5dkp:ditafiles.signature.fix.match.match" select="."/>
  115. <xsl:if test="not(position() = last())">
  116. <xsl:text> and </xsl:text>
  117. </xsl:if>
  118. </xsl:for-each>
  119. <xsl:text> ]</xsl:text>
  120. </xsl:when>
  121. </xsl:choose>
  122. </xsl:attribute>
  123. <!--<DEBUG>
  124. <xsl:copy-of select="$attrs"/>
  125. </DEBUG>-->
  126. </xsl:template>
  127. <xsl:template mode="p5dkp:ditafiles.signature.fix.match" match="p5dkp.ditafiles.signature.fix.match.element.name" xpath-default-namespace="http://biuro.biall-net.pl/xmlschema_procesy5/WPS_Functions/dita_kosztorys_projektowy/dita_kosztorys_projektowy.xsd">
  128. <xsl:element name="xsl:template">
  129. <xsl:attribute name="mode">p5dkp:ditafiles.signature.fix.generated-template.found</xsl:attribute>
  130. <xsl:attribute name="priority">5</xsl:attribute>
  131. <!--<xsl:attribute name="match" select="text()"/>-->
  132. <xsl:apply-templates mode="p5dkp:ditafiles.signature.fix.match.match" select="." xpath-default-namespace="http://biuro.biall-net.pl/xmlschema_procesy5/WPS_Functions/dita_kosztorys_projektowy/dita_kosztorys_projektowy.xsd"/>
  133. <xsl:element name="xsl:copy">
  134. <xsl:attribute name="copy-namespaces">no</xsl:attribute>
  135. <xsl:attribute name="p5dkp:{name()}" select="@p5dkp.ditafiles.signature.fix.match.element.name"/>
  136. <xsl:attribute name="p5dkp:ditafiles.signature.fix.name" select="name()"/>
  137. <xsl:element name="xsl:message">
  138. <xsl:text>#143 matched for signatures</xsl:text>
  139. </xsl:element>
  140. <xsl:element name="xsl:apply-templates">
  141. <xsl:attribute name="mode">#current</xsl:attribute>
  142. <xsl:element name="xsl:with-param">
  143. <xsl:attribute name="name">p5dkp:ditafiles.signature.fix.match</xsl:attribute>
  144. <xsl:value-of select="@p5dkp.ditafiles.signature.fix.match.element.name"/>
  145. </xsl:element>
  146. </xsl:element>
  147. </xsl:element>
  148. </xsl:element>
  149. <xsl:apply-templates mode="#current"/>
  150. </xsl:template>
  151. <xsl:template mode="p5dkp:ditafiles.signature.fix.match" match="p5dkp.ditafiles.signature.fix.match.descendant.3.name" xpath-default-namespace="http://biuro.biall-net.pl/xmlschema_procesy5/WPS_Functions/dita_kosztorys_projektowy/dita_kosztorys_projektowy.xsd">
  152. <xsl:element name="xsl:template">
  153. <xsl:attribute name="mode">p5dkp:ditafiles.signature.fix.generated-template.found</xsl:attribute>
  154. <!--<xsl:attribute name="match" select="text()"/>-->
  155. <xsl:apply-templates mode="p5dkp:ditafiles.signature.fix.match.match" select="."/>
  156. <xsl:element name="xsl:param">
  157. <xsl:attribute name="name">p5dkp:ditafiles.signature.fix.match</xsl:attribute>
  158. </xsl:element>
  159. <xsl:element name="xsl:choose">
  160. <xsl:element name="xsl:when">
  161. <xsl:attribute name="test">$p5dkp:ditafiles.signature.fix.match/text()</xsl:attribute>
  162. <xsl:element name="xsl:copy">
  163. <xsl:attribute name="copy-namespaces">no</xsl:attribute>
  164. <xsl:attribute name="p5dkp:{name()}" select="@p5dkp.ditafiles.signature.fix.match.descendant.3.name"/>
  165. <xsl:attribute name="p5dkp:ditafiles.signature.fix.name" select="name()"/>
  166. <xsl:element name="xsl:apply-templates">
  167. <xsl:attribute name="mode">#current</xsl:attribute>
  168. </xsl:element>
  169. </xsl:element>
  170. </xsl:element>
  171. <xsl:element name="xsl:otherwise">
  172. <xsl:element name="xsl:comment">
  173. #187 suppressed because of not full vector searched for parent
  174. </xsl:element>
  175. </xsl:element>
  176. </xsl:element>
  177. </xsl:element>
  178. </xsl:template>
  179. <xsl:template match="attr[string-length(@text) &gt; 0]" mode="p5dkp:ditafiles.signature.fix.match.match">
  180. <xsl:choose>
  181. <xsl:when test="@text">
  182. <xsl:text> text()='</xsl:text><xsl:value-of select="@text"/><xsl:text>' </xsl:text>
  183. </xsl:when>
  184. </xsl:choose>
  185. </xsl:template>
  186. <xsl:template match="attr[@value and @name and not(@matches)]" mode="p5dkp:ditafiles.signature.fix.match.match">
  187. <xsl:text>@</xsl:text><xsl:value-of select="@name"/><xsl:text>='</xsl:text><xsl:value-of select="@value"/><xsl:text>' </xsl:text>
  188. </xsl:template>
  189. <xsl:template match="attr[@value and @name and @matches='']" mode="p5dkp:ditafiles.signature.fix.match.match">
  190. <xsl:text>@</xsl:text><xsl:value-of select="@name"/><xsl:text>='</xsl:text><xsl:value-of select="@value"/><xsl:text>' </xsl:text>
  191. </xsl:template>
  192. <xsl:template match="attr[string-length(@matches) &gt; 0 and @name and @value]" priority="8" mode="p5dkp:ditafiles.signature.fix.match.match">
  193. <xsl:text>( matches(@</xsl:text><xsl:value-of select="@name"/><xsl:text>,'</xsl:text><xsl:value-of select="@matches"/><xsl:text>') </xsl:text>
  194. <xsl:text>or @</xsl:text><xsl:value-of select="@name"/><xsl:text>='</xsl:text><xsl:value-of select="@value"/><xsl:text>' )</xsl:text>
  195. </xsl:template>
  196. <xsl:template match="attr[string-length(@matches) &gt; 0 and @name and not(@value)]" mode="p5dkp:ditafiles.signature.fix.match.match">
  197. <xsl:text>matches(@</xsl:text><xsl:value-of select="@name"/><xsl:text>,'</xsl:text><xsl:value-of select="@matches"/><xsl:text>') </xsl:text>
  198. </xsl:template>
  199. <xsl:template match="attr[string-length(@matches) = 0 and not(@value) and not(@text)]" mode="p5dkp:ditafiles.signature.fix.match.match">
  200. <xsl:text> 1 = 1 </xsl:text>
  201. </xsl:template>
  202. <xsl:template mode="p5dkp:ditafiles.signature.fix.match" match="*[contains(local-name(),'p5dkp.ditafiles.signature.fix.match.element.attribute')]" xpath-default-namespace="http://biuro.biall-net.pl/xmlschema_procesy5/WPS_Functions/dita_kosztorys_projektowy/dita_kosztorys_projektowy.xsd">
  203. <xsl:element name="xsl:template">
  204. <xsl:attribute name="mode">p5dkp:ditafiles.signature.fix.generated-template.found</xsl:attribute>
  205. <xsl:attribute name="match" select="text()"/>
  206. <xsl:element name="xsl:copy">
  207. <xsl:attribute name="copy-namespaces">no</xsl:attribute>
  208. <xsl:attribute name="p5dkp:{name()}" select="text()"/>
  209. <xsl:attribute name="p5dkp:ditafiles.signature.fix.name" select="name()"/>
  210. <xsl:attribute name="p5dkp:ditafiles.signature.fix.value" select="text()"/>
  211. <xsl:element name="xsl:apply-templates">
  212. <xsl:attribute name="mode">#current</xsl:attribute>
  213. </xsl:element>
  214. </xsl:element>
  215. </xsl:element>
  216. </xsl:template>
  217. <xsl:template mode="p5dkp:ditafiles.signature.fix.replace.xsl" match="p5dkp.ditafiles.signature.fix.replace.xml" xpath-default-namespace="http://biuro.biall-net.pl/xmlschema_procesy5/WPS_Functions/dita_kosztorys_projektowy/dita_kosztorys_projektowy.xsd">
  218. <!-- generowanie tamplate -->
  219. <xsl:element name="xsl:stylesheet">
  220. <xsl:namespace name="xsl" select="'http://www.w3.org/1999/XSL/Transform'"/>
  221. <xsl:namespace name="xs" select="'http://www.w3.org/2001/XMLSchema'"/>
  222. <xsl:namespace name="p5dkp" select="'http://biuro.biall-net.pl/xmlschema_procesy5/WPS_Functions/dita_kosztorys_projektowy/p5dkp.xsd'"/>
  223. <xsl:apply-templates mode="p5dkp:ditafiles.signature.fix.replace"/>
  224. </xsl:element>
  225. </xsl:template>
  226. <xsl:template match="p5dkp:ditafiles.xml" mode="p5dkp:ditafiles.signature.fix.generated-template.found.xml">
  227. <p5dkp:ditafiles.signature.fix.generated-template.found.xml>
  228. <xsl:message>#15 started p5dkp:to.dtd.xml</xsl:message>
  229. <xsl:for-each-group select="//p5dkp:ditafiles.file" group-by="@p5dkp:true.path">
  230. <xsl:copy copy-namespaces="no">
  231. <xsl:copy-of select="@p5dkp:true.path"/>
  232. <xsl:copy-of select="@xsi:noNamespaceSchemaLocation"/>
  233. <xsl:choose>
  234. <xsl:when test="not(p5dkp:ditafiles.func.isditafile(@p5dkp:true.path))">
  235. <xsl:message>#22 not(p5dkp:ditafiles.func.isditafile(<xsl:value-of select="@p5dkp:true.path"/>))</xsl:message>
  236. </xsl:when>
  237. <xsl:when test="doc-available(@p5dkp:true.path)" >
  238. <xsl:message>#22 testing <xsl:value-of select="@p5dkp:true.path"/>; </xsl:message>
  239. <xsl:apply-templates mode="p5dkp:ditafiles.signature.fix.generated-template.found" select="doc(@p5dkp:true.path)">
  240. <xsl:with-param name="p5dkp:true.path" select="@p5dkp:true.path"/>
  241. </xsl:apply-templates>
  242. </xsl:when>
  243. <xsl:otherwise>
  244. <doc-unaviable-available p5dkp:true.path="{@p5dkp:true.path}"/>
  245. </xsl:otherwise>
  246. </xsl:choose>
  247. </xsl:copy>
  248. </xsl:for-each-group>
  249. </p5dkp:ditafiles.signature.fix.generated-template.found.xml>
  250. </xsl:template>
  251. <xsl:template mode="p5dkp:ditafiles.signature.fix.generated-template.confirm.MacroDef.xml" match="p5dkp:ditafiles.signature.fix.xsl.xml">
  252. <project basedir="{$basedir}" name="p5dkp.ditafiles.signature.fix.generated-template.confirm.MacroDef.xml" default="p5dkp.ditafiles.signature.fix.generated-template.confirm.MacroDef.xml"> <!-- object_merge_ant_object.merge.try.build.xml -->
  253. <!--<include file="{$object_modeling_new.build.xml}" as="object_modeling_new"/>
  254. <include file="{$object_merge_ant_object.build.xml}" as="object_merge_ant_object"/>-->
  255. <macrodef name="p5dkpditafilessignaturefixgeneratedtemplateconfirmMacroDefxml">
  256. <attribute name="srcfile"/>
  257. <attribute name="dstfile" />
  258. <sequential>
  259. <move verbose="yes" failonerror="false">
  260. <xsl:attribute name="file">@{srcfile}</xsl:attribute>
  261. <xsl:attribute name="tofile">@{dstfile}</xsl:attribute>
  262. </move>
  263. </sequential>
  264. </macrodef>
  265. <target name="p5dkp.ditafiles.signature.fix.generated-template.confirm.MacroDef.xml">
  266. <!--<p5dkptodtdconfirmMacroDef>-->
  267. <xsl:for-each select="p5dkp:ditafiles.file[p5dkp:ditafiles.signature.fix.confirm]">
  268. <p5dkpditafilessignaturefixgeneratedtemplateconfirmMacroDefxml srcfile="{p5dkp:ditafiles.signature.fix.confirm/@srcfile}" dstfile="{p5dkp:ditafiles.signature.fix.confirm/@dstfile}" />
  269. </xsl:for-each>
  270. <!--</p5dkptodtdconfirmMacroDef>-->
  271. </target>
  272. </project>
  273. </xsl:template>
  274. </xsl:stylesheet>