source: Sophya/trunk/ArchTOIPipe/TestPipes/xsl/makeDTDConnect.xsl@ 2240

Last change on this file since 2240 was 2220, checked in by aubourg, 23 years ago

vf_231002

File size: 3.2 KB
Line 
1<?xml version="1.0"?>
2<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
3
4<xsl:output method="text" omit-xml-declaration="no" indent="no"/>
5<xsl:strip-space elements="*"/>
6
7<xsl:template match="processors">
8
9 <xsl:variable name="lstproc">
10 <xsl:for-each select="processor">
11 <xsl:value-of select="@name"/>
12 <xsl:if test="last() > position()"> | </xsl:if>
13 </xsl:for-each>
14 </xsl:variable>
15
16 <xsl:variable name="lstinput">
17 <xsl:for-each select="//input">
18 <xsl:value-of select="@name"/>
19 <xsl:if test="last() > position()"> | </xsl:if>
20 </xsl:for-each>
21 </xsl:variable>
22
23 <xsl:variable name="lstoutput">
24 <xsl:for-each select="//output">
25 <xsl:value-of select="@name"/>
26 <xsl:if test="last() > position()"> | </xsl:if>
27 </xsl:for-each>
28 </xsl:variable>
29
30 <xsl:text>
31 &lt;!ELEMENT connect EMPTY>
32 <!-- &lt;!ATTLIST connect input ( </xsl:text><xsl:value-of select="$lstinput"/><xsl:text> ) #REQUIRED> -->
33 &lt;!ATTLIST connect input NMTOKEN #REQUIRED>
34 &lt;!ATTLIST connect name NMTOKEN #REQUIRED>
35 <!-- &lt;!ATTLIST connect output ( </xsl:text><xsl:value-of select="$lstoutput"/><xsl:text> ) #REQUIRED> -->
36 &lt;!ATTLIST connect output NMTOKEN #REQUIRED>
37 </xsl:text>
38 <xsl:text>
39 &lt;!ATTLIST connect procin NMTOKEN #REQUIRED>
40 &lt;!ATTLIST connect procout NMTOKEN #REQUIRED>
41
42 &lt;!ELEMENT constraint EMPTY>
43 &lt;!ATTLIST constraint max NMTOKEN #REQUIRED>
44 &lt;!ATTLIST constraint min NMTOKEN #REQUIRED>
45 &lt;!ATTLIST constraint proc NMTOKEN #REQUIRED>
46
47 &lt;!ELEMENT start EMPTY>
48
49 &lt;!ELEMENT toipipe ( (</xsl:text><xsl:value-of select="$lstproc"/><xsl:text> | connect | constraint | start )* )>
50 &lt;!ATTLIST toipipe name NMTOKEN #IMPLIED>
51 </xsl:text>
52
53 <!-- recherche des processeurs -->
54 <xsl:apply-templates/>
55 <xsl:text>
56
57 </xsl:text>
58</xsl:template>
59
60
61<xsl:template match="processor">
62
63 <xsl:variable name="nomproc" select="@name"/>
64
65 <!-- liste des methodes -->
66 <xsl:variable name="lstmethod">
67 <xsl:for-each select="attribute">
68 <xsl:value-of select="@name"/>
69 <xsl:if test="last() > position()"> | </xsl:if>
70 </xsl:for-each>
71 </xsl:variable>
72
73 <!-- sortie -->
74 <xsl:if test="$lstmethod=''">
75 <xsl:text>
76 &lt;!ELEMENT </xsl:text><xsl:value-of select="$nomproc"/><xsl:text> EMPTY></xsl:text>
77 </xsl:if>
78 <xsl:if test="$lstmethod!=''">
79 <xsl:text>
80
81 &lt;!ELEMENT </xsl:text><xsl:value-of select="$nomproc"/><xsl:text> ( (</xsl:text><xsl:value-of select="$lstmethod"/><xsl:text>)* )></xsl:text>
82 </xsl:if>
83 <xsl:text>
84 &lt;!ATTLIST </xsl:text><xsl:value-of select="$nomproc"/><xsl:text> id NMTOKEN #REQUIRED></xsl:text>
85
86 <xsl:for-each select="init/param">
87 <xsl:text>
88 &lt;!ATTLIST </xsl:text><xsl:value-of select="$nomproc"/><xsl:text> </xsl:text><xsl:value-of select="@name"/><xsl:text> NMTOKEN #IMPLIED></xsl:text>
89 </xsl:for-each>
90
91 <!-- recherche des attributs -->
92 <xsl:apply-templates/>
93
94</xsl:template>
95
96<xsl:template match="attribute">
97
98 <xsl:variable name="nomatt" select="@name"/>
99
100 <xsl:text>
101 &lt;!ELEMENT </xsl:text><xsl:value-of select="$nomatt"/><xsl:text> EMPTY></xsl:text>
102
103 <xsl:for-each select="param">
104 <xsl:text>
105 &lt;!ATTLIST </xsl:text><xsl:value-of select="$nomatt"/><xsl:text> </xsl:text><xsl:value-of select="@name"/><xsl:text> NMTOKEN #IMPLIED>
106 </xsl:text>
107 </xsl:for-each>
108
109</xsl:template>
110
111</xsl:stylesheet>
112
113
114
115
116
117
118
119
120
121
122
Note: See TracBrowser for help on using the repository browser.