diff options
author | David Tardon <dtardon@redhat.com> | 2012-04-07 12:08:19 +0200 |
---|---|---|
committer | David Tardon <dtardon@redhat.com> | 2012-05-29 07:24:55 +0200 |
commit | c199ce6d62c91d72eb7a038efea504b6de644406 (patch) | |
tree | 8507239beed26c2e60dea18a1ee30795d03bc10e | |
parent | 9b530e1a1eab7f33873952512d73aea02ac6b275 (diff) |
allow to set extra (global) schema root
-rwxr-xr-x | officecfg/util/schema_val.xsl | 23 | ||||
-rw-r--r-- | solenv/gbuild/Configuration.mk | 15 |
2 files changed, 35 insertions, 3 deletions
diff --git a/officecfg/util/schema_val.xsl b/officecfg/util/schema_val.xsl index 04342e7299a5..1ae2ff7abc64 100755 --- a/officecfg/util/schema_val.xsl +++ b/officecfg/util/schema_val.xsl @@ -38,6 +38,7 @@ <!-- Parameter --> <xsl:param name="root">../registry/schema</xsl:param> +<xsl:param name="schemaRoot"/> <xsl:param name="componentName"/> <xsl:template match = "/"> @@ -121,9 +122,25 @@ <!-- locate a component file --> <xsl:template name="locateFile"> <xsl:param name="componentName"/> - <xsl:variable name ="file"><xsl:value-of select="$root"/>/<xsl:value-of select="translate($componentName,'.','/')"/>.xcs</xsl:variable> - <xsl:if test="not( document($file) )"> - <xsl:message terminate ="yes">**Error: unable to locate document '<xsl:value-of select="translate($componentName,'.','/')"/>.xcd'</xsl:message> + <xsl:variable name="path"><xsl:value-of select="translate($componentName,'.','/')"/>.xcs</xsl:variable> + <xsl:variable name ="file"> + <xsl:variable name ="tryfile" select="concat($root,'/',$path)"/> + <xsl:choose> + <xsl:when test="document($tryfile)"> + <xsl:value-of select="$tryfile"/> + </xsl:when> + <xsl:otherwise> + <xsl:if test="$schemaRoot"> + <xsl:variable name="globalfile" select="concat($schemaRoot,'/',$path)"/> + <xsl:if test="document($globalfile)"> + <xsl:value-of select="$globalfile"/> + </xsl:if> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="not($file)"> + <xsl:message terminate ="yes">**Error: unable to locate document '<xsl:value-of select="$path"/>'</xsl:message> </xsl:if> <xsl:value-of select="$file"/> </xsl:template> diff --git a/solenv/gbuild/Configuration.mk b/solenv/gbuild/Configuration.mk index bbe388445289..b6f51c910fc4 100644 --- a/solenv/gbuild/Configuration.mk +++ b/solenv/gbuild/Configuration.mk @@ -78,6 +78,7 @@ $(call gb_Helper_abbreviate_dirs,\ --noout \ --stringparam componentName $(subst /,.,$(basename $(XCSFILE))) \ --stringparam root $(subst $(XCSFILE),,$(3)) \ + $(if $(SCHEMA_ROOT),--stringparam schemaRoot $(SCHEMA_ROOT)) \ $(gb_XcsTarget_XSLT_SchemaVal) \ $(3) && \ $(gb_XSLTPROC) --nonet \ @@ -348,6 +349,9 @@ $(foreach lang,$(gb_Configuration_LANGS),$(eval \ $(foreach lang,$(gb_Configuration_LANGS),$(eval \ $(call gb_Configuration_get_clean_target,$(1)) : \ $(call gb_Zip_get_clean_target,$(1)_$(lang)))) + +$(call gb_Configuration_get_target,$(1)) : SCHEMA_ROOT := + $$(eval $$(call gb_Module_register_target,$(call gb_Configuration_get_target,$(1)),$(call gb_Configuration_get_clean_target,$(1)))) endef @@ -493,4 +497,15 @@ $(foreach xcu,$(3),$(call gb_Configuration_add_localized_data,$(1),$(2),$(xcu))) endef +# Set extra registry this configuration can use schemas from. +# +# Example: +# # foo needs schemas from the main configuration +# $(eval $(call gb_Configuration_use_configuration,foo,officecfg)) +define gb_Configuration_use_configuration +$(call gb_Configuration_get_target,$(1)) : $(call gb_Configuration_get_target,$(2)) +$(call gb_Configuration_get_target,$(1)) : SCHEMA_ROOT := $(gb_Configuration_registry)/schema + +endef + # vim: set noet sw=4 ts=4: |