xml文件
<?xml version="1.0" encoding="utf-8" ?>
<Paper Title="小寒考试系统" Name="大三历史期末考试" StartTime="2008-1-28 09:00" Time="120" ScoreValue="100" Score="0">
<Student Name="小寒" Id="041124096"/>
<Questions Title="单选题" ScoreValue="20" Count="1" Score="0">
<DanXuan Id="1" Subject="历史" Chapter="第三章" Difficulty="1" ScoreValue="20" Score="0">
<Content>诸葛亮姓什么?</Content>
<Choices>
<Choice Key="1">诸</Choice>
<Choice Key="2">诸葛</Choice>
<Choice Key="3">诸葛亮</Choice>
<Choice Key="4">亮</Choice>
</Choices>
<Answer>2</Answer>
<StudentAnswer></StudentAnswer>
</DanXuan>
</Questions>
<Questions Title="多选题" ScoreValue="20" Count="1" Score="0">
<DuoXuan Id="2" Subject="历史" Chapter="第三章" Difficulty="1" ScoreValue="20" Score="0">
<Content>三国是指那三国?</Content>
<Choices>
<Choice Key="1">魏国</Choice>
<Choice Key="2">吴国</Choice>
<Choice Key="3">辽国</Choice>
<Choice Key="4">蜀国</Choice>
</Choices>
<Answer>1,2,4</Answer>
<StudentAnswer></StudentAnswer>
</DuoXuan>
</Questions>
<Questions Title="判断题" ScoreValue="20" Count="1" Score="0">
<PanDuan Id="3" Subject="历史" Chapter="第三章" Difficulty="1" ScoreValue="20" Score="0">
<Content>刘备建立了蜀国?</Content>
<Choices>
<Choice Key="0">0</Choice>
<Choice Key="1">1</Choice>
</Choices>
<Answer>1</Answer>
<StudentAnswer></StudentAnswer>
</PanDuan>
</Questions>
<Questions Title="填空题" ScoreValue="20" Count="1" Score="0">
<TianKong Id="4" Subject="历史" Chapter="第三章" Difficulty="1" ScoreValue="20" Score="0">
<Content> <![CDATA[
三国里的五虎上将是指关羽,$_4.1_$,$_4.2_$,$_4.3_$,赵云。
]]>
</Content>
<Answers>
<Answer Key="1">张飞</Answer>
<Answer Key="2">魏延</Answer>
<Answer Key="3">马超</Answer>
</Answers>
<StudentAnswers>
<StudentAnswer Key="1"></StudentAnswer>
<StudentAnswer Key="2"></StudentAnswer>
<StudentAnswer Key="3"></StudentAnswer>
</StudentAnswers>
</TianKong>
</Questions>
<Questions Title="简答题" ScoreValue="20" Count="1" Score="0">
<JianDa Id="5" Subject="历史" Chapter="第三章" Difficulty="1" ScoreValue="20" Score="0">
<Content>为什么诸葛亮没能统一三国?</Content>
<Answer>因为魏国统一了三国。</Answer>
<StudentAnswer></StudentAnswer>
</JianDa>
</Questions>
</Paper>
xslt文件
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:rules="http://www.netguy.cn/xslt"
exclude-result-prefixes="rules msxsl">
<xsl:output method="html"/>
<msxsl:script implements-prefix="rules" language="C#">
<![CDATA[
public static string ChangeTextBox(string content)
{
// Define a regular expression for repeated words.
Regex rx = new Regex(@"\$_\S\S\S_\$",
RegexOptions.Compiled | RegexOptions.IgnoreCase);
// Find matches.
MatchCollection matches = rx.Matches(content);
// Report on each match.
foreach (Match match in matches)
{
string word = match.Value;
content=content.Replace(word,"<input name=\""+word.Substring(2,word.Length-4)+"\" type=\"text\">");
}
return content;
}
]]>
</msxsl:script>
<xsl:template match="Paper">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>
<xsl:value-of select="@Title"/>
</title>
</head>
<body>
<div class="Head">
<div class="Name"><xsl:value-of select="@Name"/></div>
<div class="Info">
姓名:<xsl:value-of select="Student/@Name"/>
学号:<xsl:value-of select="Student/@Id"/>
开考时间:<xsl:value-of select="@StartTime"/>
时间:<xsl:value-of select="@Time"/>
总分:<xsl:value-of select="@ScoreValue"/>
</div>
</div>
<xsl:apply-templates select="Questions"/>
</body>
</html>
</xsl:template>
<xsl:template match="Questions">
<div class="Title">
<xsl:number format="I."/>
<xsl:value-of select="@Title"/>
<xsl:text>。(共</xsl:text>
<xsl:value-of select="@Count"/>
<xsl:text>题,</xsl:text>
<xsl:value-of select="@ScoreValue"/>
<xsl:text>分)</xsl:text>
</div>
<xsl:apply-templates select="DanXuan"/>
<xsl:apply-templates select="DuoXuan"/>
<xsl:apply-templates select="PanDuan"/>
<xsl:apply-templates select="TianKong"/>
<xsl:apply-templates select="JianDa"/>
</xsl:template>
<xsl:template match="DanXuan">
<div class="DanXuan">
<div class="Content">
<xsl:number format="1."/>
<xsl:value-of select="Content"/>
</div>
<div class="Choices">
<ul>
<xsl:for-each select="Choices/Choice">
<li>
<xsl:number format="A."/>
<input name="{http://www.cnblogs.com/@Id}" type="radio" value="{@Key}"/>
<xsl:value-of select="."/>
</li>
</xsl:for-each>
</ul>
</div>
</div>
</xsl:template>
<xsl:template match="DuoXuan">
<div class="DuoXuan">
<div class="Content">
<xsl:number format="1."/>
<xsl:value-of select="Content"/>
</div>
<div class="Choices">
<ul>
<xsl:for-each select="Choices/Choice">
<li>
<xsl:number format="A."/>
<input name="{http://www.cnblogs.com/@Id}" type="checkbox" value="{@Key}"/>
<xsl:value-of select="."/>
</li>
</xsl:for-each>
</ul>
</div>
</div>
</xsl:template>
<xsl:template match="PanDuan">
<div class="PanDuan" style="width:300px">
<div class="Content" style="float:left;width:70%">
<xsl:number format="1."/>
<xsl:value-of select="Content"/>
</div>
<div class="Choices" style="float:right;width:25%">
<input name="{@Id}" type="radio" value="1"/>Y
<input name="{@Id}" type="radio" value="0" />N
</div>
</div>
</xsl:template>
<xsl:template match="TianKong">
<div class="TianKong">
<xsl:number format="1."/>
<xsl:value-of select="rules:ChangeTextBox(string(Content))" disable-output-escaping="yes"/>
</div>
</xsl:template>
<xsl:template match="JianDa">
<div class="JianDa">
<div class="Content">
<xsl:number format="1."/>
<xsl:value-of select="Content"/>
</div>
<div class="Input">
<textarea name="{@Id}" cols="70" rows="8"></textarea>
</div>
</div>
</xsl:template>
</xsl:stylesheet>
生成html
<?xml version="1.0" encoding="utf-8" ?>
<Paper Title="小寒考试系统" Name="大三历史期末考试" StartTime="2008-1-28 09:00" Time="120" ScoreValue="100" Score="0">
<Student Name="小寒" Id="041124096"/>
<Questions Title="单选题" ScoreValue="20" Count="1" Score="0">
<DanXuan Id="1" Subject="历史" Chapter="第三章" Difficulty="1" ScoreValue="20" Score="0">
<Content>诸葛亮姓什么?</Content>
<Choices>
<Choice Key="1">诸</Choice>
<Choice Key="2">诸葛</Choice>
<Choice Key="3">诸葛亮</Choice>
<Choice Key="4">亮</Choice>
</Choices>
<Answer>2</Answer>
<StudentAnswer></StudentAnswer>
</DanXuan>
</Questions>
<Questions Title="多选题" ScoreValue="20" Count="1" Score="0">
<DuoXuan Id="2" Subject="历史" Chapter="第三章" Difficulty="1" ScoreValue="20" Score="0">
<Content>三国是指那三国?</Content>
<Choices>
<Choice Key="1">魏国</Choice>
<Choice Key="2">吴国</Choice>
<Choice Key="3">辽国</Choice>
<Choice Key="4">蜀国</Choice>
</Choices>
<Answer>1,2,4</Answer>
<StudentAnswer></StudentAnswer>
</DuoXuan>
</Questions>
<Questions Title="判断题" ScoreValue="20" Count="1" Score="0">
<PanDuan Id="3" Subject="历史" Chapter="第三章" Difficulty="1" ScoreValue="20" Score="0">
<Content>刘备建立了蜀国?</Content>
<Choices>
<Choice Key="0">0</Choice>
<Choice Key="1">1</Choice>
</Choices>
<Answer>1</Answer>
<StudentAnswer></StudentAnswer>
</PanDuan>
</Questions>
<Questions Title="填空题" ScoreValue="20" Count="1" Score="0">
<TianKong Id="4" Subject="历史" Chapter="第三章" Difficulty="1" ScoreValue="20" Score="0">
<Content> <![CDATA[
三国里的五虎上将是指关羽,$_4.1_$,$_4.2_$,$_4.3_$,赵云。
]]>
</Content>
<Answers>
<Answer Key="1">张飞</Answer>
<Answer Key="2">魏延</Answer>
<Answer Key="3">马超</Answer>
</Answers>
<StudentAnswers>
<StudentAnswer Key="1"></StudentAnswer>
<StudentAnswer Key="2"></StudentAnswer>
<StudentAnswer Key="3"></StudentAnswer>
</StudentAnswers>
</TianKong>
</Questions>
<Questions Title="简答题" ScoreValue="20" Count="1" Score="0">
<JianDa Id="5" Subject="历史" Chapter="第三章" Difficulty="1" ScoreValue="20" Score="0">
<Content>为什么诸葛亮没能统一三国?</Content>
<Answer>因为魏国统一了三国。</Answer>
<StudentAnswer></StudentAnswer>
</JianDa>
</Questions>
</Paper>
xslt文件
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:rules="http://www.netguy.cn/xslt"
exclude-result-prefixes="rules msxsl">
<xsl:output method="html"/>
<msxsl:script implements-prefix="rules" language="C#">
<![CDATA[
public static string ChangeTextBox(string content)
{
// Define a regular expression for repeated words.
Regex rx = new Regex(@"\$_\S\S\S_\$",
RegexOptions.Compiled | RegexOptions.IgnoreCase);
// Find matches.
MatchCollection matches = rx.Matches(content);
// Report on each match.
foreach (Match match in matches)
{
string word = match.Value;
content=content.Replace(word,"<input name=\""+word.Substring(2,word.Length-4)+"\" type=\"text\">");
}
return content;
}
]]>
</msxsl:script>
<xsl:template match="Paper">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>
<xsl:value-of select="@Title"/>
</title>
</head>
<body>
<div class="Head">
<div class="Name"><xsl:value-of select="@Name"/></div>
<div class="Info">
姓名:<xsl:value-of select="Student/@Name"/>
学号:<xsl:value-of select="Student/@Id"/>
开考时间:<xsl:value-of select="@StartTime"/>
时间:<xsl:value-of select="@Time"/>
总分:<xsl:value-of select="@ScoreValue"/>
</div>
</div>
<xsl:apply-templates select="Questions"/>
</body>
</html>
</xsl:template>
<xsl:template match="Questions">
<div class="Title">
<xsl:number format="I."/>
<xsl:value-of select="@Title"/>
<xsl:text>。(共</xsl:text>
<xsl:value-of select="@Count"/>
<xsl:text>题,</xsl:text>
<xsl:value-of select="@ScoreValue"/>
<xsl:text>分)</xsl:text>
</div>
<xsl:apply-templates select="DanXuan"/>
<xsl:apply-templates select="DuoXuan"/>
<xsl:apply-templates select="PanDuan"/>
<xsl:apply-templates select="TianKong"/>
<xsl:apply-templates select="JianDa"/>
</xsl:template>
<xsl:template match="DanXuan">
<div class="DanXuan">
<div class="Content">
<xsl:number format="1."/>
<xsl:value-of select="Content"/>
</div>
<div class="Choices">
<ul>
<xsl:for-each select="Choices/Choice">
<li>
<xsl:number format="A."/>
<input name="{http://www.cnblogs.com/@Id}" type="radio" value="{@Key}"/>
<xsl:value-of select="."/>
</li>
</xsl:for-each>
</ul>
</div>
</div>
</xsl:template>
<xsl:template match="DuoXuan">
<div class="DuoXuan">
<div class="Content">
<xsl:number format="1."/>
<xsl:value-of select="Content"/>
</div>
<div class="Choices">
<ul>
<xsl:for-each select="Choices/Choice">
<li>
<xsl:number format="A."/>
<input name="{http://www.cnblogs.com/@Id}" type="checkbox" value="{@Key}"/>
<xsl:value-of select="."/>
</li>
</xsl:for-each>
</ul>
</div>
</div>
</xsl:template>
<xsl:template match="PanDuan">
<div class="PanDuan" style="width:300px">
<div class="Content" style="float:left;width:70%">
<xsl:number format="1."/>
<xsl:value-of select="Content"/>
</div>
<div class="Choices" style="float:right;width:25%">
<input name="{@Id}" type="radio" value="1"/>Y
<input name="{@Id}" type="radio" value="0" />N
</div>
</div>
</xsl:template>
<xsl:template match="TianKong">
<div class="TianKong">
<xsl:number format="1."/>
<xsl:value-of select="rules:ChangeTextBox(string(Content))" disable-output-escaping="yes"/>
</div>
</xsl:template>
<xsl:template match="JianDa">
<div class="JianDa">
<div class="Content">
<xsl:number format="1."/>
<xsl:value-of select="Content"/>
</div>
<div class="Input">
<textarea name="{@Id}" cols="70" rows="8"></textarea>
</div>
</div>
</xsl:template>
</xsl:stylesheet>
生成html
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>小寒考试系统</title>
</head>
<body>
<div class="Head">
<div class="Name">大三历史期末考试</div>
<div class="Info">
姓名:小寒
学号:041124096
开考时间:2008-1-28 09:00
时间:120
总分:100</div>
</div>
<div class="Title" xmlns="">I.单选题。(共1题,20分)</div>
<div class="DanXuan" xmlns="">
<div class="Content">1.诸葛亮姓什么?</div>
<div class="Choices">
<ul>
<li>A.<input name="1" type="radio" value="1">诸</li>
<li>B.<input name="1" type="radio" value="2">诸葛</li>
<li>C.<input name="1" type="radio" value="3">诸葛亮</li>
<li>D.<input name="1" type="radio" value="4">亮</li>
</ul>
</div>
</div>
<div class="Title" xmlns="">II.多选题。(共1题,20分)</div>
<div class="DuoXuan" xmlns="">
<div class="Content">1.三国是指那三国?</div>
<div class="Choices">
<ul>
<li>A.<input name="2" type="checkbox" value="1">魏国</li>
<li>B.<input name="2" type="checkbox" value="2">吴国</li>
<li>C.<input name="2" type="checkbox" value="3">辽国</li>
<li>D.<input name="2" type="checkbox" value="4">蜀国</li>
</ul>
</div>
</div>
<div class="Title" xmlns="">III.判断题。(共1题,20分)</div>
<div class="PanDuan" style="width:300px" xmlns="">
<div class="Content" style="float:left;width:70%">1.刘备建立了蜀国?</div>
<div class="Choices" style="float:right;width:25%"><input name="3" type="radio" value="1">Y
<input name="3" type="radio" value="0">N
</div>
</div>
<div class="Title" xmlns="">IV.填空题。(共1题,20分)</div>
<div class="TianKong" xmlns="">1.
三国里的五虎上将是指关羽,<input name="4.1" type="text">,<input name="4.2" type="text">,<input name="4.3" type="text">,赵云。
</div>
<div class="Title" xmlns="">V.简答题。(共1题,20分)</div>
<div class="JianDa" xmlns="">
<div class="Content">1.为什么诸葛亮没能统一三国?</div>
<div class="Input"><textarea name="5" cols="70" rows="8"></textarea></div>
</div>
</body>
</html>
<head>
<title>小寒考试系统</title>
</head>
<body>
<div class="Head">
<div class="Name">大三历史期末考试</div>
<div class="Info">
姓名:小寒
学号:041124096
开考时间:2008-1-28 09:00
时间:120
总分:100</div>
</div>
<div class="Title" xmlns="">I.单选题。(共1题,20分)</div>
<div class="DanXuan" xmlns="">
<div class="Content">1.诸葛亮姓什么?</div>
<div class="Choices">
<ul>
<li>A.<input name="1" type="radio" value="1">诸</li>
<li>B.<input name="1" type="radio" value="2">诸葛</li>
<li>C.<input name="1" type="radio" value="3">诸葛亮</li>
<li>D.<input name="1" type="radio" value="4">亮</li>
</ul>
</div>
</div>
<div class="Title" xmlns="">II.多选题。(共1题,20分)</div>
<div class="DuoXuan" xmlns="">
<div class="Content">1.三国是指那三国?</div>
<div class="Choices">
<ul>
<li>A.<input name="2" type="checkbox" value="1">魏国</li>
<li>B.<input name="2" type="checkbox" value="2">吴国</li>
<li>C.<input name="2" type="checkbox" value="3">辽国</li>
<li>D.<input name="2" type="checkbox" value="4">蜀国</li>
</ul>
</div>
</div>
<div class="Title" xmlns="">III.判断题。(共1题,20分)</div>
<div class="PanDuan" style="width:300px" xmlns="">
<div class="Content" style="float:left;width:70%">1.刘备建立了蜀国?</div>
<div class="Choices" style="float:right;width:25%"><input name="3" type="radio" value="1">Y
<input name="3" type="radio" value="0">N
</div>
</div>
<div class="Title" xmlns="">IV.填空题。(共1题,20分)</div>
<div class="TianKong" xmlns="">1.
三国里的五虎上将是指关羽,<input name="4.1" type="text">,<input name="4.2" type="text">,<input name="4.3" type="text">,赵云。
</div>
<div class="Title" xmlns="">V.简答题。(共1题,20分)</div>
<div class="JianDa" xmlns="">
<div class="Content">1.为什么诸葛亮没能统一三国?</div>
<div class="Input"><textarea name="5" cols="70" rows="8"></textarea></div>
</div>
</body>
</html>