Kaydet (Commit) 886a7b6d authored tarafından Miklos Vajna's avatar Miklos Vajna

writerfilter: unused checkmodel.xsl

This could be useful actually, except that it raises so many warnings
for ~any version of model.xml (and we assume the current version is more
or less working), that I think in its current form it's useless.

Change-Id: Ia9923256f1db0fd15930833fc843a7348613821d
üst 2f531243
<!--
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
-->
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:rng="http://relaxng.org/ns/structure/1.0"
xml:space="default" xml:indent="true">
<xsl:output method="text" />
<xsl:template name="noannotation">
<xsl:for-each select="//namespace">
<xsl:variable name="nsname" select="@name"/>
<xsl:value-of select="./rng:grammar/@ns"/>
<xsl:text>&#xa;</xsl:text>
<xsl:for-each select=".//rng:define">
<xsl:variable name="name" select="@name"/>
<xsl:if test="not(ancestor::namespace//resource[@name=$name])">
<xsl:text>noannotation: </xsl:text>
<xsl:value-of select="$nsname"/>
<xsl:text>::</xsl:text>
<xsl:value-of select="$name"/>
<xsl:text>&#xa;</xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
<xsl:template name="checkmodel">
<xsl:for-each select="//namespace">
<xsl:variable name="nsname" select="@name"/>
<xsl:for-each select=".//rng:define">
<xsl:call-template name="orphanedprops"/>
<xsl:variable name="definename" select="@name"/>
<xsl:if test="not(ancestor::namespace//resource[@name=$definename])">
<xsl:text>no annotation: </xsl:text>
<xsl:value-of select="$nsname"/>
<xsl:text>::</xsl:text>
<xsl:value-of select="$definename"/>
<xsl:text>&#xa;</xsl:text>
</xsl:if>
<xsl:for-each select=".//rng:element">
<xsl:variable name="elementname" select="@name"/>
<xsl:for-each select="ancestor::namespace//resource[@name=$definename and @resource='Properties']">
<xsl:if test="not(.//element[@name=$elementname])">
<xsl:text>missing element: </xsl:text>
<xsl:value-of select="$nsname"/>
<xsl:text>::</xsl:text>
<xsl:value-of select="$definename"/>
<xsl:text>::</xsl:text>
<xsl:value-of select="$elementname"/>
<xsl:text>&#xa;</xsl:text>
</xsl:if>
<xsl:call-template name="orphanedprops"/>
</xsl:for-each>
</xsl:for-each>
<xsl:for-each select=".//rng:attribute">
<xsl:variable name="attributename" select="@name"/>
<xsl:for-each select="ancestor::namespace//resource[@name=$definename and @resource='Properties']">
<xsl:if test="not(.//attribute[@name=$attributename])">
<xsl:text>missing attribute: </xsl:text>
<xsl:value-of select="$nsname"/>
<xsl:text>::</xsl:text>
<xsl:value-of select="$definename"/>
<xsl:text>::</xsl:text>
<xsl:value-of select="$attributename"/>
<xsl:text>&#xa;</xsl:text>
</xsl:if>
<xsl:call-template name="orphanedprops"/>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
<xsl:key name="defines-with-name" match="rng:define" use="@name"/>
<xsl:template name="defineforref">
<xsl:variable name="grammarid" select="generate-id(ancestor::grammar)"/>
<xsl:variable name="defineingrammar" select="key('defines-with-name', @name)[generate-id(ancestor::grammar) = $grammarid]"/>
<xsl:choose>
<xsl:when test="$defineingrammar">
<xsl:value-of select="$defineingrammar"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="key('defines-with-name', @name)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="contextresource">
<xsl:variable name="name" select="@name"/>
<xsl:value-of select="ancestor::namespace//resource[@name=$name]/@resource"/>
</xsl:template>
<xsl:template name="orphanedprops">
<xsl:variable name="nsname" select="ancestor::namespace/@name"/>
<xsl:for-each select=".//rng:ref[not (ancestor::rng:element or ancestor::rng:attribute)]">
<xsl:variable name="defineresource">
<xsl:for-each select="ancestor::rng:define">
<xsl:call-template name="contextresource"/>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="definename" select="ancestor::rng:define/@name"/>
<xsl:variable name="mydefine">
<xsl:copy>
<xsl:call-template name="defineforref"/>
</xsl:copy>
</xsl:variable>
<xsl:variable name="myresource">
<xsl:call-template name="contextresource"/>
</xsl:variable>
<xsl:if test="$myresource = 'Properties'">
<xsl:choose>
<xsl:when test="$defineresource = 'Properties'"/>
<xsl:when test="$defineresource = 'Stream'"/>
<xsl:otherwise>
<xsl:text>orphaned properties: </xsl:text>
<xsl:value-of select="$nsname"/>
<xsl:text>:</xsl:text>
<xsl:value-of select="$definename"/>
<xsl:text>(</xsl:text>
<xsl:value-of select="$defineresource"/>
<xsl:text>)-&gt;</xsl:text>
<xsl:value-of select="@name"/>
<xsl:text>(</xsl:text>
<xsl:value-of select="$myresource"/>
<xsl:text>)&#xa;</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:for-each>
</xsl:template>
<xsl:template match="/">
<out>
<xsl:call-template name="checkmodel"/>
</out>
</xsl:template>
</xsl:stylesheet>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment