home *** CD-ROM | disk | FTP | other *** search
/ Cricao de Sites - 650 Layouts Prontos / WebMasters.iso / Servidores / xampp-win32-1.6.7-installer.exe / php / PEAR / adodb / xsl / convert-0.1-0.3.xsl < prev    next >
Encoding:
Extensible Markup Language  |  2006-03-10  |  6.0 KB  |  221 lines

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xsl:stylesheet version="1.0"
  3.     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  4. >
  5.     <xsl:output method="xml" indent="yes" omit-xml-declaration="no" encoding="UTF-8"/>
  6.     
  7.     <!-- Schema -->
  8.     <xsl:template match="/">
  9.         <xsl:comment>
  10. ADODB XMLSchema
  11. http://adodb-xmlschema.sourceforge.net
  12. </xsl:comment>
  13.         
  14.         <xsl:element name="schema">
  15.             <xsl:attribute name="version">0.3</xsl:attribute>
  16.             
  17.             <xsl:apply-templates select="schema/table|schema/sql"/>
  18.         </xsl:element>
  19.     </xsl:template>
  20.     
  21.     <!-- Table -->
  22.     <xsl:template match="table">
  23.         <xsl:variable name="table_name" select="@name"/>
  24.         
  25.         <xsl:element name="table">
  26.             <xsl:attribute name="name"><xsl:value-of select="$table_name"/></xsl:attribute>
  27.             
  28.             <xsl:if test="string-length(@platform) > 0">
  29.                 <xsl:attribute name="platform"><xsl:value-of select="@platform"/></xsl:attribute>
  30.             </xsl:if>
  31.             
  32.             <xsl:if test="string-length(@version) > 0">
  33.                 <xsl:attribute name="version"><xsl:value-of select="@version"/></xsl:attribute>
  34.             </xsl:if>
  35.             
  36.             <xsl:apply-templates select="descr[1]"/>
  37.             
  38.             <xsl:choose>
  39.                 <xsl:when test="count(DROP) > 0">
  40.                     <xsl:element name="DROP"/>
  41.                 </xsl:when>
  42.                 <xsl:otherwise>
  43.                     <xsl:apply-templates select="field"/>
  44.                 </xsl:otherwise>
  45.             </xsl:choose>
  46.             
  47.             <xsl:apply-templates select="constraint"/>
  48.             
  49.             <xsl:apply-templates select="../index[@table=$table_name]"/>
  50.         </xsl:element>
  51.     </xsl:template>
  52.     
  53.     <!-- Field -->
  54.     <xsl:template match="field">
  55.         <xsl:element name="field">
  56.             <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
  57.             <xsl:attribute name="type"><xsl:value-of select="@type"/></xsl:attribute>
  58.             
  59.             <xsl:if test="string-length(@size) > 0">
  60.                 <xsl:attribute name="size"><xsl:value-of select="@size"/></xsl:attribute>
  61.             </xsl:if>
  62.             
  63.             <xsl:choose>
  64.                 <xsl:when test="string-length(@opts) = 0"/>
  65.                 <xsl:when test="@opts = 'UNSIGNED'">
  66.                     <xsl:element name="UNSIGNED"/>
  67.                 </xsl:when>
  68.                 <xsl:when test="contains(@opts,'UNSIGNED')">
  69.                     <xsl:attribute name="opts">
  70.                         <xsl:value-of select="concat(substring-before(@opts,'UNSIGNED'),substring-after(@opts,'UNSIGNED'))"/>
  71.                     </xsl:attribute>
  72.                     <xsl:element name="UNSIGNED"/>
  73.                 </xsl:when>
  74.                 <xsl:otherwise>
  75.                     <xsl:attribute name="opts"><xsl:value-of select="@opts"/></xsl:attribute>
  76.                 </xsl:otherwise>
  77.             </xsl:choose>
  78.             
  79.             <xsl:choose>
  80.                 <xsl:when test="count(PRIMARY) > 0">
  81.                     <xsl:element name="PRIMARY"/>
  82.                 </xsl:when>
  83.                 <xsl:when test="count(KEY) > 0">
  84.                     <xsl:element name="KEY"/>
  85.                 </xsl:when>
  86.                 <xsl:when test="count(NOTNULL) > 0">
  87.                     <xsl:element name="NOTNULL"/>
  88.                 </xsl:when>
  89.             </xsl:choose>
  90.             
  91.             <xsl:choose>
  92.                 <xsl:when test="count(AUTO) > 0">
  93.                     <xsl:element name="AUTO"/>
  94.                 </xsl:when>
  95.                 <xsl:when test="count(AUTOINCREMENT) > 0">
  96.                     <xsl:element name="AUTOINCREMENT"/>
  97.                 </xsl:when>
  98.             </xsl:choose>
  99.             
  100.             <xsl:choose>
  101.                 <xsl:when test="count(DEFAULT) > 0">
  102.                     <xsl:element name="DEFAULT">
  103.                         <xsl:attribute name="value">
  104.                             <xsl:value-of select="DEFAULT[1]/@value"/>
  105.                         </xsl:attribute>
  106.                     </xsl:element>
  107.                 </xsl:when>
  108.                 <xsl:when test="count(DEFDATE) > 0">
  109.                     <xsl:element name="DEFDATE">
  110.                         <xsl:attribute name="value">
  111.                             <xsl:value-of select="DEFDATE[1]/@value"/>
  112.                         </xsl:attribute>
  113.                     </xsl:element>
  114.                 </xsl:when>
  115.                 <xsl:when test="count(DEFTIMESTAMP) > 0">
  116.                     <xsl:element name="DEFTIMESTAMP">
  117.                         <xsl:attribute name="value">
  118.                             <xsl:value-of select="DEFTIMESTAMP[1]/@value"/>
  119.                         </xsl:attribute>
  120.                     </xsl:element>
  121.                 </xsl:when>
  122.             </xsl:choose>
  123.             
  124.             <xsl:if test="count(NOQUOTE) > 0">
  125.                 <xsl:element name="NOQUOTE"/>
  126.             </xsl:if>
  127.             
  128.             <xsl:apply-templates select="constraint"/>
  129.         </xsl:element>
  130.     </xsl:template>
  131.     
  132.     <!-- Constraint -->
  133.     <xsl:template match="constraint">
  134.         <xsl:element name="constraint">
  135.             <xsl:value-of select="normalize-space(text())"/>
  136.         </xsl:element>
  137.     </xsl:template>
  138.     
  139.     <!-- Index -->
  140.     <xsl:template match="index">
  141.         <xsl:element name="index">
  142.             <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
  143.             
  144.             <xsl:apply-templates select="descr[1]"/>
  145.             
  146.             <xsl:if test="count(CLUSTERED) > 0">
  147.                 <xsl:element name="CLUSTERED"/>
  148.             </xsl:if>
  149.             
  150.             <xsl:if test="count(BITMAP) > 0">
  151.                 <xsl:element name="BITMAP"/>
  152.             </xsl:if>
  153.             
  154.             <xsl:if test="count(UNIQUE) > 0">
  155.                 <xsl:element name="UNIQUE"/>
  156.             </xsl:if>
  157.             
  158.             <xsl:if test="count(FULLTEXT) > 0">
  159.                 <xsl:element name="FULLTEXT"/>
  160.             </xsl:if>
  161.             
  162.             <xsl:if test="count(HASH) > 0">
  163.                 <xsl:element name="HASH"/>
  164.             </xsl:if>
  165.             
  166.             <xsl:choose>
  167.                 <xsl:when test="count(DROP) > 0">
  168.                     <xsl:element name="DROP"/>
  169.                 </xsl:when>
  170.                 <xsl:otherwise>
  171.                     <xsl:apply-templates select="col"/>
  172.                 </xsl:otherwise>
  173.             </xsl:choose>
  174.         </xsl:element>
  175.     </xsl:template>
  176.     
  177.     <!-- Index Column -->
  178.     <xsl:template match="col">
  179.         <xsl:element name="col">
  180.             <xsl:value-of select="normalize-space(text())"/>
  181.         </xsl:element>
  182.     </xsl:template>
  183.     
  184.     <!-- SQL QuerySet -->
  185.     <xsl:template match="sql">
  186.         <xsl:element name="sql">
  187.             <xsl:if test="string-length(@platform) > 0">
  188.                 <xsl:attribute name="platform"><xsl:value-of select="@platform"/></xsl:attribute>
  189.             </xsl:if>
  190.             
  191.             <xsl:if test="string-length(@key) > 0">
  192.                 <xsl:attribute name="key"><xsl:value-of select="@key"/></xsl:attribute>
  193.             </xsl:if>
  194.             
  195.             <xsl:if test="string-length(@prefixmethod) > 0">
  196.                 <xsl:attribute name="prefixmethod"><xsl:value-of select="@prefixmethod"/></xsl:attribute>
  197.             </xsl:if>
  198.             
  199.             <xsl:apply-templates select="descr[1]"/>
  200.             <xsl:apply-templates select="query"/>
  201.         </xsl:element>
  202.     </xsl:template>
  203.     
  204.     <!-- Query -->
  205.     <xsl:template match="query">
  206.         <xsl:element name="query">
  207.             <xsl:if test="string-length(@platform) > 0">
  208.                 <xsl:attribute name="platform"><xsl:value-of select="@platform"/></xsl:attribute>
  209.             </xsl:if>
  210.             
  211.             <xsl:value-of select="normalize-space(text())"/>
  212.         </xsl:element>
  213.     </xsl:template>
  214.     
  215.     <!-- Description -->
  216.     <xsl:template match="descr">
  217.         <xsl:element name="descr">
  218.             <xsl:value-of select="normalize-space(text())"/>
  219.         </xsl:element>
  220.     </xsl:template>
  221. </xsl:stylesheet>