使用xlst将xml转换html的示例代码
程序员文章站
2022-03-19 19:35:07
...
xml文件
<?xml version="1.0" encoding="utf-8" ?> <Paper Title="小寒考试系统" Name="大三历史期末考试" Start Time ="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="第三章" D if ficulty="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/Trans for m" 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" lang uage=" C# "> <![CDATA[ public static string ChangeTextBox(string content) { // Define a regular expression for repeated w ord s. 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. Substr ing(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> <p class="Head"> <p class="Name"><xsl:value-of select="@Name"/></p> <p 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"/> </p> </p> <xsl:apply-templates select="Questions"/> </body> </html> </xsl:template> <xsl:template match="Questions"> <p 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> </p> <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"> <p class="DanXuan"> <p class="Content"> <xsl:number format="1."/> <xsl:value-of select="Content"/> </p> <p 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> </p> </p> </xsl:template> <xsl:template match="DuoXuan"> <p class="DuoXuan"> <p class="Content"> <xsl:number format="1."/> <xsl:value-of select="Content"/> </p> <p 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> </p> </p> </xsl:template> <xsl:template match="PanDuan"> <p class="PanDuan" style=" width : 300 px"> <p class="Content" style=" float :left ;width:70%"> <xsl:number format="1."/> <xsl:value-of select="Content"/> </p> <p class="Choices" style="float :right ;width:25%"> <input name="{@Id}" type="radio" value="1"/>Y <input name="{@Id}" type="radio" value="0" />N </p> </p> </xsl:template> <xsl:template match="TianKong"> <p class="TianKong"> <xsl:number format="1."/> <xsl:value-of select="rules:ChangeTextBox(string(Content))" disable-output-esc api ng="yes"/> </p> </xsl:template> <xsl:template match="JianDa"> <p class="JianDa"> <p class="Content"> <xsl:number format="1."/> <xsl:value-of select="Content"/> </p> <p class="Input"> <textarea name="{@Id}" cols="70" rows="8"></textarea> </p> </p> </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>
以上就是使用xlst将xml转换html的示例代码的详细内容,更多请关注其它相关文章!