XML系列:示例 使用XML Schema + XSL + XML制作简历
下面是我使用XML Schema + XSL + XML制作的简单简历,通过这个示例希望可以让大家更实际的理解XML Schema ,XSL , XML
一,创建XML Schema文件 resume.xsd
<?xml version="1.0" encoding="GB2312"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<!-- 基本信息-->
<xs:element name="姓名" type="xs:string"/>
<xs:element name="性别">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="男"/>
<xs:enumeration value="女"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="籍贯" type="xs:string"/>
<xs:element name="出生日期">
<xs:simpleType>
<xs:restriction base="xs:date">
<xs:minInclusive value="1970-01-01"/>
<xs:maxInclusive value="1990-01-01"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="婚姻状况">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="已婚"/>
<xs:enumeration value="未婚"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="健康状况" type="xs:string"/>
<xs:element name="学历" type="xs:string"/>
<xs:element name="毕业学校" type="xs:string"/>
<xs:element name="工作年限" type="xs:string"/>
<xs:element name="联系电话" type="xs:string"/>
<xs:element name="联系地址" type="xs:string"/>
<xs:element name="EMail" type="xs:string"/>
<xs:group name="baseInfoGroup">
<xs:sequence>
<xs:element ref="姓名"/>
<xs:element ref="性别"/>
<xs:element ref="籍贯"/>
<xs:element ref="出生日期"/>
<xs:element ref="婚姻状况"/>
<xs:element ref="健康状况"/>
<xs:element ref="学历"/>
<xs:element ref="毕业学校"/>
<xs:element ref="工作年限"/>
<xs:element ref="联系电话"/>
<xs:element ref="联系地址"/>
<xs:element ref="EMail"/>
</xs:sequence>
</xs:group>
<xs:complexType name="baseInfoType">
<xs:group ref="baseInfoGroup"/>
</xs:complexType>
<xs:element name="基本信息" type="baseInfoType"/>
<!-- 教育经历-->
<xs:element name="开始时间" type="xs:date"/>
<xs:element name="终止时间" type="xs:date"/>
<xs:element name="院校名称" type="xs:string"/>
<xs:element name="专业" type="xs:string"/>
<xs:group name="educateGroup">
<xs:sequence>
<xs:element ref="开始时间"/>
<xs:element ref="终止时间"/>
<xs:element ref="院校名称"/>
<xs:element ref="专业"/>
<xs:element ref="学历"/>
</xs:sequence>
</xs:group>
<xs:complexType name="educateType">
<xs:sequence>
<xs:group ref="educateGroup"/>
</xs:sequence>
</xs:complexType>
<xs:element name="教育经历" type="educateType"/>
<xs:element name="教育">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element ref="教育经历"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--工作经历-->
<xs:element name="公司名称" type="xs:string"/>
<xs:element name="职位" type="xs:string"/>
<xs:element name="职位描述" type="xs:string"/>
<xs:group name="jobGroup">
<xs:sequence>
<xs:element ref="开始时间"/>
<xs:element ref="终止时间"/>
<xs:element ref="公司名称"/>
<xs:element ref="职位"/>
<xs:element ref="职位描述"/>
</xs:sequence>
</xs:group>
<xs:complexType name="jobType">
<xs:sequence>
<xs:group ref="jobGroup"/>
</xs:sequence>
</xs:complexType>
<xs:element name="工作经历" type="jobType"/>
<xs:element name="工作">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element ref="工作经历"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--自我评价-->
<xs:element name="自我评价" type="xs:string"/>
<xs:group name="resumeGroup">
<xs:sequence>
<xs:element ref="基本信息"/>
<xs:element ref="教育"/>
<xs:element ref="工作"/>
<xs:element ref="自我评价"/>
</xs:sequence>
</xs:group>
<xs:attribute name="id" >
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:complexType name="resumeType">
<xs:sequence>
<xs:group ref="resumeGroup"/>
</xs:sequence>
<xs:attribute ref="id"/>
</xs:complexType>
<xs:element name="个人简历" type="resumeType"/>
<xs:element name="简历">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element ref="个人简历"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
二,创建XML文件 resume.xml
<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet type="text/xsl" href="resume.xsl"?>
<简历 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="resume.xsd">
<个人简历 id="00001">
<基本信息>
<姓名>xxx</姓名>
<性别>男</性别>
<籍贯>湖北京山</籍贯>
<出生日期>1985-10-17</出生日期>
<婚姻状况>未婚</婚姻状况>
<健康状况>好</健康状况>
<学历>本科</学历>
<毕业学校>XXXX大学汉</毕业学校>
<工作年限>XXXX</工作年限>
<联系电话>13647231773</联系电话>
<联系地址>湖北省xxxxxx</联系地址>
<EMail>qfs_v@qq.com</EMail>
</基本信息>
<教育>
<教育经历>
<开始时间>200X-09-01</开始时间>
<终止时间>200X-09-01</终止时间>
<院校名称>XXXX大学</院校名称>
<专业>计算机科学与技术</专业>
<学历>本科</学历>
</教育经历>
<教育经历>
<开始时间>200X-08-15</开始时间>
<终止时间>200X-08-01</终止时间>
<院校名称>XXXXXXX</院校名称>
<专业>XXXX</专业>
<学历>XXXX</学历>
</教育经历>
</教育>
<工作>
<工作经历>
<开始时间>200X-03-15</开始时间>
<终止时间>200X-05-01</终止时间>
<公司名称>武汉XX软件有限公司</公司名称>
<职位>XXX程序员</职位>
<职位描述>Java程序员Java程序员Java程序员Java程序员Java程序员Java程序员Java程序员Java程序员Java程序员Java程序员Java程序员Java程序员Java程序员
</职位描述>
</工作经历>
<工作经历>
<开始时间>200X-06-15</开始时间>
<终止时间>200X-05-01</终止时间>
<公司名称>武汉XX科技有限公司</公司名称>
<职位>Java程序员</职位>
<职位描述>Java程序员Java程序员Java程序员Java程序员Java程序员Java程序员Java程序员Java程序员Java程序员Java程序员Java程序员Java程序员
</职位描述>
</工作经历>
</工作>
<自我评价>自我评价自我评价自我评价自我评价自我评价自我评价自我评价自我评价自我评价自我评价自我评价自我评价自我评价自我评价
</自我评价>
</个人简历>
</简历>
三,创建XSL文件 resume.xsl
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<!-- 根模板-->
<xsl:template match="/">
<html>
<head>
<title><xsl:value-of select="简历/个人简历/基本信息/姓名"/>的个人简历</title>
</head>
<body>
<h2 align="center">简历</h2>
<xsl:apply-templates select="简历"/>
</body>
</html>
</xsl:template>
<!--简历模板-->
<xsl:template match="简历">
<xsl:apply-templates select="个人简历"/>
</xsl:template>
<!--个人简历模板-->
<xsl:template match="个人简历">
<xsl:apply-templates select="基本信息"/>
<br/>
<xsl:apply-templates select="教育"/>
<br/>
<xsl:apply-templates select="工作"/>
<br/>
<xsl:apply-templates select="自我评价"/>
</xsl:template>
<!--基本信息模板-->
<xsl:template match="基本信息">
<table align="center" width="800" border="0" >
<tbody>
<tr>
<th colspan="7" bgcolor="#CAE1FF" align="left">基本信息</th>
</tr>
<tr >
<td width="35">姓名:</td>
<td width="50"><xsl:value-of select="姓名"/></td>
<td width="35">性别:</td>
<td width="40"><xsl:value-of select="性别"/></td>
<td width="35">籍贯:</td>
<td width="80"><xsl:value-of select="籍贯"/></td>
<td width="150">照片</td>
</tr>
<tr>
<td>出生日期:</td>
<td><xsl:value-of select="出生日期"/></td>
<td>婚姻状况:</td>
<td><xsl:value-of select="婚姻状况"/></td>
<td>健康状况:</td>
<td><xsl:value-of select="健康状况"/></td>
</tr>
<tr>
<td>学历:</td>
<td><xsl:value-of select="学历"/></td>
<td>工作年限:</td>
<td><xsl:value-of select="工作年限"/></td>
<td>毕业学校:</td>
<td><xsl:value-of select="毕业学校"/></td>
</tr>
<tr>
<td>联系电话:</td>
<td><xsl:value-of select="联系电话"/></td>
<td>E-Mail:</td>
<td><xsl:value-of select="EMail"/></td>
<td>联系地址:</td>
<td><xsl:value-of select="联系地址"/></td>
</tr>
</tbody>
</table>
</xsl:template>
<!--教育模板-->
<xsl:template match="教育">
<table width="800" align="center">
<tbody>
<tr>
<th colspan="5" bgcolor="#CAE1FF" align="left">教育经历</th>
</tr>
<tr>
<td>开始时间</td>
<td>终止时间</td>
<td>院校名称</td>
<td>专业</td>
<td>学历</td>
</tr>
<xsl:apply-templates select="教育经历"/>
</tbody>
</table>
</xsl:template>
<!--教育经历模板-->
<xsl:template match="教育经历">
<tr>
<td><xsl:value-of select="开始时间"/></td>
<td><xsl:value-of select="终止时间"/></td>
<td><xsl:value-of select="院校名称"/></td>
<td><xsl:value-of select="专业"/></td>
<td><xsl:value-of select="学历"/></td>
</tr>
</xsl:template>
<!--工作模板-->
<xsl:template match="工作">
<table width="800" align="center">
<tbody>
<tr>
<th colspan="5" bgcolor="#CAE1FF" align="left">工作经历</th>
</tr>
<tr>
<td>开始时间</td>
<td>终止时间</td>
<td>公司名称</td>
<td>职位</td>
<td>职位描述</td>
</tr>
<xsl:apply-templates select="工作经历"/>
</tbody>
</table>
</xsl:template>
<!--工作经历模板-->
<xsl:template match="工作经历">
<tr>
<td><xsl:value-of select="开始时间"/></td>
<td><xsl:value-of select="终止时间"/></td>
<td><xsl:value-of select="公司名称"/></td>
<td ><xsl:value-of select="职位"/></td>
<td width="350"><xsl:value-of select="职位描述"/></td>
</tr>
</xsl:template>
<!--自我评价模板-->
<xsl:template match="自我评价">
<table width="800" align="center">
<tbody>
<tr>
<th bgcolor="#CAE1FF" align="left">自我评价</th>
</tr>
<tr>
<td><xsl:value-of select="."/></td>
</tr>
</tbody>
</table>
</xsl:template>
</xsl:stylesheet>