• 用xlst将xml转换html


    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="300px">
          <div class="Content" style="float:left;70%">
            <xsl:number format="1."/>
            <xsl:value-of select="Content"/>
          </div>
          <div class="Choices" style="float:right;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="300px" xmlns="">
          
    <div class="Content" style="float:left;70%">1.刘备建立了蜀国?</div>
          
    <div class="Choices" style="float:right;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>



  • 相关阅读:
    java-HTML&javaSkcript&CSS&jQuery&ajax
    HTML&javaSkcript&CSS&jQuery&ajax-XSS
    XSS-HTML&javaSkcript&CSS&jQuery&ajax-CSS
    XSS-HTML&javaSkcript&CSS&jQuery&ajax
    HTML&javaSkcript&CSS&jQuery&ajax-Css
    论坛IP地址追踪&路由器密码嗅探
    java ArrayList
    WireShark Flow capture analysis
    Software tips
    301. Remove Invalid Parentheses
  • 原文地址:https://www.cnblogs.com/xhan/p/1057939.html
Copyright © 2020-2023  润新知