TargetNamespaceBindings.xsl 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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:system_cache__appinfo="http://biuro.biall-net.pl/xmlschema_procesy5/default_db_xml_cache/appinfo.xsd"
  5. exclude-result-prefixes="xs"
  6. version="2.0">
  7. <xsl:include href="../get_all_xsd.xsl"/>
  8. <xsl:param name="targetNamespace_DEFAULTS_prefix" select="'default_db'"/>
  9. <xsl:param name="targetNamespace_DEFAULTS_prefix_objects" select="'default_objects'"/>
  10. <xsl:param name="TargetNamespaceBindingsApiUrl" select="'https://biuro.biall-net.pl/SE/version-git/wfs-data.php'"/>
  11. <!-- todo to override from config prefix etc -->
  12. <xsl:output indent="yes"/>
  13. <xsl:strip-space elements="*"/>
  14. <xsl:template name="system_cache__appinfo:TargetNamespaceBindings_from_Namespace">
  15. <xsl:param name="TargetNamespace" required="yes"/> <!-- like https://biuro.biall-net.pl/wfs/default_db/table/CRM_PROCES.xsd -->
  16. <xsl:message>#15 $TargetNamespace=<xsl:value-of select="$TargetNamespace"/>; system_cache__appinfo:TargetNamespaceBindings_from_Namespace</xsl:message>
  17. <system_cache__appinfo:TargetNamespaceBindings_from_Namespace>
  18. <xsl:variable name="TargetNamespaceTokens" select="tokenize($TargetNamespace,'/')"/>
  19. <xsl:attribute name="NamespaceDatabaseStorageDefinitionPrefix" select="$TargetNamespaceTokens[ count($TargetNamespaceTokens)-2]"/>
  20. <xsl:attribute name="NamespaceObjectInstanceType" select="$TargetNamespaceTokens[ count($TargetNamespaceTokens)-1]"/> <!-- should respond to table -->
  21. <xsl:attribute name="NamespaceObjectInstanceTable" select=" substring-before($TargetNamespaceTokens[ count($TargetNamespaceTokens)],'.')"/>
  22. <xsl:attribute name="NamespacePrefix" select="system_cache__appinfo:escape_object_prefix_to_string( concat( $TargetNamespaceTokens[ count($TargetNamespaceTokens)-2],':', substring-before($TargetNamespaceTokens[ count($TargetNamespaceTokens)],'.')))"/>
  23. </system_cache__appinfo:TargetNamespaceBindings_from_Namespace>
  24. </xsl:template>
  25. <xsl:template name="system_cache__appinfo:TargetNamespaceBindings_from_Prefix">
  26. <xsl:param name="NamespacePrefix" required="yes"/> <!-- like default_db__x3A__CRM_PROCES -->
  27. <xsl:message terminate="yes">#18 TODO function to be created</xsl:message>
  28. </xsl:template>
  29. <xsl:template name="system_cache__appinfo:TargetNamespace_from_Bindings">
  30. <xsl:param name="TargetNamespaceBindingsApi" required="yes"/> <!-- example https://biuro.biall-net.pl/wfs -->
  31. <xsl:param name="NamespaceDatabaseStorageDefinitionPrefix" required="yes"/> <!-- example default_db -->
  32. <xsl:param name="NamespaceObjectInstanceType" select="'table'"/> <!-- example table -->
  33. <xsl:param name="NamespaceObjectInstanceTable" required="yes"/> <!-- example CRM_PROCES -->
  34. <system_cache__appinfo:TargetNamespace_from_Bindings>
  35. <xsl:attribute name="TargetNamespace" select="concat($TargetNamespaceBindingsApi,'/',$NamespaceDatabaseStorageDefinitionPrefix,'/', $NamespaceObjectInstanceType,'/',$NamespaceObjectInstanceTable,'.xsd' )"/>
  36. <xsl:attribute name="Prefix" select="system_cache__appinfo:escape_object_prefix_to_string(concat($NamespaceDatabaseStorageDefinitionPrefix,':',$NamespaceObjectInstanceTable) )"/>
  37. </system_cache__appinfo:TargetNamespace_from_Bindings>
  38. </xsl:template>
  39. <xsl:template name="system_cache__appinfo:TargetNamespaceBindings_to_Namespace">
  40. <xsl:param name="TargetNamespace" required="yes"/> <!-- like https://biuro.biall-net.pl/wfs -->
  41. <xsl:param name="NamespaceDatabaseStorageDefinitionPrefix" required="yes"/> <!-- like default_db for binding to default_db-->
  42. <xsl:param name="NamespaceObjectInstanceTable" required="yes"/> <!-- like CRM_PROCES -->
  43. <xsl:param name="NamespaceObjectInstanceType" required="yes"/> <!-- like table -->
  44. <system_cache__appinfo:TargetNamespaceBindings_to_Namespace>
  45. <xsl:attribute name="TargetNamespace" select="concat($TargetNamespace,'/',$NamespaceDatabaseStorageDefinitionPrefix,'/',$NamespaceObjectInstanceTable,'.xsd')"/>
  46. </system_cache__appinfo:TargetNamespaceBindings_to_Namespace>
  47. </xsl:template>
  48. <xsl:template match="system_cache__appinfo:get_all_xsd_list" mode="system_cache__appinfo:NamespaceBinding.xml">
  49. <!-- to generate NamespaceBinding.xml file - need to be upgraded for parse xs:appinfo binding informations from schema -->
  50. <system_cache__appinfo:NamespaceBinding>
  51. <xsl:apply-templates mode="system_cache__appinfo:NamespaceBinding.xml"/>
  52. </system_cache__appinfo:NamespaceBinding>
  53. </xsl:template>
  54. <xsl:template match="system_cache__appinfo:get_all_xsd" mode="system_cache__appinfo:NamespaceBinding.xml">
  55. <xsl:apply-templates mode="system_cache__appinfo:NamespaceBinding.xml"/>
  56. </xsl:template>
  57. <xsl:template mode="system_cache__appinfo:NamespaceBinding.xml" match="*|text()|comment()"/>
  58. <xsl:template match="schema" mode="system_cache__appinfo:NamespaceBinding.xml" xpath-default-namespace="http://www.w3.org/2001/XMLSchema">
  59. <xsl:choose>
  60. <xsl:when test="annotation/system_cache__appinfo:binding" xpath-default-namespace="http://www.w3.org/2001/XMLSchema">
  61. <xsl:copy-of select="annotation/system_cache__appinfo:binding" xpath-default-namespace="http://www.w3.org/2001/XMLSchema" copy-namespaces="no"/>
  62. </xsl:when>
  63. <xsl:when test="contains(@targetNamespace,'default_db/SystemObjects')">
  64. <system_cache__appinfo:binding targetNamespace="{@targetNamespace}" bindPolicy="single">
  65. <system_cache__appinfo:api type="wfs"><xsl:value-of select="$TargetNamespaceBindingsApiUrl"/></system_cache__appinfo:api>
  66. <system_cache__appinfo:prefix><xsl:value-of select="$targetNamespace_DEFAULTS_prefix_objects"/></system_cache__appinfo:prefix>
  67. </system_cache__appinfo:binding>
  68. </xsl:when>
  69. <xsl:when test="contains(@targetNamespace,'default_db/table')">
  70. <system_cache__appinfo:binding targetNamespace="{@targetNamespace}" bindPolicy="single">
  71. <system_cache__appinfo:api type="wfs"><xsl:value-of select="$TargetNamespaceBindingsApiUrl"/></system_cache__appinfo:api>
  72. <system_cache__appinfo:prefix><xsl:value-of select="$targetNamespace_DEFAULTS_prefix"/></system_cache__appinfo:prefix>
  73. </system_cache__appinfo:binding>
  74. </xsl:when>
  75. <xsl:when test="contains(@targetNamespace,'default_db/Types')"></xsl:when>
  76. <xsl:otherwise>
  77. <xsl:comment>#71 unknown type schema? maybe some fixing or external schema?</xsl:comment>
  78. <system_cache__appinfo:binding targetNamespace="{@targetNamespace}" bindPolicy="single">
  79. <system_cache__appinfo:api type="wfs"><xsl:value-of select="$TargetNamespaceBindingsApiUrl"/></system_cache__appinfo:api>
  80. <system_cache__appinfo:prefix>unknown</system_cache__appinfo:prefix>
  81. </system_cache__appinfo:binding>
  82. </xsl:otherwise>
  83. </xsl:choose>
  84. </xsl:template>
  85. </xsl:stylesheet>