1*cdf0e10cSrcweir<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 2*cdf0e10cSrcweir<!--*********************************************************************** 3*cdf0e10cSrcweir * 4*cdf0e10cSrcweir DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 5*cdf0e10cSrcweir 6*cdf0e10cSrcweir Copyright 2000, 2010 Oracle and/or its affiliates. 7*cdf0e10cSrcweir 8*cdf0e10cSrcweir OpenOffice.org - a multi-platform office productivity suite 9*cdf0e10cSrcweir 10*cdf0e10cSrcweir This file is part of OpenOffice.org. 11*cdf0e10cSrcweir 12*cdf0e10cSrcweir OpenOffice.org is free software: you can redistribute it and/or modify 13*cdf0e10cSrcweir it under the terms of the GNU Lesser General Public License version 3 14*cdf0e10cSrcweir only, as published by the Free Software Foundation. 15*cdf0e10cSrcweir 16*cdf0e10cSrcweir OpenOffice.org is distributed in the hope that it will be useful, 17*cdf0e10cSrcweir but WITHOUT ANY WARRANTY; without even the implied warranty of 18*cdf0e10cSrcweir MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19*cdf0e10cSrcweir GNU Lesser General Public License version 3 for more details 20*cdf0e10cSrcweir (a copy is included in the LICENSE file that accompanied this code). 21*cdf0e10cSrcweir 22*cdf0e10cSrcweir You should have received a copy of the GNU Lesser General Public License 23*cdf0e10cSrcweir version 3 along with OpenOffice.org. If not, see 24*cdf0e10cSrcweir <http://www.openoffice.org/license.html> 25*cdf0e10cSrcweir for a copy of the LGPLv3 License. 26*cdf0e10cSrcweir 27*cdf0e10cSrcweir ************************************************************************ --> 28*cdf0e10cSrcweir 29*cdf0e10cSrcweir<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 30*cdf0e10cSrcweir xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 31*cdf0e10cSrcweir xmlns:xs="http://www.w3.org/2001/XMLSchema" 32*cdf0e10cSrcweir xmlns:oor="http://openoffice.org/2001/registry" 33*cdf0e10cSrcweir version="1.0"> 34*cdf0e10cSrcweir 35*cdf0e10cSrcweir<!-- Get the correct format --> 36*cdf0e10cSrcweir<xsl:output method="xml" indent="yes"/> 37*cdf0e10cSrcweir<xsl:namespace-alias stylesheet-prefix="xs" result-prefix="xs"></xsl:namespace-alias> 38*cdf0e10cSrcweir 39*cdf0e10cSrcweir<!-- Parameter --> 40*cdf0e10cSrcweir<xsl:param name="root">../registry/schema</xsl:param> 41*cdf0e10cSrcweir<xsl:param name="componentName"/> 42*cdf0e10cSrcweir 43*cdf0e10cSrcweir <xsl:template match = "/"> 44*cdf0e10cSrcweir <xsl:message terminate="no">CHECKING CONSISTENCY ...</xsl:message> 45*cdf0e10cSrcweir <xsl:apply-templates/> 46*cdf0e10cSrcweir </xsl:template> 47*cdf0e10cSrcweir 48*cdf0e10cSrcweir<!-- activate attribute templates --> 49*cdf0e10cSrcweir <xsl:template match="group|set|prop"> 50*cdf0e10cSrcweir <xsl:apply-templates select="*|@*"/> 51*cdf0e10cSrcweir </xsl:template> 52*cdf0e10cSrcweir 53*cdf0e10cSrcweir<!-- make sure that missing features are not invoked --> 54*cdf0e10cSrcweir <xsl:template match = "item"> 55*cdf0e10cSrcweir <xsl:message terminate="yes">ERROR: multiple template types for sets are NOT supported!</xsl:message> 56*cdf0e10cSrcweir </xsl:template> 57*cdf0e10cSrcweir 58*cdf0e10cSrcweir <xsl:template match = "set[@oor:extensible='true']"> 59*cdf0e10cSrcweir <xsl:message terminate="yes">ERROR: extensible sets are currently NOT supported!</xsl:message> 60*cdf0e10cSrcweir </xsl:template> 61*cdf0e10cSrcweir 62*cdf0e10cSrcweir <xsl:template match = "group[@oor:extensible='true']"> 63*cdf0e10cSrcweir <xsl:if test="count(child::set) or count(child::group) or count(child::node-ref)"> 64*cdf0e10cSrcweir <xsl:message terminate="yes">ERROR: extensible groups with children are currently NOT supported!</xsl:message> 65*cdf0e10cSrcweir </xsl:if> 66*cdf0e10cSrcweir <xsl:apply-templates select="*|@*"/> 67*cdf0e10cSrcweir </xsl:template> 68*cdf0e10cSrcweir 69*cdf0e10cSrcweir<!-- Localized info elements (desc/label) are not supported currently --> 70*cdf0e10cSrcweir <xsl:template match="info//*[@xml:lang]"> 71*cdf0e10cSrcweir <xsl:message terminate="yes">ERROR: Info elements (desc/label) are currently not localized. Remove xml:lang attributes!</xsl:message> 72*cdf0e10cSrcweir </xsl:template> 73*cdf0e10cSrcweir 74*cdf0e10cSrcweir<!-- check for duplicate child names --> 75*cdf0e10cSrcweir <xsl:template match="@oor:name"> 76*cdf0e10cSrcweir <xsl:variable name="item-name" select="."/> 77*cdf0e10cSrcweir <xsl:if test="../following-sibling::*[@oor:name = $item-name]"> 78*cdf0e10cSrcweir <xsl:message terminate="yes">ERROR: Duplicate node name '<xsl:value-of select="$item-name"/>'!</xsl:message> 79*cdf0e10cSrcweir </xsl:if> 80*cdf0e10cSrcweir </xsl:template> 81*cdf0e10cSrcweir 82*cdf0e10cSrcweir<!-- check if properties of type 'any' do not have a value --> 83*cdf0e10cSrcweir <xsl:template match="prop[@oor:type='oor:any']"> 84*cdf0e10cSrcweir <xsl:if test="count(value)"> 85*cdf0e10cSrcweir <xsl:message terminate="yes">ERROR: Properties of type 'oor:any' MUST NOT have a value!</xsl:message> 86*cdf0e10cSrcweir </xsl:if> 87*cdf0e10cSrcweir <xsl:apply-templates select="*|@*"/> 88*cdf0e10cSrcweir </xsl:template> 89*cdf0e10cSrcweir 90*cdf0e10cSrcweir<!-- inhibit (explicit) NIL values --> 91*cdf0e10cSrcweir <xsl:template match="value[@xsi:nil]"> 92*cdf0e10cSrcweir <xsl:message terminate="yes">ERROR: xsi:nil is not allowed in schemas !</xsl:message> 93*cdf0e10cSrcweir </xsl:template> 94*cdf0e10cSrcweir 95*cdf0e10cSrcweir<!-- validate for correct node references --> 96*cdf0e10cSrcweir <xsl:template match="@oor:node-type"> 97*cdf0e10cSrcweir <xsl:choose> 98*cdf0e10cSrcweir <xsl:when test="../@oor:component"> 99*cdf0e10cSrcweir <xsl:variable name ="file"> 100*cdf0e10cSrcweir <xsl:call-template name="locateFile"><xsl:with-param name="componentName" select="../@oor:component"/></xsl:call-template> 101*cdf0e10cSrcweir </xsl:variable> 102*cdf0e10cSrcweir <xsl:if test="not(document($file)/oor:component-schema/templates/*[@oor:name=current()])"> 103*cdf0e10cSrcweir <xsl:message terminate="yes">ERROR: node-type '<xsl:value-of select="current()"/>' not found!</xsl:message> 104*cdf0e10cSrcweir </xsl:if> 105*cdf0e10cSrcweir </xsl:when> 106*cdf0e10cSrcweir <xsl:when test="not(/oor:component-schema/templates/*[@oor:name=current()])"> 107*cdf0e10cSrcweir <xsl:message terminate="yes">ERROR: node-type '<xsl:value-of select="current()"/>' not found!</xsl:message> 108*cdf0e10cSrcweir </xsl:when> 109*cdf0e10cSrcweir </xsl:choose> 110*cdf0e10cSrcweir </xsl:template> 111*cdf0e10cSrcweir 112*cdf0e10cSrcweir<!-- validate if file name matches component-name --> 113*cdf0e10cSrcweir <xsl:template match="oor:component-schema"> 114*cdf0e10cSrcweir <xsl:variable name ="fullName"><xsl:value-of select="@oor:package"/>.<xsl:value-of select="@oor:name"/></xsl:variable> 115*cdf0e10cSrcweir <xsl:if test="$fullName != $componentName"> 116*cdf0e10cSrcweir <xsl:message terminate="yes">ERROR: Component name '<xsl:value-of select="$fullName"/>' does not match with file name!</xsl:message> 117*cdf0e10cSrcweir </xsl:if> 118*cdf0e10cSrcweir <xsl:apply-templates select="*|@*"/> 119*cdf0e10cSrcweir </xsl:template> 120*cdf0e10cSrcweir 121*cdf0e10cSrcweir 122*cdf0e10cSrcweir<!-- locate a component file --> 123*cdf0e10cSrcweir <xsl:template name="locateFile"> 124*cdf0e10cSrcweir <xsl:param name="componentName"/> 125*cdf0e10cSrcweir <xsl:variable name ="file"><xsl:value-of select="$root"/>/<xsl:value-of select="translate($componentName,'.','/')"/>.xcs</xsl:variable> 126*cdf0e10cSrcweir <xsl:if test="not( document($file) )"> 127*cdf0e10cSrcweir <xsl:message terminate ="yes">**Error: unable to locate document '<xsl:value-of select="translate($componentName,'.','/')"/>.xcd'</xsl:message> 128*cdf0e10cSrcweir </xsl:if> 129*cdf0e10cSrcweir <xsl:value-of select="$file"/> 130*cdf0e10cSrcweir </xsl:template> 131*cdf0e10cSrcweir 132*cdf0e10cSrcweir</xsl:transform> 133