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>[email protected]</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>