TargetNamespaceBindings.xsl 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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:param name="NamespaceObjectInstanceTable"/> <!-- optional when using external api db as prototype -->
  17. <xsl:message>#15 $TargetNamespace=<xsl:value-of select="$TargetNamespace"/>; system_cache__appinfo:TargetNamespaceBindings_from_Namespace</xsl:message>
  18. <xsl:choose>
  19. <xsl:when test="matches($TargetNamespace,$zasob_id_db_targetNamespace_detect_string)">
  20. <xsl:if test="not($NamespaceObjectInstanceTable)"><xsl:message terminate="yes">#25 required param $NamespaceObjectInstanceTable not specified when matched $zasob_id_db_targetNamespace_detect_string=<xsl:value-of select="$zasob_id_db_targetNamespace_detect_string"/> </xsl:message></xsl:if>
  21. <system_cache__appinfo:TargetNamespaceBindings_from_Namespace>
  22. <xsl:variable name="TargetNamespaceTokens" select="tokenize($TargetNamespace,'/')"/>
  23. <xsl:variable name="zasob_id" select="$TargetNamespaceTokens[ count($TargetNamespaceTokens)]"/>
  24. <xsl:variable name="NamespaceDatabaseStorageDefinitionPrefix" select="concat('p5_zasob_',$zasob_id)"/>
  25. <xsl:attribute name="NamespaceDatabaseStorageDefinitionPrefix" select="$NamespaceDatabaseStorageDefinitionPrefix"/>
  26. <xsl:attribute name="NamespaceObjectInstanceType" select="'table'"/> <!-- should respond to table -->
  27. <xsl:attribute name="NamespaceObjectInstanceTable" select="$NamespaceObjectInstanceTable"/>
  28. <xsl:attribute name="NamespacePrefix" select="system_cache__appinfo:escape_object_prefix_to_string( $NamespaceDatabaseStorageDefinitionPrefix)"/>
  29. </system_cache__appinfo:TargetNamespaceBindings_from_Namespace>
  30. </xsl:when>
  31. <xsl:otherwise>
  32. <system_cache__appinfo:TargetNamespaceBindings_from_Namespace>
  33. <xsl:variable name="TargetNamespaceTokens" select="tokenize($TargetNamespace,'/')"/>
  34. <xsl:attribute name="NamespaceDatabaseStorageDefinitionPrefix" select="$TargetNamespaceTokens[ count($TargetNamespaceTokens)-2]"/>
  35. <xsl:attribute name="NamespaceObjectInstanceType" select="$TargetNamespaceTokens[ count($TargetNamespaceTokens)-1]"/> <!-- should respond to table -->
  36. <xsl:attribute name="NamespaceObjectInstanceTable" select=" substring-before($TargetNamespaceTokens[ count($TargetNamespaceTokens)],'.')"/>
  37. <xsl:attribute name="NamespacePrefix" select="system_cache__appinfo:escape_object_prefix_to_string( concat( $TargetNamespaceTokens[ count($TargetNamespaceTokens)-2],':', substring-before($TargetNamespaceTokens[ count($TargetNamespaceTokens)],'.')))"/>
  38. </system_cache__appinfo:TargetNamespaceBindings_from_Namespace>
  39. </xsl:otherwise>
  40. </xsl:choose>
  41. </xsl:template>
  42. <xsl:template name="system_cache__appinfo:TargetNamespaceBindings_from_Prefix">
  43. <xsl:param name="NamespacePrefix" required="yes"/> <!-- like default_db__x3A__CRM_PROCES -->
  44. <xsl:message terminate="yes">#18 TODO function to be created</xsl:message>
  45. </xsl:template>
  46. <xsl:template name="system_cache__appinfo:TargetNamespace_from_Bindings">
  47. <xsl:param name="TargetNamespaceBindingsApi" required="yes"/> <!-- example https://biuro.biall-net.pl/wfs -->
  48. <xsl:param name="NamespaceDatabaseStorageDefinitionPrefix" required="yes"/> <!-- example default_db -->
  49. <xsl:param name="NamespaceObjectInstanceType" select="'table'"/> <!-- example table -->
  50. <xsl:param name="NamespaceObjectInstanceTable" required="yes"/> <!-- example CRM_PROCES -->
  51. <system_cache__appinfo:TargetNamespace_from_Bindings>
  52. <xsl:attribute name="TargetNamespace" select="concat($TargetNamespaceBindingsApi,'/',$NamespaceDatabaseStorageDefinitionPrefix,'/', $NamespaceObjectInstanceType,'/',$NamespaceObjectInstanceTable,'.xsd' )"/>
  53. <xsl:attribute name="Prefix" select="system_cache__appinfo:escape_object_prefix_to_string(concat($NamespaceDatabaseStorageDefinitionPrefix,':',$NamespaceObjectInstanceTable) )"/>
  54. </system_cache__appinfo:TargetNamespace_from_Bindings>
  55. </xsl:template>
  56. <xsl:template name="system_cache__appinfo:TargetNamespaceBindings_to_Namespace">
  57. <xsl:param name="TargetNamespace" required="yes"/> <!-- like https://biuro.biall-net.pl/wfs -->
  58. <xsl:param name="NamespaceDatabaseStorageDefinitionPrefix" required="yes"/> <!-- like default_db for binding to default_db-->
  59. <xsl:param name="NamespaceObjectInstanceTable" required="yes"/> <!-- like CRM_PROCES -->
  60. <xsl:param name="NamespaceObjectInstanceType" required="yes"/> <!-- like table -->
  61. <system_cache__appinfo:TargetNamespaceBindings_to_Namespace>
  62. <xsl:attribute name="TargetNamespace" select="concat($TargetNamespace,'/',$NamespaceDatabaseStorageDefinitionPrefix,'/',$NamespaceObjectInstanceTable,'.xsd')"/>
  63. </system_cache__appinfo:TargetNamespaceBindings_to_Namespace>
  64. </xsl:template>
  65. <xsl:template match="system_cache__appinfo:get_all_xsd_list" mode="system_cache__appinfo:NamespaceBinding.xml">
  66. <!-- to generate NamespaceBinding.xml file - need to be upgraded for parse xs:appinfo binding informations from schema -->
  67. <system_cache__appinfo:NamespaceBinding>
  68. <xsl:apply-templates mode="system_cache__appinfo:NamespaceBinding.xml"/>
  69. </system_cache__appinfo:NamespaceBinding>
  70. </xsl:template>
  71. <xsl:template match="system_cache__appinfo:get_all_xsd" mode="system_cache__appinfo:NamespaceBinding.xml">
  72. <xsl:apply-templates mode="system_cache__appinfo:NamespaceBinding.xml"/>
  73. </xsl:template>
  74. <xsl:template mode="system_cache__appinfo:NamespaceBinding.xml" match="*|text()|comment()"/>
  75. <xsl:template match="schema" mode="system_cache__appinfo:NamespaceBinding.xml" xpath-default-namespace="http://www.w3.org/2001/XMLSchema">
  76. <xsl:choose>
  77. <xsl:when test="annotation/system_cache__appinfo:binding" xpath-default-namespace="http://www.w3.org/2001/XMLSchema">
  78. <xsl:copy-of select="annotation/system_cache__appinfo:binding" xpath-default-namespace="http://www.w3.org/2001/XMLSchema" copy-namespaces="no"/>
  79. </xsl:when>
  80. <xsl:when test="contains(@targetNamespace,'default_db/SystemObjects')">
  81. <system_cache__appinfo:binding targetNamespace="{@targetNamespace}" bindPolicy="single">
  82. <system_cache__appinfo:api type="wfs"><xsl:value-of select="$TargetNamespaceBindingsApiUrl"/></system_cache__appinfo:api>
  83. <system_cache__appinfo:prefix><xsl:value-of select="$targetNamespace_DEFAULTS_prefix_objects"/></system_cache__appinfo:prefix>
  84. </system_cache__appinfo:binding>
  85. </xsl:when>
  86. <xsl:when test="contains(@targetNamespace,'default_db/table')">
  87. <system_cache__appinfo:binding targetNamespace="{@targetNamespace}" bindPolicy="single">
  88. <system_cache__appinfo:api type="wfs"><xsl:value-of select="$TargetNamespaceBindingsApiUrl"/></system_cache__appinfo:api>
  89. <system_cache__appinfo:prefix><xsl:value-of select="$targetNamespace_DEFAULTS_prefix"/></system_cache__appinfo:prefix>
  90. </system_cache__appinfo:binding>
  91. </xsl:when>
  92. <xsl:when test="contains(@targetNamespace,'default_db/Types')"></xsl:when>
  93. <xsl:otherwise>
  94. <xsl:comment>#71 unknown type schema? maybe some fixing or external schema?</xsl:comment>
  95. <system_cache__appinfo:binding targetNamespace="{@targetNamespace}" bindPolicy="single">
  96. <system_cache__appinfo:api type="wfs"><xsl:value-of select="$TargetNamespaceBindingsApiUrl"/></system_cache__appinfo:api>
  97. <system_cache__appinfo:prefix>unknown</system_cache__appinfo:prefix>
  98. </system_cache__appinfo:binding>
  99. </xsl:otherwise>
  100. </xsl:choose>
  101. </xsl:template>
  102. <xsl:template name="system_cache__appinfo:new_object_namespace"> <!-- used in build_object_modeling_new.child.xsl and object_modeling_build_infrastructure.xsl -->
  103. <xsl:param name="TargetNamespace" required="yes"/> <!-- e.g. ${TargetNamespaceBindingsApi}/${NamespaceDatabaseStorageDefinitionPrefix}/${NamespaceObjectInstanceType} -->
  104. <xsl:param name="name" required="yes"/> <!-- e.g. prototype/base element/complexType @name from schema -->
  105. <xsl:value-of select="concat($TargetNamespace,'/',$name,'.xsd')"/>
  106. </xsl:template>
  107. </xsl:stylesheet>