Annotation of modules/damieng/schema_documentation/XMLSchema.xsl, revision 1.1
1.1 ! damieng 1: <?xml version="1.0" encoding='UTF-8' ?>
! 2:
! 3: <xsl:stylesheet version="1.0"
! 4: xmlns:xs="http://www.w3.org/2001/XMLSchema"
! 5: xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
! 6: exclude-result-prefixes="xs">
! 7:
! 8: <xsl:output method="html" indent="yes"
! 9: doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"/>
! 10:
! 11: <xsl:param name="jaxe-uri-xsl"/>
! 12: <xsl:variable name="uri-xsl"><xsl:call-template name="rep-uri"><xsl:with-param name="chemin" select="$jaxe-uri-xsl"/></xsl:call-template></xsl:variable>
! 13: <xsl:variable name="langue"><xsl:choose>
! 14: <xsl:when test="/xs:schema/@xml:lang"><xsl:value-of select="translate(/xs:schema/@xml:lang, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')"/></xsl:when>
! 15: <xsl:otherwise>fr</xsl:otherwise>
! 16: </xsl:choose></xsl:variable>
! 17: <xsl:variable name="messages" select="document(concat($uri-xsl, '/XMLSchema_messages_', $langue, '.xml'))/messages"/>
! 18:
! 19: <xsl:template match="xs:schema">
! 20: <html>
! 21: <head>
! 22: <title><xsl:value-of select="$messages/message[@label='Schéma XML']"/></title>
! 23: <style type="text/css">
! 24: body { color: #000000; background: #FFFFFF }
! 25: .documentation { font-family: monospace; color: #005500; white-space: pre-line }
! 26: .grandlien { font-size: 120%; font-weight: bold }
! 27: .nomtitre { color: #550000 }
! 28: .nomattribut { color: #000055; font-weight: bold }
! 29: .indentation { margin-left: 2em; margin-top: 1em; margin-bottom: 1em }
! 30: </style>
! 31: </head>
! 32: <body>
! 33: <div align="center">
! 34: <h1><xsl:value-of select="$messages/message[@label='Schéma XML']"/></h1>
! 35: </div>
! 36: <br/>
! 37: <span class="grandlien">
! 38: <a href="#index"><xsl:value-of select="$messages/message[@label='Aller à l index']"/></a><br/>
! 39: </span>
! 40: <hr/>
! 41: <xsl:apply-templates/>
! 42: <br/>
! 43: <a name="index"/>
! 44: <h3><xsl:value-of select="$messages/message[@label='Index']"/></h3>
! 45: <xsl:for-each select="//*[local-name()!='attribute' and @name!='']">
! 46: <xsl:sort select="@name"/>
! 47: <xsl:variable name="numero" select="count(preceding::*[@name=current()/@name])"/>
! 48: <xsl:variable name="total" select="count(//*[@name=current()/@name])"/>
! 49: <a href="#{@name}_{$numero}"><xsl:value-of select="@name"/></a>
! 50: <xsl:if test="$total > 1 and ancestor::*[@name!=''][1]">
! 51: (<xsl:value-of select="$messages/message[@label='sous']"/><xsl:text> </xsl:text><xsl:value-of select="ancestor::*[@name!=''][1]/@name"/>)
! 52: </xsl:if>
! 53: <br/>
! 54: </xsl:for-each>
! 55: </body>
! 56: </html>
! 57: </xsl:template>
! 58:
! 59: <xsl:template match="xs:element">
! 60: <xsl:choose>
! 61: <xsl:when test="@ref">
! 62: <xsl:variable name="localref">
! 63: <xsl:choose>
! 64: <xsl:when test="contains(@ref,':')">
! 65: <xsl:value-of select="substring-after(@ref,':')"/>
! 66: </xsl:when>
! 67: <xsl:otherwise>
! 68: <xsl:value-of select="@ref"/>
! 69: </xsl:otherwise>
! 70: </xsl:choose>
! 71: </xsl:variable>
! 72: <xsl:variable name="numero">
! 73: <xsl:for-each select="/xs:schema/xs:element[@name=$localref][1]">
! 74: <xsl:value-of select="count(preceding::*[@name=current()/@name])"/>
! 75: </xsl:for-each>
! 76: </xsl:variable>
! 77: <a href="#{$localref}_{$numero}"><xsl:value-of select="@ref"/></a>
! 78: <br/>
! 79: </xsl:when>
! 80: <xsl:otherwise>
! 81: <xsl:variable name="numero"><xsl:value-of select="count(preceding::*[@name=current()/@name])"/></xsl:variable>
! 82: <a name="{@name}_{$numero}"/>
! 83: <h3><xsl:value-of select="$messages/message[@label='Elément']"/><xsl:text> </xsl:text><span class="nomtitre"><xsl:value-of select="@name"/></span></h3>
! 84: <xsl:if test="@type">
! 85: <xsl:value-of select="$messages/message[@label='type:']"/><xsl:text> </xsl:text><xsl:call-template name="nomtype"/><br/>
! 86: </xsl:if>
! 87: <xsl:apply-templates/>
! 88: <br/>
! 89: <xsl:if test="parent::xs:schema">
! 90: <xsl:for-each select="//xs:element[.//xs:element[@ref=current()/@name or substring-after(@ref,':')=current()/@name]] | //xs:group[.//xs:element[@ref=current()/@name or substring-after(@ref,':')=current()/@name]]">
! 91: <xsl:if test="position() = 1">
! 92: <xsl:value-of select="$messages/message[@label='Parents:']"/>
! 93: </xsl:if>
! 94: <xsl:if test="position() != 1">, </xsl:if>
! 95: <xsl:variable name="numero2"><xsl:value-of select="count(preceding::*[@name=current()/@name])"/></xsl:variable>
! 96: <a href="#{@name}_{$numero2}"><xsl:value-of select="@name"/></a>
! 97: </xsl:for-each>
! 98: <br/>
! 99: </xsl:if>
! 100: <xsl:if test="not(ancestor::xs:choice or ancestor::xs:sequence)">
! 101: <hr/>
! 102: </xsl:if>
! 103: </xsl:otherwise>
! 104: </xsl:choose>
! 105: </xsl:template>
! 106:
! 107: <xsl:template match="xs:group">
! 108: <xsl:choose>
! 109: <xsl:when test="@ref">
! 110: <xsl:variable name="localref">
! 111: <xsl:choose>
! 112: <xsl:when test="contains(@ref,':')">
! 113: <xsl:value-of select="substring-after(@ref,':')"/>
! 114: </xsl:when>
! 115: <xsl:otherwise>
! 116: <xsl:value-of select="@ref"/>
! 117: </xsl:otherwise>
! 118: </xsl:choose>
! 119: </xsl:variable>
! 120: <xsl:variable name="numero">
! 121: <xsl:for-each select="/xs:schema/xs:group[@name=$localref][1]">
! 122: <xsl:value-of select="count(preceding::*[@name=current()/@name])"/>
! 123: </xsl:for-each>
! 124: </xsl:variable>
! 125: <a href="#{$localref}_{$numero}"><xsl:value-of select="@ref"/></a>
! 126: <br/>
! 127: </xsl:when>
! 128: <xsl:otherwise>
! 129: <xsl:variable name="numero" select="count(preceding::*[@name=current()/@name])"/>
! 130: <a name="{@name}_{$numero}"/>
! 131: <h3><xsl:value-of select="$messages/message[@label='Groupe']"/><xsl:text> </xsl:text><span class="nomtitre"><xsl:value-of select="@name"/></span></h3>
! 132: <xsl:apply-templates/>
! 133: <br/>
! 134: <xsl:for-each select="//xs:element[.//xs:group[@ref=current()/@name or substring-after(@ref,':')=current()/@name]] | //xs:group[.//xs:group[@ref=current()/@name or substring-after(@ref,':')=current()/@name]]">
! 135: <xsl:if test="position() = 1">
! 136: <xsl:value-of select="$messages/message[@label='Parents:']"/>
! 137: </xsl:if>
! 138: <xsl:if test="position() != 1">, </xsl:if>
! 139: <xsl:variable name="numero2"><xsl:value-of select="count(preceding::*[@name=current()/@name])"/></xsl:variable>
! 140: <a href="#{@name}_{$numero2}"><xsl:value-of select="@name"/></a>
! 141: </xsl:for-each>
! 142: <br/>
! 143: <hr/>
! 144: </xsl:otherwise>
! 145: </xsl:choose>
! 146: </xsl:template>
! 147:
! 148: <xsl:template match="xs:documentation">
! 149: <div class="documentation"><xsl:value-of select="."/></div>
! 150: <br/>
! 151: </xsl:template>
! 152:
! 153: <xsl:template match="xs:choice">
! 154: <xsl:value-of select="$messages/message[@label='Choix parmi:']"/>
! 155: <ul>
! 156: <xsl:for-each select="*">
! 157: <li><xsl:apply-templates select="."/></li>
! 158: </xsl:for-each>
! 159: </ul>
! 160: </xsl:template>
! 161:
! 162: <xsl:template match="xs:sequence">
! 163: <xsl:value-of select="$messages/message[@label='Séquence parmi:']"/>
! 164: <ul>
! 165: <xsl:for-each select="*">
! 166: <li><xsl:apply-templates select="."/></li>
! 167: </xsl:for-each>
! 168: </ul>
! 169: </xsl:template>
! 170:
! 171: <xsl:template match="xs:complexType">
! 172: <!--Type complexe-->
! 173: <xsl:if test="@name">
! 174: <xsl:variable name="numero" select="count(preceding::*[@name=current()/@name])"/>
! 175: <a name="{@name}_{$numero}"/>
! 176: <h3><xsl:value-of select="$messages/message[@label='Type complexe']"/><xsl:text> </xsl:text><span class="nomtitre"><xsl:value-of select="@name"/></span></h3>
! 177: </xsl:if>
! 178: <xsl:if test="@ref">
! 179: <xsl:variable name="numero" select="count(preceding::*[@name=current()/@name])"/>
! 180: <a href="{@ref}_{$numero}"><xsl:value-of select="@ref"/></a><br/>
! 181: </xsl:if>
! 182: <xsl:if test="@mixed='true'">
! 183: <xsl:value-of select="$messages/message[@label='Peut contenir du texte']"/><br/>
! 184: </xsl:if>
! 185: <div class="indentation">
! 186: <xsl:apply-templates/>
! 187: </div>
! 188: <xsl:if test="@name">
! 189: <hr/>
! 190: </xsl:if>
! 191: </xsl:template>
! 192:
! 193: <xsl:template match="xs:attribute">
! 194: <xsl:value-of select="$messages/message[@label='Attribut']"/><xsl:text> </xsl:text><span class="nomattribut"><xsl:value-of select="@name"/></span>:
! 195: <div class="indentation">
! 196: <xsl:choose>
! 197: <xsl:when test="@use='required'">
! 198: <xsl:value-of select="$messages/message[@label='obligatoire']"/><br/>
! 199: </xsl:when>
! 200: <xsl:otherwise>
! 201: <xsl:value-of select="$messages/message[@label='facultatif']"/><br/>
! 202: </xsl:otherwise>
! 203: </xsl:choose>
! 204: <xsl:if test="@type">
! 205: <xsl:value-of select="$messages/message[@label='type:']"/><xsl:text> </xsl:text><xsl:call-template name="nomtype"/><br/>
! 206: </xsl:if>
! 207: <xsl:apply-templates/>
! 208: </div>
! 209: </xsl:template>
! 210:
! 211: <xsl:template match="xs:simpleType">
! 212: <xsl:choose>
! 213: <xsl:when test="@name!=''">
! 214: <xsl:variable name="numero" select="count(preceding::*[@name=current()/@name])"/>
! 215: <a name="{@name}_{$numero}"/>
! 216: <h3><xsl:value-of select="$messages/message[@label='Type simple']"/><xsl:text> </xsl:text><span class="nomtitre"><xsl:value-of select="@name"/></span></h3>
! 217: <xsl:apply-templates/>
! 218: <hr/>
! 219: </xsl:when>
! 220: <xsl:otherwise>
! 221: <xsl:apply-templates/>
! 222: </xsl:otherwise>
! 223: </xsl:choose>
! 224: </xsl:template>
! 225:
! 226: <xsl:template match="xs:restriction">
! 227: <xsl:value-of select="$messages/message[@label='Restriction des valeurs']"/>
! 228: <xsl:if test="@base!=''">
! 229: <xsl:text> </xsl:text>
! 230: <xsl:value-of select="$messages/message[@label='basée sur']"/>
! 231: <xsl:text> </xsl:text>
! 232: <xsl:value-of select="@base"/>
! 233: </xsl:if>
! 234: <xsl:if test="*">
! 235: <ul>
! 236: <xsl:apply-templates/>
! 237: </ul>
! 238: </xsl:if>
! 239: </xsl:template>
! 240:
! 241: <xsl:template match="xs:enumeration">
! 242: <li><tt><xsl:value-of select="@value"/></tt></li>
! 243: </xsl:template>
! 244:
! 245: <xsl:template match="xs:pattern">
! 246: <li><tt><xsl:value-of select="@value"/></tt></li>
! 247: </xsl:template>
! 248:
! 249: <xsl:template match="xs:minInclusive">
! 250: <li><tt>>= <xsl:value-of select="@value"/></tt></li>
! 251: </xsl:template>
! 252:
! 253: <xsl:template match="xs:minExclusive">
! 254: <li><tt>> <xsl:value-of select="@value"/></tt></li>
! 255: </xsl:template>
! 256:
! 257: <xsl:template match="xs:maxInclusive">
! 258: <li><tt><= <xsl:value-of select="@value"/></tt></li>
! 259: </xsl:template>
! 260:
! 261: <xsl:template match="xs:maxExclusive">
! 262: <li><tt>< <xsl:value-of select="@value"/></tt></li>
! 263: </xsl:template>
! 264:
! 265: <xsl:template match="xs:attributeGroup">
! 266: <xsl:choose>
! 267: <xsl:when test="@ref">
! 268: <xsl:variable name="localref">
! 269: <xsl:choose>
! 270: <xsl:when test="contains(@ref,':')">
! 271: <xsl:value-of select="substring-after(@ref,':')"/>
! 272: </xsl:when>
! 273: <xsl:otherwise>
! 274: <xsl:value-of select="@ref"/>
! 275: </xsl:otherwise>
! 276: </xsl:choose>
! 277: </xsl:variable>
! 278: <xsl:variable name="numero">
! 279: <xsl:for-each select="/xs:schema/xs:attributeGroup[@name=$localref][1]">
! 280: <xsl:value-of select="count(preceding::*[@name=current()/@name])"/>
! 281: </xsl:for-each>
! 282: </xsl:variable>
! 283: <a href="#{$localref}_{$numero}"><xsl:value-of select="@ref"/></a>
! 284: <br/>
! 285: <br/>
! 286: </xsl:when>
! 287: <xsl:otherwise>
! 288: <xsl:variable name="numero" select="count(preceding::*[@name=current()/@name])"/>
! 289: <a name="{@name}_{$numero}"/>
! 290: <h3><xsl:value-of select="$messages/message[@label='Groupe d attributs:']"/><xsl:text> </xsl:text><span class="nomtitre"><xsl:value-of select="@name"/></span></h3>
! 291: <xsl:apply-templates/>
! 292: <br/>
! 293: <xsl:for-each select="//xs:element[.//xs:attributeGroup[@ref=current()/@name or substring-after(@ref,':')=current()/@name]] | //xs:attributeGroup[.//xs:attributeGroup[@ref=current()/@name or substring-after(@ref,':')=current()/@name]] | //xs:complexType[.//xs:attributeGroup[@ref=current()/@name or substring-after(@ref,':')=current()/@name] and @name]">
! 294: <xsl:if test="position() = 1">
! 295: <xsl:value-of select="$messages/message[@label='Parents:']"/>
! 296: </xsl:if>
! 297: <xsl:if test="position() != 1">, </xsl:if>
! 298: <xsl:variable name="numero2"><xsl:value-of select="count(preceding::*[@name=current()/@name])"/></xsl:variable>
! 299: <a href="#{@name}_{$numero2}"><xsl:value-of select="@name"/></a>
! 300: </xsl:for-each>
! 301: <br/>
! 302: <hr/>
! 303: </xsl:otherwise>
! 304: </xsl:choose>
! 305: </xsl:template>
! 306:
! 307: <xsl:template name="nomtype">
! 308: <xsl:variable name="localType">
! 309: <xsl:choose>
! 310: <xsl:when test="contains(@type,':')">
! 311: <xsl:value-of select="substring-after(@type,':')"/>
! 312: </xsl:when>
! 313: <xsl:otherwise>
! 314: <xsl:value-of select="@type"/>
! 315: </xsl:otherwise>
! 316: </xsl:choose>
! 317: </xsl:variable>
! 318: <xsl:choose>
! 319: <xsl:when test="/xs:schema/xs:simpleType[@name=$localType]|/xs:schema/xs:complexType[@name=$localType]">
! 320: <xsl:for-each select="/xs:schema/xs:simpleType[@name=$localType]|/xs:schema/xs:complexType[@name=$localType]">
! 321: <xsl:variable name="numero" select="count(preceding::*[@name=current()/@name])"/>
! 322: <a href="#{@name}_{$numero}"><xsl:value-of select="@name"/></a>
! 323: </xsl:for-each>
! 324: </xsl:when>
! 325: <xsl:otherwise>
! 326: <tt><xsl:value-of select="@type"/></tt>
! 327: </xsl:otherwise>
! 328: </xsl:choose>
! 329: </xsl:template>
! 330:
! 331: <xsl:template name="rep-uri">
! 332: <!-- renvoit le chemin du répertoire d'un fichier à partir de l'URI complète, sous forme d'URI -->
! 333: <xsl:param name="chemin"/>
! 334: <!-- séparateur de chemins ( normalement / mais parfois \ avec file:// sur Windows ? ) -->
! 335: <xsl:variable name="sepuri"><xsl:choose>
! 336: <xsl:when test="contains($chemin, '\')">\</xsl:when>
! 337: <xsl:otherwise>/</xsl:otherwise>
! 338: </xsl:choose></xsl:variable>
! 339: <xsl:choose>
! 340: <xsl:when test="contains($chemin,$sepuri) and contains(substring-after($chemin,$sepuri),$sepuri)">
! 341: <xsl:value-of select="substring-before($chemin,$sepuri)"/><xsl:value-of select="$sepuri"/><xsl:call-template name="rep-uri"><xsl:with-param name="chemin" select="substring-after($chemin,$sepuri)"/></xsl:call-template>
! 342: </xsl:when>
! 343: <xsl:otherwise>
! 344: <xsl:value-of select="substring-before($chemin,$sepuri)"/>
! 345: </xsl:otherwise>
! 346: </xsl:choose>
! 347: </xsl:template>
! 348:
! 349: </xsl:stylesheet>
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>