wfs.xsl 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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:Types__x3A__wfs="https://biuro.biall-net.pl/wfs/default_db/Types/wfs.xsd"
  5. xmlns:gml="http://www.opengis.net/gml"
  6. exclude-result-prefixes="xs"
  7. version="2.0">
  8. <!-- @2016-11 styl do stworzenia transakcji do WFS na bazie obiektu XML bindera -->
  9. <xsl:output indent="yes"/>
  10. <xsl:strip-space elements="*"/>
  11. <xsl:param name="Types__x3A__wfs:table_to_insert" required="yes"/>
  12. <xsl:param name="Types__x3A__wfs:xmlns_table_to_insert" required="yes"/>
  13. <xsl:template match="*" mode="Types__x3A__wfs:MakeTransactionInsert" > <!--mode="Types__x3A__wfs:prepare_transaction" -->
  14. <xsl:param name="Types__x3A__wfs:table_to_insert" select="$Types__x3A__wfs:table_to_insert"/> <!-- MK_BIALE_PLAMY -->
  15. <xsl:param name="Types__x3A__wfs:xmlns_table_to_insert" select="$Types__x3A__wfs:xmlns_table_to_insert"/><!-- https://biuro.biall-net.pl/wfs/default_db/MK_BIALE_PLAMY-->
  16. <xsl:param name="Types__x3A__wfs:element_lon" select="'lng'"/>
  17. <xsl:param name="Types__x3A__wfs:element_lat" select="'lat'"/>
  18. <xsl:param name="Types__x3A__wfs:element_the_geom" select="'the_geom'"/>
  19. <xsl:param name="gml:srsName" select="'EPSG:4326'"/>
  20. <xsl:param name="gml:element_type" select="'Point'"/>
  21. <Transaction
  22. xmlns="http://www.opengis.net/wfs"
  23. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  24. version="1.0.0"
  25. service="WFS"
  26. xmlns:p5_default_db="https://biuro.biall-net.pl/wfs/default_db"
  27. xmlns:gml="http://www.opengis.net/gml">
  28. <xsl:for-each select="row">
  29. <Insert namespace="http://www.opengis.net/wfs" >
  30. <xsl:element name="{$Types__x3A__wfs:table_to_insert}" namespace="{$Types__x3A__wfs:xmlns_table_to_insert}" inherit-namespaces="no">
  31. <xsl:for-each select="./*">
  32. <xsl:choose>
  33. <xsl:when test="name()=$Types__x3A__wfs:element_lat or name()=$Types__x3A__wfs:element_lon"/>
  34. <xsl:otherwise>
  35. <xsl:element name="{name()}" namespace="{$Types__x3A__wfs:xmlns_table_to_insert}" inherit-namespaces="no" >
  36. <xsl:value-of select="text()"/>
  37. </xsl:element>
  38. </xsl:otherwise>
  39. </xsl:choose>
  40. </xsl:for-each>
  41. <xsl:if test="./node()/name()=$Types__x3A__wfs:element_lon and ./node()/name()=$Types__x3A__wfs:element_lat">
  42. <xsl:element name="{$Types__x3A__wfs:element_the_geom}" namespace="{$Types__x3A__wfs:xmlns_table_to_insert}">
  43. <xsl:element name="gml:Point" exclude-result-prefixes="#all" xmlns:gml="http://www.opengis.net/gml">
  44. <xsl:attribute name="srsName" select="$gml:srsName"/><!-- cs="," ts=" " -->
  45. <gml:coordinates xmlns:gml="http://www.opengis.net/gml" decimal="." cs=" " ts=","><xsl:value-of select="./node()[name()=$Types__x3A__wfs:element_lon]/text()"/><xsl:value-of select="' '"/><xsl:value-of select="./node()[name()=$Types__x3A__wfs:element_lat]/text()"/></gml:coordinates>
  46. </xsl:element>
  47. </xsl:element>
  48. </xsl:if>
  49. </xsl:element>
  50. </Insert>
  51. </xsl:for-each>
  52. </Transaction>
  53. </xsl:template>
  54. </xsl:stylesheet>