如何将xml文件与xslt文件进行合并

骑砍Ⅱ霸主MOD开发(17)-使用XSLT文件合并覆写XML文件 k</test> <test id = '78'>k</test>开发MOD:NativeTest/ModuleData/a.xml <test id = '12'>k</test> <test id = '78'>k 阅读详情

xml文件(XMLFile1.xml)如:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <folder>
  <node>folder</node>
  </folder>
  <info>
    <node title="姓名" id="Name" type="input" style="needcheck:true;isnull:false;minlength:2;des:姓名"></node>
    <node title="行业" id="Trade" type="select" style="needcheck:true;isnull:false;des:行业">
      <option selected="selected" value="">请选择</option>
      <option value="IT">IT</option>
      <option value="Finance">金融</option>
    </node>
    <node title="区号" id="AreaCode" type="input" style="needcheck:true;isnull:true;isnum:true;minlength:3;maxlength:4;des:区号"></node>
    <node title="电话" id="Phone" type="input" style="needcheck:true;isnull:true;isphone:true;des:;des:电话"></node>
    <node title="分机" id="Extension" type="input" style="needcheck:true;isnull:true;isnum:true;minlength:3;maxlength:4;des:分机"></node>
    <node title="性别" id="Gender" type="radio"  style="needcheck:true;isnull:true;des:性别">
      <option selected="selected" value="man">男</option>
      <option value="woman">女</option>
    </node>
    <node title="爱好" id="Interest" type="checkbox" style="needcheck:true;isnull:false;des:爱好">
      <option value="car">汽车</option>
      <option value="sport">运动</option>
      <option value="music">音乐</option>
    </node>
    <node title="省" id="province" type="province" style="needcheck:true;isnull:false;des:省"></node>
    <node title="市" id="city" type="city" style="needcheck:false;isnull:true;des:市"></node>
  </info>
  <script>
    <node>onsetup();</node>
  </script>

</root>

