biale_plamy_joins2ways_do_paths.xsl 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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:bp="https://procesy5.pl/biale_plamy-schema.xsd"
  6. version="2.0">
  7. <!--<xsl:param name=""></xsl:param>-->
  8. <xsl:variable name="ways2joins" select="doc('ways2joins.xml')"/>
  9. <xsl:output indent="yes"/>
  10. <xsl:strip-space elements="*"/>
  11. <!--example input
  12. <joins2ways>
  13. <item id="0">
  14. <item id="0">0</item>
  15. <item id="1">12135</item>
  16. <item id="2">29426</item>
  17. </item>
  18. <item id="1">
  19. <item id="0">0</item>
  20. <item id="1">1</item>
  21. <item id="2">24887</item>
  22. </item>
  23. </joins2ways>
  24. -->
  25. <xsl:template match="joins2ways_z_ID_Way">
  26. <xsl:variable name="EdgeWayJoinsPair_cand">
  27. <xsl:apply-templates mode="joins"/>
  28. </xsl:variable>
  29. <xsl:variable name="joins2ways_z_ID_Way" select="."/>
  30. <EdgeWayJoins>
  31. <xsl:for-each-group select="$EdgeWayJoinsPair_cand/EdgeWayJoinsPair_cand" group-by="@ID_Way">
  32. <EdgeWayJoinsPair>
  33. <xsl:attribute name="ID_Way" select="@ID_Way"/>
  34. <xsl:variable name="ID_Way" select="@ID_Way"/>
  35. <xsl:for-each select="current-group()">
  36. <xsl:variable name="EdgeJoinFound" select="@joins"/>
  37. <bp:Joins>
  38. <xsl:attribute name="Joins" select="@joins"/>
  39. </bp:Joins>
  40. <xsl:choose>
  41. <xsl:when test=" count( current-group())&lt;2">
  42. <bp:Joins>
  43. <xsl:variable name="Joins_miss">
  44. <xsl:for-each select="$joins2ways_z_ID_Way/item[@ID_Way=$ID_Way and count( child::node())=2 ]">
  45. <!-- szukamy joinsa ktory ma joina do innego waysa-->
  46. <xsl:variable name="Join_ID" select="@id"/>
  47. <xsl:for-each select="item">
  48. <ways>
  49. <xsl:attribute name="id_join" select="$Join_ID"/>
  50. <xsl:attribute name="id_way" select="text()"/>
  51. </ways>
  52. </xsl:for-each>
  53. </xsl:for-each>
  54. </xsl:variable>
  55. <!--<xsl:copy-of select="$Joins_miss"></xsl:copy-of>-->
  56. <xsl:variable name="Ways_miss">
  57. <xsl:for-each select="$Joins_miss/ways">
  58. <xsl:variable name="id_join" select="@id_join"/>
  59. <xsl:variable name="id_way_test" select="@id_way"/>
  60. <xsl:for-each select="$ways2joins/ways2joins/item[@id=$id_way_test]/item">
  61. <found_joins_in_ways>
  62. <xsl:attribute name="id_join" select="$id_join"/>
  63. <xsl:attribute name="id_join_found" select="text()"/>
  64. </found_joins_in_ways>
  65. </xsl:for-each>
  66. </xsl:for-each>
  67. </xsl:variable>
  68. <!--<xsl:copy-of select="$Ways_miss"/>-->
  69. <xsl:for-each select="$Ways_miss/found_joins_in_ways[not(@id_join_found=$EdgeJoinFound)]">
  70. <xsl:choose>
  71. <xsl:when test="not($Joins_miss/ways[@id_join=current()/@id_join_found])">
  72. <!--<missed>-->
  73. <!--<xsl:attribute name="Joins" select="@id_join"/>-->
  74. <xsl:attribute name="Joins" select="current()/@id_join_found"/>
  75. <!--</missed>-->
  76. </xsl:when>
  77. </xsl:choose>
  78. </xsl:for-each>
  79. </bp:Joins>
  80. </xsl:when>
  81. </xsl:choose>
  82. </xsl:for-each>
  83. </EdgeWayJoinsPair>
  84. </xsl:for-each-group>
  85. </EdgeWayJoins>
  86. </xsl:template>
  87. <xsl:template match="item" mode="miss_join">
  88. </xsl:template>
  89. <xsl:template match="item" mode="joins">
  90. <xsl:choose>
  91. <xsl:when test="count(item)=1">
  92. <xsl:element name="EdgeWayJoinsPair_cand">
  93. <xsl:attribute name="joins" select="@id"/>
  94. <xsl:attribute name="ID_Way" select="@ID_Way"/>
  95. <xsl:attribute name="ways" select="item/text()"/>
  96. </xsl:element>
  97. </xsl:when>
  98. <!--<xsl:when test="count(item)=2">
  99. <xsl:element name="EdgeWayJoinsPair_cand">
  100. <xsl:attribute name="joins" select="@id"/>
  101. <xsl:attribute name="ID_Way" select="@ID_Way"/>
  102. <xsl:attribute name="ways" select="item/text()"/>
  103. </xsl:element>
  104. </xsl:when>-->
  105. </xsl:choose>
  106. </xsl:template>
  107. </xsl:stylesheet>