| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- <?xml version="1.0" encoding="UTF-8"?>
- <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:xs="http://www.w3.org/2001/XMLSchema"
- exclude-result-prefixes="xs"
- xmlns:bp="https://procesy5.pl/biale_plamy-schema.xsd"
- version="2.0">
- <!--<xsl:param name=""></xsl:param>-->
-
- <xsl:variable name="ways2joins" select="doc('ways2joins.xml')"/>
-
- <xsl:output indent="yes"/>
- <xsl:strip-space elements="*"/>
- <!--example input
- <joins2ways>
- <item id="0">
- <item id="0">0</item>
- <item id="1">12135</item>
- <item id="2">29426</item>
- </item>
- <item id="1">
- <item id="0">0</item>
- <item id="1">1</item>
- <item id="2">24887</item>
- </item>
- </joins2ways>
- -->
-
- <xsl:template match="joins2ways_z_ID_Way">
- <xsl:variable name="EdgeWayJoinsPair_cand">
- <xsl:apply-templates mode="joins"/>
- </xsl:variable>
- <xsl:variable name="joins2ways_z_ID_Way" select="."/>
-
- <EdgeWayJoins>
- <xsl:for-each-group select="$EdgeWayJoinsPair_cand/EdgeWayJoinsPair_cand" group-by="@ID_Way">
- <EdgeWayJoinsPair>
- <xsl:attribute name="ID_Way" select="@ID_Way"/>
- <xsl:variable name="ID_Way" select="@ID_Way"/>
- <xsl:for-each select="current-group()">
- <xsl:variable name="EdgeJoinFound" select="@joins"/>
- <bp:Joins>
- <xsl:attribute name="Joins" select="@joins"/>
- </bp:Joins>
- <xsl:choose>
- <xsl:when test=" count( current-group())<2">
- <bp:Joins>
- <xsl:variable name="Joins_miss">
- <xsl:for-each select="$joins2ways_z_ID_Way/item[@ID_Way=$ID_Way and count( child::node())=2 ]">
- <!-- szukamy joinsa ktory ma joina do innego waysa-->
- <xsl:variable name="Join_ID" select="@id"/>
- <xsl:for-each select="item">
- <ways>
- <xsl:attribute name="id_join" select="$Join_ID"/>
- <xsl:attribute name="id_way" select="text()"/>
- </ways>
- </xsl:for-each>
- </xsl:for-each>
- </xsl:variable>
- <!--<xsl:copy-of select="$Joins_miss"></xsl:copy-of>-->
- <xsl:variable name="Ways_miss">
- <xsl:for-each select="$Joins_miss/ways">
- <xsl:variable name="id_join" select="@id_join"/>
- <xsl:variable name="id_way_test" select="@id_way"/>
- <xsl:for-each select="$ways2joins/ways2joins/item[@id=$id_way_test]/item">
- <found_joins_in_ways>
- <xsl:attribute name="id_join" select="$id_join"/>
- <xsl:attribute name="id_join_found" select="text()"/>
- </found_joins_in_ways>
- </xsl:for-each>
- </xsl:for-each>
- </xsl:variable>
- <!--<xsl:copy-of select="$Ways_miss"/>-->
- <xsl:for-each select="$Ways_miss/found_joins_in_ways[not(@id_join_found=$EdgeJoinFound)]">
- <xsl:choose>
- <xsl:when test="not($Joins_miss/ways[@id_join=current()/@id_join_found])">
- <!--<missed>-->
- <!--<xsl:attribute name="Joins" select="@id_join"/>-->
- <xsl:attribute name="Joins" select="current()/@id_join_found"/>
- <!--</missed>-->
- </xsl:when>
- </xsl:choose>
- </xsl:for-each>
- </bp:Joins>
- </xsl:when>
- </xsl:choose>
- </xsl:for-each>
- </EdgeWayJoinsPair>
- </xsl:for-each-group>
- </EdgeWayJoins>
- </xsl:template>
-
-
- <xsl:template match="item" mode="miss_join">
-
- </xsl:template>
-
- <xsl:template match="item" mode="joins">
- <xsl:choose>
- <xsl:when test="count(item)=1">
- <xsl:element name="EdgeWayJoinsPair_cand">
- <xsl:attribute name="joins" select="@id"/>
- <xsl:attribute name="ID_Way" select="@ID_Way"/>
- <xsl:attribute name="ways" select="item/text()"/>
- </xsl:element>
- </xsl:when>
- <!--<xsl:when test="count(item)=2">
- <xsl:element name="EdgeWayJoinsPair_cand">
- <xsl:attribute name="joins" select="@id"/>
- <xsl:attribute name="ID_Way" select="@ID_Way"/>
- <xsl:attribute name="ways" select="item/text()"/>
- </xsl:element>
- </xsl:when>-->
- </xsl:choose>
- </xsl:template>
-
-
- </xsl:stylesheet>
|