procesy_gen_include.xsl 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  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:exslt="http://exslt.org/common"
  5. exclude-result-prefixes="xs exslt"
  6. version="2.0">
  7. <xsl:output omit-xml-declaration="no" indent="yes" method="xml" encoding="UTF-8" version="1.0"/>
  8. <xsl:strip-space elements="*"/>
  9. <xsl:template name="task_params">
  10. <xsl:element name="EventName">
  11. <xsl:value-of select="."/>
  12. </xsl:element>
  13. <xsl:for-each select="../outgoing_name">
  14. <xsl:element name="outgoing">
  15. <xsl:value-of select="."/>
  16. </xsl:element>
  17. </xsl:for-each>
  18. <xsl:for-each select="../incoming_name">
  19. <xsl:element name="incoming">
  20. <xsl:value-of select="."/>
  21. </xsl:element>
  22. </xsl:for-each>
  23. </xsl:template>
  24. <xsl:template name="procesy_gen_include">
  25. <xsl:element name="root">
  26. <xsl:for-each select="root/Proces">
  27. <xsl:for-each select="pools">
  28. <xsl:variable name="child">
  29. <xsl:value-of select="child"/>
  30. </xsl:variable>
  31. <xsl:for-each select="ID_ZASOB[1]"> <!-- TODO zdjac trigger aby dla wszystkich stanowisk sie generowaly-->
  32. <xsl:element name="lane">
  33. <xsl:element name="ID_ZASOB">
  34. <xsl:value-of select="node()"/>
  35. </xsl:element>
  36. <xsl:element name="id_proces_init">
  37. <xsl:value-of select="$child"/>
  38. </xsl:element>
  39. <xsl:element name="tasks">
  40. <xsl:for-each select="../../childs">
  41. <xsl:element name="task">
  42. <xsl:value-of select="child"/>
  43. </xsl:element>
  44. </xsl:for-each>
  45. </xsl:element>
  46. <xsl:element name="StartEvents">
  47. <xsl:for-each select="../../childs/StartEvent">
  48. <xsl:element name="StartEvent">
  49. <xsl:element name="DESC">
  50. <xsl:value-of select="../DESC"/>
  51. </xsl:element>
  52. <xsl:element name="EventName">
  53. <xsl:value-of select="."/>
  54. </xsl:element>
  55. <xsl:for-each select="../outgoing_name">
  56. <xsl:element name="outgoing">
  57. <xsl:value-of select="."/>
  58. </xsl:element>
  59. </xsl:for-each>
  60. </xsl:element>
  61. </xsl:for-each>
  62. <!-- wykrycie brakujacych StartEvents z dowiazan poza rysunkiem -->
  63. <xsl:for-each select="../../childs/outgoing_name">
  64. <xsl:variable name="chk_out_name" select="."/>
  65. <xsl:choose>
  66. <xsl:when test="not(../../../Proces/childs[TaskName=$chk_out_name])">
  67. <xsl:element name="StartEvent">
  68. <intermediateCatchEvent/>
  69. <xsl:element name="EventName">
  70. <xsl:value-of select="$chk_out_name"/>
  71. </xsl:element>
  72. <xsl:for-each select="../../../Proces/childs[outgoing_name=$chk_out_name]">
  73. <xsl:element name="incoming">
  74. <xsl:value-of select="Task"></xsl:value-of>
  75. </xsl:element>
  76. </xsl:for-each>
  77. </xsl:element>
  78. </xsl:when>
  79. </xsl:choose>
  80. </xsl:for-each>
  81. </xsl:element>
  82. <xsl:element name="EndEvents">
  83. <xsl:for-each select="../../childs/EndEvent">
  84. <xsl:element name="EndEvent">
  85. <xsl:element name="EventName">
  86. <xsl:value-of select="."/>
  87. </xsl:element>
  88. <xsl:for-each select="../Task">
  89. <xsl:element name="incoming">
  90. <xsl:value-of select="."/>
  91. </xsl:element>
  92. </xsl:for-each>
  93. </xsl:element>
  94. </xsl:for-each>
  95. </xsl:element>
  96. <xsl:element name="Tasks">
  97. <xsl:for-each select="../../childs/Task">
  98. <xsl:variable name="cur_task_chk" select="."/>
  99. <xsl:element name="Task">
  100. <xsl:element name="DESC">
  101. <xsl:value-of select="../DESC"/>
  102. </xsl:element>
  103. <xsl:call-template name="task_params"/>
  104. <!-- wykrycie przejsc IF_TRUE_GOTO -->
  105. <xsl:for-each select="../../childs/IF_TRUE_GOTO[outgoing_name=$cur_task_chk]">
  106. <xsl:element name="incoming">
  107. <xsl:value-of select="../Task"/>
  108. </xsl:element>
  109. </xsl:for-each>
  110. </xsl:element>
  111. </xsl:for-each>
  112. </xsl:element>
  113. </xsl:element>
  114. </xsl:for-each>
  115. </xsl:for-each>
  116. </xsl:for-each>
  117. </xsl:element>
  118. </xsl:template>
  119. </xsl:stylesheet>