xslt文件(XSLTFieldStyle.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" exclude-result-prefixes="msxsl"
>
  <xsl:output method="html" indent="yes"/>
 <!-- define path template -->
 <xsl:template name="folder">
  <xsl:element name="input">
   <xsl:attribute name="name" >folder</xsl:attribute>
   <xsl:attribute name="id" >folder</xsl:attribute>
   <xsl:attribute name="type" >hidden</xsl:attribute>
   <xsl:attribute name="value" >
    <xsl:value-of select="." />
   </xsl:attribute>
  </xsl:element>
 </xsl:template>
 <!--end path-->
  <!-- define input template -->
  <xsl:template name="input">
    <tr>
      <td>
        <label>
          <xsl:value-of select="@title" />
        </label>
      </td>
      <td>
        <xsl:element name="input">
          <xsl:attribute name="id">
            <xsl:value-of select="@id" />
          </xsl:attribute>
          <xsl:attribute name="name">
            <xsl:value-of select="@id" />
          </xsl:attribute>
          <xsl:attribute name="class">InputValue</xsl:attribute>
          <xsl:attribute name="type">text</xsl:attribute>
          <xsl:attribute name="style">
            <xsl:value-of select="@style" />
          </xsl:attribute>
        </xsl:element>
      </td>
    </tr>
  </xsl:template>
  <!--end input-->

  <!-- define select template -->
  <xsl:template name="select">
    <tr>
      <td>
        <label>
          <xsl:value-of select="@title" />
        </label>
      </td>
      <td>
        <xsl:element name="select">
          <xsl:attribute name="id">
            <xsl:value-of select="@id" />
          </xsl:attribute>
          <xsl:attribute name="name">
            <xsl:value-of select="@id" />
          </xsl:attribute>
          <xsl:attribute name="style">
            <xsl:value-of select="@style" />
          </xsl:attribute>
          <xsl:attribute name="class">Select</xsl:attribute>
          <xsl:for-each select="option">
            <xsl:element name="option">
              <xsl:attribute name="value">
                <xsl:value-of select="@value" />
              </xsl:attribute>
              <xsl:if test="@selected!=''">
                <xsl:attribute name="selected">
                  <xsl:value-of select="@selected" />
                </xsl:attribute>
              </xsl:if>
              <xsl:value-of select="." />
            </xsl:element>
          </xsl:for-each>
        </xsl:element>
      </td>
    </tr>
  </xsl:template>
  <!--end select-->

  <!-- define radio & checkbox template-->
  <xsl:template name="choose">
    <tr>
      <td>
        <label>
          <xsl:value-of select="@title" />
        </label>
      </td>
      <td>
        <xsl:element name="div">
          <xsl:variable name="id" select="@id"></xsl:variable>
          <xsl:variable name="type" select="@type"></xsl:variable>
          <xsl:attribute name="id">
            <xsl:value-of select="@id" />
          </xsl:attribute>
          <xsl:attribute name="style">
            <xsl:value-of select="@style" />
          </xsl:attribute>
          <xsl:for-each select="option">
            <xsl:element name="input">
              <xsl:attribute name="name">
                <xsl:value-of select="$id" />
              </xsl:attribute>
              <xsl:attribute name="value">
                <xsl:value-of select="@value" />
              </xsl:attribute>
              <xsl:attribute name="type">
                <xsl:value-of select="$type" />
              </xsl:attribute>
              <xsl:if test="@selected!=''">
                <xsl:attribute name="checked">
                  <xsl:value-of select="@checked" />
                </xsl:attribute>
              </xsl:if>
            </xsl:element>
            <xsl:value-of select="." />
          </xsl:for-each>
        </xsl:element>
      </td>
    </tr>
  </xsl:template>
  <!-- end radio & checkbox-->

  <!-- define province & city template-->
  <xsl:template name="local">
    <tr>
      <td>
        <label>
          <xsl:value-of select="@title" />
        </label>
      </td>
      <td>
        <xsl:element name="select">
          <xsl:attribute name="id">
            <xsl:value-of select="@id" />
          </xsl:attribute>
          <xsl:attribute name="style">
            <xsl:value-of select="@style" />
          </xsl:attribute>
          <xsl:attribute name="name">
            <xsl:value-of select="@id" />
          </xsl:attribute>
          <xsl:attribute name="onchange">
            <xsl:if test="@type='province'">on_pro_select_change()</xsl:if>
            <xsl:if test="@type='city'"></xsl:if>
          </xsl:attribute>
        </xsl:element>
      </td>
    </tr>
  </xsl:template>
  <!-- end province & city-->

  <!-- merge-->
  <xsl:output method="html" encoding="gb2312" media-type="text/html"/>
  <xsl:template match="/">
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <title>Untitled Page</title>
        <script type="text/javascript" language="javascript" src="../../Scripts/jquery-1.4.1.js">var a;</script>
        <script type="text/javascript" language="javascript" src="../../Scripts/jquery.form.js">var a;</script>
        <script type="text/javascript" language="javascript" src="../../Scripts/City.js">var a;</script>
        <script type="text/javascript" language="javascript" src="../../Scripts/CheckFormInput.js">var a;</script>
        <script type="text/javascript" language="javascript">
          $(function () {
          $('#myform').submit(function () {
          $('#myform').ajaxSubmit({
          beforeSubmit: ValidateInput,
          success: SuccessEvent
          });
          return false;
          });
          function SuccessEvent(responseText, statusText) {
          alert(responseText);
          }
          function ValidateInput() {
          check_form();
          return false;
          }
          })
        </script>
      </head>
      <body>
        <form action="../../SaveUserInformation.aspx" method="post" name="myform">
   <!-- path folder-->
   <xsl:for-each select="root/folder/node">
    <xsl:call-template name="folder"></xsl:call-template>
   </xsl:for-each>
   <!-- path end-->
        <table>
          <xsl:for-each select="root/info/node">
            <xsl:choose>
              <xsl:when test="@type='input'">
                <xsl:call-template name="input"></xsl:call-template>
              </xsl:when>
              <xsl:when test="@type='select'">
                <xsl:call-template name="select"></xsl:call-template>
              </xsl:when>
              <xsl:when test="@type='radio'or @type='checkbox'">
                <xsl:call-template name="choose"></xsl:call-template>
              </xsl:when>
              <xsl:when test="@type='province'or @type='city'">
                <xsl:call-template name="local"></xsl:call-template>
              </xsl:when>
              <xsl:otherwise>
                <xsl:call-template name="input"></xsl:call-template>
              </xsl:otherwise>
            </xsl:choose>
          </xsl:for-each>
          <tr>
            <td colspan="4">
              <input type="submit" id="submit" value="submit" />
            </td>
          </tr>
        </table>
  <script type="text/javascript" language="javascript">
          <xsl:for-each select="root/script/node">
            <xsl:value-of select="."/>
          </xsl:for-each>
        </script>

        </form>
      </body>
    </html>
  </xsl:template>
  <!-- end merge-->
</xsl:stylesheet>

后台代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using System.Xml;
using System.Xml.Xsl;
using System.IO;
using System.Collections;
using System.Web;

namespace RegistrationAndQuestionnaireGenerator.Common
{
    public class Generator
    {
        /// <summary>
        /// meger xml and xsl to the html
        /// </summary>
        /// <param name="xmlPath">xml file path</param>
        /// <param name="xslPath">xsl</param>
        /// <returns></returns>
        public static String MegerToHtml(string xmlPath, string xslPath)
        {
            XmlReader _xmlxml = XmlReader.Create(xmlPath);
            XmlReader _xmlxsl = XmlReader.Create(xslPath);
            XslCompiledTransform xslct = new XslCompiledTransform();
            xslct.Load(_xmlxsl);
            MemoryStream ms = new MemoryStream();
            XmlTextWriter xmltxtWr = new XmlTextWriter(ms, null);
            xslct.Transform(_xmlxml, xmltxtWr);
            StreamReader st = new StreamReader(ms);
            ms.Seek(0, SeekOrigin.Begin);
            return st.ReadToEnd();
        }

    }

}

*.asp.cs后台代码:

        protected void Button1_Click(object sender, EventArgs e)
        {
            //string str = Common.Generator.MegerToHtml(Server.MapPath("XMLFile1.xml"), Server.MapPath("XSLTFile2.xslt"));
            //string path = Server.MapPath("XMLFile1.xml").Replace("XMLFile1.xml", "demo.htm");
            //File.WriteAllText(path, str,Encoding.GetEncoding( "gb2312"));
            //Response.Redirect("demo.htm");
            string str = Common.Generator.MegerToHtml(Server.MapPath("testContent.xml"), Server.MapPath("XSLTFieldStyle.xslt"));
            string path = Server.MapPath("testContent.xml").Replace("testContent.xml", "demo.htm");
            File.WriteAllText(path, str, Encoding.GetEncoding("gb2312"));
            Response.Redirect("demo.htm");
        }

Java中合并XML文档的设计与实现 java对xml的操作,可以看到xml在java的操作 立即下载

相关推荐

EXCEL 多文件合并成一个

XLS 文件合并,可以批量合并成一个表,然后可以设置统一的页眉页脚——,

XSLT中的字符串拼接

为一个需求中,需要用到xslt的字符串拼接,换成java的思维可以这样去说这个问题: 假设有个对象叫Return,它有period和value属性,想把Return的数组(假设叫Return[] returns)中period取出来拼接成字符串,java中很简单,声明一个StringBuilder 或者 StringBuffer,把returns进行循环,把其中的period的值取出来,用app...

tony_lei的专栏 2212

Dify插件离线部署全攻略:从下载到安装的完整流程

本文详细介绍了Dify插件离线部署的完整流程,针对企业内网等无网络环境需求。核心步骤包括在联网环境下载插件包、在特定Python 3.12.9环境下使用专用工具进行离线重打包,以及最终在离线Dify环境中安装验证。重点解决了离线安装的核心难题,并提供了环境配置、批量处理和故障排查等实用技巧,帮助用户实现Dify插件的顺利离线部署。

seed的博客 656

XSLT常见问题及解决(四) xsl中如何给属性值拼接字符串

问题描述: 如何在遍历取到xml中的图片后,实现html正文中的每一张图片都不同; 即如何在获取到的src基础上,经过拼接得到该xsl相对位之下的该图片路径,给变量值拼接字符串; eg:获取到xml中的href属性值,如何拼接后实现img的src的相对路径 解决: 直接在href值的引号中拼接字符串 xsl:

baizaozao的博客 2260

Windows系统下复现PointNet++算法

本文详细介绍了如何在Windows系统下复现PointNet++算法,内容包括程序下载、环境配置、数据集准备以及三个主要任务(语义分割、分类、部件分割)的实现步骤和常见报错解决方法。通过遵循本文的指导,用户可以顺利完成PointNet++算法的复现。

LingYi_5的博客 4326

六轴机器人正解

采用的是John H.Craig在【机器人学导论】中的改进DH模型 1.六轴坐标系 2.DH参数 i αi−1\alpha_{i-1}αi−1​ ai−1a_{i-1}ai−1​ did_idi​ θi\theta_iθi​初值 1 0 0 0 0 2 -90 a1a_1a1​ 0 -90 3 0 a2a_2a2​ 0 -90 4 -90 a3a_3a3​ d4d...

m0_37581770的博客 2511

合并 XML 文件

合并 XML 文件

outlierman的博客 1851

别再为UE5像素流部署踩坑了!Windows服务器单实例保姆级避坑指南(含Node.js证书、coturn空文件夹等常见问题解决)

本文提供了UE5像素流在Windows服务器单实例部署中的全面解决方案,涵盖Node.js证书过期、coturn空文件夹等常见问题。通过详细的步骤指导和配置建议,帮助开发者高效完成部署,避免常见陷阱,特别适合局域网环境下的应用场景。

weixin_30315435的博客 462

合并多个XML文件的简单方法 —— 外部实体引用

    下面的例子通过外部实体引用,将文件order1.xml与文件order2.xml合并为一个文件directory.xml清单1. 要合并的xml文档order1.xml:      ksu-0384    LCD液晶显示器    1    358.00          ksu-0511    音箱    1    16.50          ksu-7710    鼠标   

IDK的完美生活 8546

YOLOv8【第十一章:视频追踪与流处理篇·第3节】匈牙利算法(Hungarian Algorithm)与 KM 算法匹配机制详解!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 443

PyQt5数据库开发3 6 QSqlQuery完整实操案例【图文详解】

PyQt5数据库开发3 6.1 QSqlQuery实操案例【多图详解】,本文有点长,主要每一个步骤都有对应的图文教程!!!

qq_53317005的博客 2961

用xslt合并两个xml文件

link.xml 文件       001    张三    男    上海    1        002    李四    男    湖南    2   link2.xml 文件        1    2008002        2    2008001        3    2008003        4    2008004  link.xsl 文件    xmlns:

belinda 3231

openmediavault(OMV) (1)安装部署

EXT3(Third Extended File System): EXT3 是 Linux 中广泛使用的日志文件系统,是 EXT2 文件系统的升级版本。这里可以根据自己的需求进行设置,目前只设置了自动登出为1天,为方便后续配置使用,其他设置可根据自己的具体需求进行设置。通过cd 命令进入到我们的raid存储中,通过ls发现里面没有任何的数据,因为我们的raid存储中还未创建任何数据。我的系统要安装在100G的磁盘上,故选择100G的磁盘,实际可以根据具体情况选择。

Monster✺◟(∗❛ัᴗ❛ั∗)◞✺的博客 2167

xslt合并单元格_如何将文档与XSLT合并

XSLT提供了灵活性和强大功能的完美结合。 XSLT不仅对发布网站有用,而且对转换或处理XML文档也很有用。 既然XSLT处理器随Java平台一起提供了(通过javax.xml.transform )包,您就不能忽略它。 XSLT程序员经常提出的问题是,您应该如何处理多个文档? Java API仅需要两个参数:源(输入XML文档)和结果(保存输出的位置)。 尽管此API适用于许多应用程序,...

cuyi7076的博客 658

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

java xml xsl 多文件,如何使用#Java Script或#XSL将2个XML文件合并为一个?

I have 02 XML files, I need to generate a report with the data combination of both the files. either Out put as an HTML file or Single XML with using XSLTFile1Kamal29212342581247-293brown1000Wasantha2...

weixin_39719729的博客 129

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

php如何连接xml,php – 如何使用匹配的节点连接两个XML文件

我需要找到一种方法来连接两个XML文件,当它们具有匹配的节点时.从我收集的内容可以用许多不同的语言来完成……有没有PHP或AJAX方法来做到这一点?从SO上的其他帖子我看到XSLT解决方案..我真的不知道.这是最好/首选的方法吗?如果是这样,知道任何有用的XSLT教程吗?例如,XML-1就像:和XML-2:检查< B> ==< B>的最佳方法是什么?然后添加< E&g...

weixin_33316599的博客 144

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

xml合并

利用xslt模板进行合并 /* * 合并xml文件 */ public void testMerge() throws Exception{ String aa = "F:/workspace/bme/mystudy/uconfig/11.xml"; String bb = "F:/workspace/bme/mystudy/uconfig/22.xml"...

NetFishTail的专栏 310

ssis导入xml_SSIS包中的XML任务概述

ssis导入xml 介绍 (Introduction) We can use an SSIS package to perform various tasks such as data import, transform, and get output in various formats. Once we launch Visual Studio 2019 and create an ...

culuo4781的博客 1592

java xslt 2,如何通过XSLT合并Java中的2个XML流

I'd like to merge 2 XML streams (strings) in Java, necessarily by XSLT (that I could change the transformation), but the problem is that the XMLs come as a string. There are many examples, but through...

weixin_42505503的博客 159

实例简析XPath串函数和XSLT

<!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--><script type="text/javascript"

zgqtxwd的专栏 586

CleanYourTV 把电视去广告搬到了 Wi-Fi 上:不卸载任何东西,还能一条命令退回去

拿起遥控器按下电源键,开机动画放完,屏幕中间弹出来的不是应用列表,而是十几秒的开机广告和一条推荐内容流。这几乎是过去十年买智能电视的默认剧本,内存偏小的机型还要再转一圈圈才见得到主界面。CleanYourTV 做的事情很直接:通过 Wi-Fi 把厂商的遥测、广告和内容流禁用掉,再装一个 Apple TV 风格的原生 HOME 启动器,全程不 root、不刷机、不卸载任何应用,改完了想退回去只要一条

gitblog_00781的博客 929

【正版软件】Altova DiffDog 一款专业的 XML 感知的比较 / 合并工具,可让您比较和合并文本或源代码文件、XML 或 JSON 文件以及 Word 文档。

Altova DiffDog是独特的XML感知差异/合并工具,可让您比较和合并文本或源代码文件,XML或JSON文件以及Word文档。比较和同步目录、数据库架构和内容等。

2128

XSLT2.0 从外部读取信息并分析生成对应文件.采用xsl:for-each-group进行排序输出

解析器:Saxon XSLT2.0相对于XSLT1.0增加了unparsed-text() collection() 函数.并且支持xsl:for-each-group来对数据进行排序. 以下代码主要实现的过程是: A.使用unparsed-text()读取外部文件信息. B.使用xsl:result-document生成对应信息的XML文件.(使用XSLT2.0 tokenize

RickyLin 2242

Kettle 使用备忘录 1- 生成xml文件

最近被抓壮丁去弄一个ETL的项目,要求用开源的kettle去替代原来平台上的datastage。 本文主要是记录下在使用kettle过程中碰到的头疼的问题和解决方案。。。 1. 利用 excel中的数据生成xml文件 kettle中的xml文件输出组件的功能其实是很弱的,所以要生成较为复杂的xml文件时需要使用组件: add xml ,  xml join,  placeholder, js

gao1738的专栏 911

java 合并多个大文件,java – 将多个大型xml文件高效合并为一个

我搜索了网络,我上下搜索stackoverflow.没有解决方案.虽然我在纯xslt here中找到了解决方法.但问题是产生的xml将是几百MB大.所以我必须用Java中的SAX来做这件事. (请不要xslt解决方案,虽然我用xslt标记它;-))让我更详细地解释一下.我有几个应该解析的多个xml文件(最好是InputSteam).文件或InputStream看起来像inputstream1tes...

weixin_39617702的博客 357
上一篇: 网上搜集的一个比较实用的图片操作类
下一篇: GridView自带的分页功能实现
ArvinStudy
博客等级 码龄15年 83粉丝 193原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值