|
|
@@ -0,0 +1,168 @@
|
|
|
+<?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"
|
|
|
+ xmlns:system_cache__appinfo="http://biuro.biall-net.pl/xmlschema_procesy5/default_db_xml_cache/appinfo.xsd"
|
|
|
+ exclude-result-prefixes="xs"
|
|
|
+ version="2.0">
|
|
|
+
|
|
|
+ <xsl:output indent="yes"/>
|
|
|
+ <xsl:strip-space elements="*"/>
|
|
|
+
|
|
|
+
|
|
|
+ <xsl:include href="object_modeling_new.xsl"/>
|
|
|
+ <!--<xsl:param name="new_object_namespace" required="yes"/>--> <!-- example https://biuro.biall-net.pl/wfs/default_db/table/CRM_PROCES.xsd -->
|
|
|
+
|
|
|
+ <xsl:param name="default_db.xml" required="yes"/>
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ <!-- based on object_modeling_new.xsl for use with system_cache__appinfo:object_modeling_new_by_xml_schema in build_object_modelling_new.xml - to generate merged object from default_db.xml and prototype from Type -->
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ <xsl:template mode="system_cache__appinfo:object_modeling_new_add_xml_schema" match="schema|text()|comment()"/>
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ <xsl:template match="system_cache__appinfo:get_all_xsd" mode="system_cache__appinfo:object_modeling_new_by_xml_schema">
|
|
|
+ <xsl:apply-templates mode="system_cache__appinfo:object_modeling_new_test_if_exists"/>
|
|
|
+ </xsl:template>
|
|
|
+
|
|
|
+ <xsl:template match="system_cache__appinfo:get_all_xsd_list" mode="system_cache__appinfo:object_modeling_new_by_xml_schema">
|
|
|
+ <system_cache__appinfo:object_modeling_new_by_xml_schema>
|
|
|
+ <xsl:attribute name="object_modeling_new_basedir_repository" select="$object_modeling_new_basedir_repository"/>
|
|
|
+ <xsl:copy-of select="$TargetNamespace_from_Bindings"/>
|
|
|
+ <new_TargetNamespaceBindings_from_Namespace>
|
|
|
+ <xsl:copy-of select="$new_TargetNamespaceBindings_from_Namespace"></xsl:copy-of>
|
|
|
+ </new_TargetNamespaceBindings_from_Namespace>
|
|
|
+ <xsl:variable name="system_cache__appinfo:object_modeling_new_test_if_exists">
|
|
|
+ <xsl:apply-templates mode="system_cache__appinfo:object_modeling_new_test_if_exists"/>
|
|
|
+ </xsl:variable>
|
|
|
+ <xsl:choose>
|
|
|
+ <xsl:when test="$system_cache__appinfo:object_modeling_new_test_if_exists/*">
|
|
|
+ <ERROR>
|
|
|
+ Object already defined in current schema
|
|
|
+ </ERROR>
|
|
|
+ </xsl:when>
|
|
|
+ <xsl:otherwise>
|
|
|
+ <OK>
|
|
|
+ We try to create new object in <xsl:value-of select="$template_object.xml_location"/>
|
|
|
+ </OK>
|
|
|
+ <xsl:variable name="system_cache__appinfo:new_object_by_prototype_test_if_prototype">
|
|
|
+ <xsl:apply-templates mode="system_cache__appinfo:new_object_by_prototype_test_if_prototype"/>
|
|
|
+ </xsl:variable>
|
|
|
+ <xsl:choose>
|
|
|
+ <xsl:when test="$system_cache__appinfo:new_object_by_prototype_test_if_prototype/*">
|
|
|
+ <xsl:apply-templates mode="system_cache__appinfo:object_modeling_new_add_xml_schema"/>
|
|
|
+ </xsl:when>
|
|
|
+ <xsl:otherwise>
|
|
|
+ <!--<xsl:message terminate="yes">#84 prototype <xsl:value-of select="$prototype_object_namespace"/> not exists in schema! if it realy exist consider rebuild procesy5_system_schema.xml !</xsl:message>-->
|
|
|
+ <system_cache__appinfo:new_object_by_prototype_test_if_prototype>
|
|
|
+ <xsl:copy-of select="$system_cache__appinfo:new_object_by_prototype_test_if_prototype"></xsl:copy-of>
|
|
|
+ </system_cache__appinfo:new_object_by_prototype_test_if_prototype>
|
|
|
+ <ERROR>Not exists prototype $prototype_object_namespace=<xsl:value-of select="$prototype_object_namespace"/>;</ERROR>
|
|
|
+ </xsl:otherwise>
|
|
|
+ </xsl:choose>
|
|
|
+ </xsl:otherwise>
|
|
|
+ </xsl:choose>
|
|
|
+ </system_cache__appinfo:object_modeling_new_by_xml_schema>
|
|
|
+ </xsl:template>
|
|
|
+
|
|
|
+
|
|
|
+ <xsl:template mode="system_cache__appinfo:object_modeling_new_add_xml_schema" match="schema[@targetNamespace=$prototype_object_namespace]" xpath-default-namespace="http://www.w3.org/2001/XMLSchema">
|
|
|
+ <xsl:result-document href="{$template_object.xml_location}">
|
|
|
+ <xsl:element name="xs:schema">
|
|
|
+ <xsl:copy-of select="namespace::node()"/>
|
|
|
+ <xsl:namespace name="{$new_TargetNamespaceBindings_from_Namespace//@NamespacePrefix}" select="$TargetNamespace_from_Bindings//@TargetNamespace"/>
|
|
|
+ <xsl:attribute name="targetNamespace" select="$TargetNamespace_from_Bindings//@TargetNamespace"/>
|
|
|
+ <xsl:variable name="prototype_NamespacePrefix">
|
|
|
+ <xsl:for-each select="namespace::node()">
|
|
|
+ <xsl:if test=".= $prototype_object_namespace">
|
|
|
+ <xsl:value-of select="name()"/>
|
|
|
+ </xsl:if>
|
|
|
+ </xsl:for-each>
|
|
|
+ </xsl:variable>
|
|
|
+
|
|
|
+ <!-- read object from default_db.xml -->
|
|
|
+
|
|
|
+ <xsl:variable name="merge_complexType" select="doc($default_db.xml)//complexType[@name=$NamespaceObjectInstanceTable]/sequence" xpath-default-namespace="http://www.w3.org/2001/XMLSchema"/>
|
|
|
+ <xsl:variable name="schema_merged">
|
|
|
+ <xsl:apply-templates mode="system_cache__appinfo:object_modeling_new_add_xml_schema_root">
|
|
|
+ <xsl:with-param name="merge_complexType" select="$merge_complexType"/>
|
|
|
+ </xsl:apply-templates>
|
|
|
+ </xsl:variable>
|
|
|
+ <xsl:message>#93 default_db.xml object found <xsl:copy-of select="$default_db.xml"/></xsl:message>
|
|
|
+
|
|
|
+ <xsl:apply-templates mode="system_cache__appinfo:new_object_by_prototype_schema_root" select="$schema_merged" >
|
|
|
+ <xsl:with-param name="prototype_TargetNamespaceBindings_from_Namespace" select="$prototype_TargetNamespaceBindings_from_Namespace"/>
|
|
|
+ <xsl:with-param name="new_TargetNamespaceBindings_from_Namespace" select="$new_TargetNamespaceBindings_from_Namespace"/>
|
|
|
+ <xsl:with-param name="prototype_NamespacePrefix" select="$prototype_NamespacePrefix"/>
|
|
|
+ </xsl:apply-templates>
|
|
|
+ </xsl:element>
|
|
|
+ </xsl:result-document>
|
|
|
+ </xsl:template>
|
|
|
+
|
|
|
+
|
|
|
+ <xsl:template mode="system_cache__appinfo:object_modeling_new_add_xml_schema_root" match="complexType" xpath-default-namespace="http://www.w3.org/2001/XMLSchema">
|
|
|
+ <xsl:param name="merge_complexType" required="yes"/>
|
|
|
+ <xsl:element name="{name()}">
|
|
|
+ <xsl:copy-of select="@*"/>
|
|
|
+ <xsl:apply-templates mode="system_cache__appinfo:object_modeling_new_add_xml_schema_child">
|
|
|
+ <xsl:with-param name="merge_complexType" select="$merge_complexType"/>
|
|
|
+ </xsl:apply-templates>
|
|
|
+ </xsl:element>
|
|
|
+ </xsl:template>
|
|
|
+
|
|
|
+ <xsl:template mode="system_cache__appinfo:object_modeling_new_add_xml_schema_root" match="*" xpath-default-namespace="http://www.w3.org/2001/XMLSchema">
|
|
|
+ <xsl:copy-of select="."/>
|
|
|
+ </xsl:template>
|
|
|
+
|
|
|
+ <xsl:template mode="system_cache__appinfo:object_modeling_new_add_xml_schema_child" match="sequence" xpath-default-namespace="http://www.w3.org/2001/XMLSchema">
|
|
|
+ <xsl:param name="merge_complexType" required="yes"/>
|
|
|
+ <xsl:element name="{name()}">
|
|
|
+ <xsl:copy-of select="@*"/>
|
|
|
+ <!--<xsl:apply-templates mode="system_cache__appinfo:object_modeling_new_add_xml_schema_child">
|
|
|
+ <xsl:with-param name="merge_complexType" select="$merge_complexType/sequence"/>
|
|
|
+ </xsl:apply-templates>-->
|
|
|
+ <xsl:for-each select="element" xpath-default-namespace="http://www.w3.org/2001/XMLSchema">
|
|
|
+ <xsl:element name="{name()}">
|
|
|
+ <xsl:copy-of select="@*"/>
|
|
|
+ </xsl:element>
|
|
|
+ </xsl:for-each>
|
|
|
+ <xsl:variable name="current" select="element"/>
|
|
|
+ <xsl:for-each select="$merge_complexType/element" xpath-default-namespace="http://www.w3.org/2001/XMLSchema">
|
|
|
+ <xsl:choose>
|
|
|
+ <xsl:when test="$current[@name = current()/@name]" xpath-default-namespace="http://www.w3.org/2001/XMLSchema">
|
|
|
+ <xsl:message>#140 element <xsl:value-of select="@name"/> already exists!</xsl:message>
|
|
|
+ </xsl:when>
|
|
|
+ <xsl:otherwise>
|
|
|
+ <xsl:element name="{name()}">
|
|
|
+ <xsl:attribute name="name" select="@name"/>
|
|
|
+ <xsl:attribute name="type" select="$merge_complexType/ancestor::node()/simpleType[@name= substring-after(current()/@type,':')]/restriction/@base" xpath-default-namespace="http://www.w3.org/2001/XMLSchema"/>
|
|
|
+ </xsl:element>
|
|
|
+ </xsl:otherwise>
|
|
|
+ </xsl:choose>
|
|
|
+ </xsl:for-each>
|
|
|
+ </xsl:element>
|
|
|
+ </xsl:template>
|
|
|
+
|
|
|
+ <!--<xsl:template mode="system_cache__appinfo:object_modeling_new_add_xml_schema_child" match="element" xpath-default-namespace="http://www.w3.org/2001/XMLSchema">
|
|
|
+ <xsl:param name="merge_complexType" required="yes"/>
|
|
|
+ <xsl:element name="{name()}">
|
|
|
+ <xsl:copy-of select="@*"/>
|
|
|
+ <xsl:for-each select=".">
|
|
|
+ <xsl:element name="{name()}">
|
|
|
+ <xsl:copy-of select="@*"/>
|
|
|
+ </xsl:element>
|
|
|
+ </xsl:for-each>
|
|
|
+
|
|
|
+
|
|
|
+ </xsl:element>
|
|
|
+ </xsl:template>-->
|
|
|
+
|
|
|
+
|
|
|
+</xsl:stylesheet>
|