数据库生成器(3)--xsl文件说明
xsl的基本语法就不说了。说一些具体实现。
xsl文件大致分为19个部分,说明如下:
第一个match="/"主要用来进行页面布局.主要目的是在页面上显示INDEX和BACK两个导航按钮。并能根据当前页面显示的内容确定INDEX和BACK两个链接的目标网址。其实全都是本页面,但URL参数不同。不同的URL参数决定了页面内容是xml文件中的哪一部分。
接下来的match都是用来匹配相应的节点,并把xml内容转换为xhtml内容。
第二个match="database"用来匹配database节点。内容主要是显示一个表格,内容包括tables,viewes,functions和procedures包含的对象数目,方便浏览者进一步定位到具体对象。
第三个match="tables"用来匹配tables节点。内容也是显示一个表格,内容是所有table节点以及每个table的主键字段,所有字段总数,所有索引,所有触发器。其中表名和每个索引,触发器以链接形式提供用户进一步导航。
第四个match="viewes"用来匹配viewes节点。内容是显示一个表格,内容是所有view节点。
第五个match="functions|procedures"用来匹配functions节点和procedures节点。由于function和procedure在结构上的相似,所以可以用同一个模板来表达。内容也是表格,内容是所有function或procedure,以及每个function或procedure的参数列表。
第六个match="common"用来匹配common节点。内容是显示一个表格,内容是default和通用fields的数目。
第七个match="defaults"用来匹配defaults节点。内容是所有定义的default的清单以及说明。
第八个match="fields"用来匹配fields节点,内容是common或者table下的fields节点。包括每个field的名称,标签,数据类型,默认值,是否允许null值和说明。其中数据类型,默认值在没有特别指定的情况下(每个为特定属性赋值)根据字段名后缀自动设置。具体对应关系参见xsl文件最后两个template。
第九个match="table"有多个mode,分别对应于table下的fields,indexes和triggers。不同的mode主要显示不同的表格,内容分别是该table的所有field,index和trigger清单。
第十个match="indexes"用来匹配indexes节点,内容是显示一个表格,显示某个table下所有index。包括索引的名字,被索引的字段,是否唯一,是否包含其他字段已经说明。
第十一个match="triggers"用来匹配triggers节点,内容是显示一个表格,显示某个table下所有的trigger。包括触发器的名字,触发事件。
第十二个match="index"用来匹配单个index节点,以flow的形式显示单个index。
第十三个match="trigger"用来匹配单个trigger节点,主要是显示单个trigger的(content节点)内容。
第十四个match="view"用来匹配单个view节点,主要是显示单个view的(content节点)内容。
第十五个match="function|procedure",用来匹配单个function或者procedure节点,主要是显示单个function或者procedure的(content节点)内容。
第十六个match="table" mode="index"用来显示单个table节点下的所有index清单。
第十七个match="table" mode="trigger"用来显示单个table节点下的所有trigger清单。
第十八个match="field|parameter" moode="default"用来根据指定的字段或参数名返回默认的默认值名称。
第十九个match="field|parameter" mode="datatype"用来根据指定的字段或参数名返回默认的数据类型。