Mercurial > pub > ModelGenerator
comparison xslt/model.xsl @ 7:3fe157be5141
sync
| author | cin |
|---|---|
| date | Tue, 06 Mar 2018 19:27:25 +0300 |
| parents | 1f4009d4afb6 |
| children | 5fe2e5724331 |
comparison
equal
deleted
inserted
replaced
| 6:1f4009d4afb6 | 7:3fe157be5141 |
|---|---|
| 165 <xsl:with-param name="type" select="$type"/> | 165 <xsl:with-param name="type" select="$type"/> |
| 166 <xsl:with-param name="scope" select="'keys'"/> | 166 <xsl:with-param name="scope" select="'keys'"/> |
| 167 </xsl:call-template> | 167 </xsl:call-template> |
| 168 </xsl:template> | 168 </xsl:template> |
| 169 | 169 |
| 170 <!-- expand-member templates are used to process relations | |
| 171 and keys and provide usefull information like properties of | |
| 172 the entity which are members of this relation or key. | |
| 173 | |
| 174 @special - means that the member is a composite part and isn't | |
| 175 accessible directly | |
| 176 --> | |
| 177 | |
| 178 <!-- short form of primaryKey{@name, @type} --> | |
| 179 <xsl:template match="m:primaryKey" mode="expand-member"> | |
| 180 <xsl:copy> | |
| 181 <xsl:copy-of select="@*"/> | |
| 182 <m:property special="true"> | |
| 183 <xsl:copy-of select="@*" /> | |
| 184 <xsl:copy-of select="*" /> | |
| 185 </m:property> | |
| 186 </xsl:copy> | |
| 187 </xsl:template> | |
| 188 | |
| 189 <!-- long form of primaryKey{ member{@name}+, property{@name, @type} } --> | |
| 190 <xsl:template match="m:primaryKey[m:member | m:property]" mode="expand-member"> | |
| 191 <xsl:copy> | |
| 192 <xsl:copy-of select="@*"/> | |
| 193 <xsl:apply-templates mode="expand-member"/> | |
| 194 </xsl:copy> | |
| 195 </xsl:template> | |
| 196 | |
| 197 <!-- stand alone properties --> | |
| 198 <xsl:template match="m:property" mode="expand-member"> | |
| 199 <xsl:copy-of select="."/> | |
| 200 </xsl:template> | |
| 201 | |
| 202 <!-- properties declared inside relations, they are @special --> | |
| 203 <xsl:template match="m:primaryKey/m:property | m:thisKey/m:property" mode="expand-member"> | |
| 204 <xsl:copy> | |
| 205 <xsl:attribute name="special">true</xsl:attribute> | |
| 206 <xsl:copy-of select="@*"/> | |
| 207 <xsl:copy-of select="*"/> | |
| 208 </xsl:copy> | |
| 209 </xsl:template> | |
| 210 | |
| 211 <xsl:template match="m:member" mode="expand-member"> | |
| 212 <xsl:param name="declaringType"/> | |
| 213 <xsl:variable name="expanded"> | |
| 214 <xsl:call-template name="getMembers"> | |
| 215 <xsl:with-param name="memberName" select="@name"/> | |
| 216 <xsl:with-param name="type" select="$declaringType"/> | |
| 217 </xsl:call-template> | |
| 218 </xsl:variable> | |
| 219 <!-- recusive expand --> | |
| 220 <xsl:apply-templates select="exsl:node-set($expanded)" mode="expand-member"/> | |
| 221 </xsl:template> | |
| 222 | |
| 223 <xsl:template match="m:hasA" mode="expand-member"> | |
| 224 <xsl:copy> | |
| 225 <xsl:copy-of select="@*"/> | |
| 226 | |
| 227 <xsl:apply-templates mode="expand-member"/> | |
| 228 </xsl:copy> | |
| 229 </xsl:template> | |
| 230 | |
| 231 <xsl:template match="m:thisKey" mode="expand-member"> | |
| 232 <xsl:variable name="otherKey"> | |
| 233 <xsl:call-template name="getPrimaryKey"> | |
| 234 <xsl:with-param name="type" select="../@type"/> | |
| 235 </xsl:call-template> | |
| 236 </xsl:variable> | |
| 237 <xsl:variable name="otherKeyExpanded"> | |
| 238 <xsl:apply-templates select="exsl:node-set($otherKey)" mode="expand-member"/> | |
| 239 </xsl:variable> | |
| 240 <xsl:variable name="pk" select="exsl:node-set($otherKeyExpanded)[1]"/> | |
| 241 | |
| 242 <m:property name="{@name}" type="{$pk/@type}" hidden="true"> | |
| 243 <m:related name="{$pk/@name}" type="{../@type}"/> | |
| 244 </m:property> | |
| 245 </xsl:template> | |
| 246 | |
| 247 <xsl:template match="m:thisKey[m:member | property]"> | |
| 248 <xsl:apply-templates mode="expand-member"/> | |
| 249 </xsl:template> | |
| 250 | |
| 170 </xsl:stylesheet> | 251 </xsl:stylesheet> |
