Extensible Markup Language (XML)
霍格沃兹有4个学院,他们分别是Gryffindor,Ravenclaw,Slytherin,Hufflepuff。Hermione,Harry,Ron他们在Gryffindor。
我们用一个简单的harry.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!-- introduction to XML markup -->
<Hogwarts>
<Gryffindor>
<student>Hermione</student>
<student>Harry</student>
<student>Ron</student>
</Gryffindor>
<Ravenclaw>
<student>Susan</student>
</Ravenclaw>
<Slytherin>
<student>Malfoy</student>
</Slytherin>
<Hufflepuff>
<student>WhoKnow</student>
</Hufflepuff>
</Hogwarts>
其中
<?xml version="1.0" encoding="UTF-8"?> 版本与编码
此外,还要注意这些
大小写敏感,<Hogwarts></Hogwarts>不可以</hogwarts>
必须是ASCII (American Standard Code for Information Interchange) 码,包含26个英文字母,0-9之间的数字,或者是特殊字符!- ?
(& 为 amp;), (< 为 <),( > 为 >), ( ‘ 为') ( “ 为").
如果要表示“<>&”则为<message><>&</message>
然后我们可以用右键,用IE浏览器打开它,如图
恩,看起来不错。不过仅仅这样描述数据很无聊的。我们再在开头加这样1行
<?xml-stylesheet type="text/xsl" href="magic.xsl"?>
href 装饰文件的位置
Extensible Stylesheet Language Transformations (XSLT)
Xsl是XML文件的修饰描述,比如,XML是数据,那么XSL就是数据的表现形式,你可以将它以任意的形式表现出来。我们新建一个magic.xsl文件
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<head><title>Magic School</title></head>
<body>
<p><b><h1>harry potter and the half blood prince</h1></b></p>
<xsl:apply-templates select="school"/>
</body>
</html>
</xsl:template>
<xsl:template match="school">
<p align="left">
<table border="1" width="300" bordercolor="black" bgcolor="blue">
<tr><b>welcome to our school <xsl:value-of select="@name"/>!!</b></tr>
<tr bgcolor="white">
<td>House_Name</td>
<td>Student_Name</td>
</tr>
<xsl:for-each select="house">
<tr bgcolor="white">
<td>
<xsl:value-of select="@name"/>
</td>
<td><xsl:value-of select="."/></td>
</tr>
</xsl:for-each>
</table>
</p>
</xsl:template>
</xsl:stylesheet>
我们再用ie打开之前的harry.xml文件
哦,就好像在浏览一个html文件,但是当我们点击查看-》源文件时。它依然是xml文件。
XSL文件作为XML的表现形式,负责表示展现数据的形式,我们来看magic.xsl文件的几个片段
<html>
<head><title>Magic School</title></head>
<body>
<p><b><h1>harry potter and the half blood prince</h1></b></p>
<xsl:apply-templates select="school"/>
</body>
</html>
这里我们使用html来描述它,因为在xml文件的开头加了
<?xml-stylesheet type="text/xsl" href="magic.xsl"?>它会来找寻这个装饰文件。
<xsl:apply-templates select="school"/>之后寻找school的装饰模板。
使用match属性在xml中寻找,符合类型的数据
<xsl:template match="school">
<table border="1">
<xsl:for-each select="house">
…
</xsl:for-each>
</table>
</xsl:template>
可以在 for-each里再加上
<xsl:sort select = "@name" order = "ascending"/>这样来排序
<xsl:value-of select="@name"/>
如果前面加了@符号是取属性.不加是取元素。
其它的用法,请参考相应的书籍
Document Type Definitions (DTDs) and Schema.
<!DOCTYPE MagicSchool SYSTEM "magic.dtd">
一个简单的dtd文件
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT MagicSchool (school*)>
<!ELEMENT school ( house* )>
<!ATTLIST school name ENTITY #REQUIRED>
<!ELEMENT house (student*)>
<!ATTLIST school name ENTITY #REQUIRED>
<!ELEMENT student (#PCDATA)>
它可以约束以下的我们的xml文件,限定有school开始,有多个house元素,并且必须要有名字。
<school name="Hogwarts"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="magic_schemas.xsd">
将harry.xml中的这一行修改,使用schemas的方式
schemas语法请参考
http://www.w3schools.com/Schema/schema_example.asp
dtd和schema验证请参考
http://www.dom4j.org/dom4j-1.6.1/faq.html#how-validate
http://www.iteye.com/problems/13525
一个例子
org.hibernate.cfg包中的Configuration类需要加载hibernate所需的所有的配置文件。而这其中可能会有很多的加载方式,比如File,Dir,InputStream,jar,URL… hibernate在这里创建了一个叫XMLHelper的类来专门负责创建Dom对象。而在Configuration类中,则有很多重载的方法,已应对各种数据加载方式。
直到获得一个File的路径,然后交给XMLHelper处理,在XMLHelper中有DOMReader,SAXReader两种方式加载方式。
Errorlogger做为XMLHepler的内部类,处理在加载过程中的错误,如:
//在public SAXReader createSAXReader 方法中设置ErrorHandler
saxReader.setErrorHandler( new ErrorLogger(file, errorsList) );
//ErrorHandler中的错误处理方法
public void error(SAXParseException error) {
log.error( "Error parsing XML: " + file + '(' + error.getLineNumber() + ") " + error.getMessage() );
errors.add(error);
}
public void fatalError(SAXParseException error) {
error(error);
}
public void warning(SAXParseException warn) {
log.warn( "Warning parsing XML: " + file + '(' + warn.getLineNumber() + ") " + warn.getMessage() );
}
//设定默认的EntityResolver
public static final EntityResolver DEFAULT_DTD_RESOLVER = new DTDEntityResolver();
DTDEntityResolver做为默认的dtd验证.请参考下图和hibernate源码
分享到:
相关推荐
在这个"闲人笔记1"中,博主通过HelloServlet的实现,旨在帮助读者理解Servlet的基础工作原理以及开发流程。 首先,让我们深入了解一下Servlet的生命周期。Servlet生命周期包括加载、初始化、服务、销毁四个阶段。在...
内容概要:本文详细介绍了利用组态王进行石灰石煅烧系统的仿真开发,涵盖实时曲线绘制、报警系统配置、报表生成功能等多个方面。文章从实际案例出发,通过具体的代码片段和操作步骤,讲解了如何实现温度PID控制、设备联锁、能源统计等功能。同时,作者分享了许多实践经验,如解决曲线不刷新问题、优化报警逻辑、提高报表生成效率等,帮助读者快速掌握组态王的核心技术和应用场景。 适合人群:对工业自动化感兴趣的初学者以及希望深入了解组态王使用的工程师。 使用场景及目标:适用于需要构建工业控制系统仿真模型的学习者或开发者,旨在通过实例演练提升对组态王的理解和运用能力,最终能够独立完成类似项目的开发。 其他说明:文中提供了丰富的代码示例和技术细节,有助于读者更好地理解和实践。此外,还特别强调了一些常见的错误和注意事项,如控件命名规范、数据源绑定规则等,确保项目顺利实施。
CAD绘制圆形洞室展示图的初步实现.docx
内容概要:本文详细介绍了基于C语言实现的三电平双机离网并联虚拟同步机控制算法。该算法主要用于解决储能逆变器和UPS系统中双机并联运行时遇到的问题,如功率分配不均、环流超标和动态响应不佳。文中展示了具体的下垂控制、环流抑制、动态响应优化以及中点电位平衡等核心技术的实现方式。此外,还讨论了如何通过自适应虚拟阻抗、状态观测器和查表法等手段提高系统的稳定性和效率。最终,该算法在实际项目中表现出色,实现了高效的功率分配和稳定的动态响应。 适合人群:从事电力电子、储能系统和UPS系统开发的技术人员,尤其是对C语言编程和控制算法有一定了解的研发人员。 使用场景及目标:适用于需要高效、稳定双机并联运行的储能逆变器和UPS系统的设计与开发。主要目标是解决双机并联时的功率分配不均、环流超标和动态响应慢等问题,确保系统在各种工况下的稳定性和可靠性。 其他说明:本文不仅提供了详细的代码实现,还分享了许多实用的调试技巧和实践经验,有助于读者更好地理解和应用这些技术。
方波信号发生器电路仿真,基于LM741运算放大器的方波信号发生器电路仿真设计及实现
2025年电子商务四级培训计划.doc
2023年高中信息技术Excel知识点整理.docx
内容概要:本文详细介绍了三菱FX5U PLC在工业自动化领域的以太网通讯实战经验,涵盖多种常见通讯方式的具体实现方法。主要内容包括:两台PLC之间的Socket通讯,通过C#上位机使用SLMP协议读取PLC寄存器,JE-C伺服电机的以太网控制,以及Modbus RTU和TCP的应用。每种通讯方式均提供了具体的代码示例和调试技巧,确保读者能够快速理解和应用。此外,还特别强调了常见的避坑指南,帮助解决实际操作中可能出现的问题。 适合人群:从事工业自动化、PLC编程及相关领域的工程师和技术人员,特别是那些希望深入了解三菱FX5U PLC以太网通讯机制的人群。 使用场景及目标:适用于需要进行PLC间通讯、PLC与上位机通讯、伺服电机控制以及Modbus协议应用的实际工程项目。目标是提高通讯效率,减少调试时间和错误发生率。 其他说明:文中提供的代码均为经过产线验证的真实程序,可以直接应用于实际项目中。同时,作者分享了许多宝贵的实践经验,有助于读者更好地掌握相关技能并避免常见错误。
计算融合图像(IDL 和 Python 代码)全方位性能评估(APA)指标及绘制 APA 图表的 R 代码
2023年软考信息处理技术员考试历年模拟真题三.docx
内容概要:本文详细介绍了社交聊天即时通讯App的开发要点,涵盖Android和iOS双端原生开发、朋友圈功能、三方云通讯以及支付功能对接。重点讨论了消息系统的优化、朋友圈图片九宫格布局、支付接口的安全性和性能优化等方面的内容。通过具体代码示例展示了如何处理消息发送、接收、状态管理、图片加载、支付回调等问题,并分享了一些实用的经验和技巧。 适合人群:具备一定移动开发经验的开发者,尤其是正在从事或计划从事社交类App开发的技术人员。 使用场景及目标:帮助开发者理解和掌握社交App开发的关键技术和最佳实践,确保消息传输稳定、朋友圈功能流畅、支付安全可靠。适用于希望提高社交App用户体验和技术架构稳健性的开发团队。 其他说明:文中提供了大量实战经验和代码片段,强调了跨平台一致性、性能优化和用户体验的重要性。同时提醒开发者关注平台特异性问题,如iOS和Android之间的差异,以及支付接口的安全校验等。
内容概要:本文详细介绍了信捷XC5-48T PLC和TG765 HMI在三号车间设备改造项目中的应用。重点讨论了四轴伺服控制系统的编程架构、状态机设计、HMI界面设计以及调试工具的使用。文章强调了多轴联动时序控制的重要性,展示了如何通过状态机和互锁机制确保系统的稳定性和可靠性。同时,HMI设计采用了分层式布局和防呆设计,提高了操作的安全性和便捷性。此外,文中还提到了一些实用的调试技巧和注释规范,为后续维护提供了便利。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程和HMI设计有一定基础的人群。 使用场景及目标:适用于需要进行多轴伺服控制系统设计和调试的工程项目。目标是帮助工程师理解和掌握信捷XC5-48T PLC和TG765 HMI的应用方法,提高系统的可靠性和易用性。 其他说明:文章不仅提供了具体的编程示例,还分享了许多实践经验,如状态机设计、互锁机制、防呆设计等,有助于读者更好地理解和应用相关技术。
自定义扩展,简化策略类,方便使用
2025年全国计算机软件专业高级程序员级试题.docx
内容概要:本文详细介绍了V公司提供的UDS协议栈源代码及其在汽车电子开发中的应用。该协议栈以其精简高效的代码结构、良好的底层外设驱动集成以及强大的状态机设计而著称。文中展示了典型的服务路由器函数、Flash驱动接口、CAN通信接口等关键部分的代码片段,并讨论了其在实际项目中的表现和优化技巧。此外,还提到了一些潜在的问题和解决方案,如内存管理和多线程处理等。 适合人群:从事汽车电子开发的技术人员,尤其是对UDS协议栈感兴趣的开发者。 使用场景及目标:适用于需要快速集成UDS协议栈并进行定制化开发的项目。主要目标是在保证稳定性和性能的前提下,减少开发时间和复杂度。 其他说明:文中提供了丰富的实例和实践经验,帮助读者更好地理解和应用V公司的UDS协议栈。同时提醒读者注意特定平台下的兼容性和优化问题。
作者以黄河流域78个地级行政单元为研究区,基于各省水资源公报、社会经济等数据,计算得到黄河流域78地市用水效率与调水工程效用空间格局数据集(2013-2020)。该数据集内容包括以下数据:(1)研究区范围数据;(2)历年各地市用水效率数据;(3)历年各地市水资源压力数据;(4)南水北调效用数据。数据集存储为.shp和.xlsx格式。由9个数据文件组成,数据量为4.41 MB(压缩为1个文件,2.80 MB)Ma, L., Wang, Q. Do water transfer projects promote water use efficiency? Case study of South-to North Water Transfer Project in Yellow River Basin of China. Water 2024, 16: 1367. https://doi.org/10.3390/w16101367.
内容概要:本文详细介绍了利用AD7124实现热电偶和Pt100测温的高精度方案,涵盖硬件设计、冷端补偿算法以及完整的源码实现。首先解释了Pt100的工作原理及其三线制和四线制连接方法,提供了具体的C语言代码示例用于计算Pt100电阻并转化为温度。接着讨论了热电偶的不同类型及其处理方法,展示了如何根据热电偶类型和测量电压计算温度。此外,深入探讨了NTC热敏电阻在冷端补偿中的应用,给出了相应的代码实现。最后,分享了整个方案的硬件设计要点,如AD7124的配置、滤波电路的设计等,并强调了源码的可移植性和优化技巧。 适合人群:从事温度测量领域的工程师和技术人员,尤其是对热电偶和Pt100传感器有一定了解的人群。 使用场景及目标:适用于需要高精度温度测量的应用场合,如工业自动化、实验室设备等。目标是帮助读者掌握基于AD7124的热电偶和Pt100测温系统的实现方法,包括硬件搭建、软件编程和冷端补偿等方面的知识。 其他说明:文中提供的源码和硬件设计方案可以直接应用于STM32平台,同时也适合作为其他MCU平台的参考。对于希望深入了解温度测量技术和提高测量精度的技术人员来说,本文是一份非常有价值的参考资料。
内容概要:本文详细介绍了5kW一字型永磁同步电机的设计过程,涵盖电磁场和温度场的优化。首先,通过调整定子辅助槽的参数,如槽宽、槽深和角度偏移,显著降低了齿槽转矩。其次,在温度场方面,采用高效的水冷系统和合理的散热筋设计,确保电机在高温环境下稳定运行。此外,文中还探讨了极弧系数优化、磁钢排列以及高频噪声抑制等问题。通过MotorCAD进行电磁-热耦合仿真,解决了多个设计难题,实现了高性能和可靠性。 适合人群:电机设计工程师、电磁场仿真技术人员、高校相关专业师生。 使用场景及目标:适用于高功率密度电机设计项目,旨在提高电机性能、降低能耗并延长使用寿命。目标是掌握永磁同步电机的关键设计技术和仿真方法。 其他说明:文中提供了大量Python和Matlab代码示例,帮助读者更好地理解和实践电机设计中的关键技术。同时强调了理论与实践经验相结合的重要性,为实际工程应用提供指导。
内容概要:本文详细介绍了基于逆退火算法改进的人工势场模型及其在路径规划领域的应用。首先指出了传统人工势场模型存在的局限性,即容易陷入局部最优解,难以应对动态变化的障碍物。接着阐述了逆退火算法的核心思想,即通过逐步扩大搜索范围,使模型能够在后期更容易摆脱障碍物的影响,从而准确到达目的地。文中提供了具体的Python代码实现,包括改进后的势场计算函数、路径规划主循环以及可视化部分。此外,还讨论了如何灵活调整障碍物参数,使得模型能够适应不同场景的需求。 适合人群:对路径规划算法感兴趣的科研人员、工程师和技术爱好者,尤其是那些希望深入了解人工势场模型及其改进方法的人群。 使用场景及目标:适用于机器人导航、游戏角色路径规划等领域,旨在提高路径规划的灵活性和准确性,解决传统模型中存在的局部最优问题。 其他说明:文章不仅提供了理论解释,还包括完整的可运行代码示例,便于读者理解和实践。同时,强调了逆退火算法在动态环境中表现出的优势,如快速响应障碍物变化的能力。
里面包含VGG16网络模型的markdown介绍文档以及学习案例代码,数据集采用FashionMNIST