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生命周期包括加载、初始化、服务、销毁四个阶段。在...
街道级行政区划shp矢量数据,wgs84坐标系,下载直接使用
街道级行政区划shp数据,wgs84坐标系,直接下载使用。
街道级行政区划shp矢量数据,wgs84坐标系,下载直接使用
轻量级密码算法LBlock的FPGA优化实现.docx
街道级行政区划shp矢量数据,wgs84坐标系,下载直接使用
Git 资料 progit-zh-v2.1.1.pdf
街道级行政区划shp数据,wgs84坐标系,直接下载使用。
篮球计分器FPGA附程序..doc
街道级行政区划shp数据,wgs84坐标系,直接下载使用。
内容概要:本文档全面介绍了Linux开发的基础知识、应用场景、环境搭建、常用命令、Shell脚本编程以及C/C++和Python开发等内容。首先阐述了Linux开发的重要性及其在服务器端开发、嵌入式开发和系统运维等领域的广泛应用。接着详细讲解了如何选择合适的Linux发行版并安装系统,配置开发环境,包括安装必要的开发工具和配置SSH服务。文档还深入讲解了Linux基础命令,如文件和目录操作、文件内容查看与编辑、进程管理和权限管理。此外,介绍了Shell脚本编程的基本语法,包括变量、条件语句、循环语句和函数定义。针对C/C++和Python开发,文档分别讲解了编译器安装、程序编写与编译、调试方法及使用虚拟环境等内容。最后,简要介绍了Linux内核开发的相关知识,包括下载编译内核、内核模块开发等,并推荐了相关学习资源。 适合人群:对Linux开发感兴趣的初学者及有一定经验的研发人员,尤其是希望深入掌握Linux开发技能的开发者。 使用场景及目标:①掌握Linux开发环境的搭建与配置;②熟悉Linux基础命令和Shell脚本编程;③学习C/C++和Python在Linux下的开发流程;④了解Linux内核开发的基本概念和技术。 阅读建议:此文档内容丰富,涵盖面广,建议读者根据自身需求选择性阅读,并结合实际操作进行练习。特别是对于初学者,应先掌握基础命令和开发环境的搭建,再逐步深入到编程语言和内核开发的学习。
街道级行政区划shp数据,wgs84坐标系,直接下载使用。
街道级行政区划shp数据,wgs84坐标系,直接下载使用。
街道级行政区划shp数据,wgs84坐标系,直接使用。
内容概要:本文档《word练习题.docx》是一份详细的Word操作练习指南,涵盖了从基础到高级的各种功能。文档分为三个主要部分:内容编辑、页面布局和高效文档。内容编辑部分包括文本格式化、段落设置、项目编号、制表位、边框与底纹等练习;页面布局部分涉及分节符、分栏、页眉页脚、水印等设置;高效文档部分则聚焦于样式管理、导航窗格、题注、书签、超级链接、脚注与尾注、交叉引用等功能。每个练习都有具体的操作步骤,帮助用户掌握Word的各种实用技巧。 适合人群:适用于Word初学者及希望提高Word技能的中级用户,尤其是需要频繁使用Word进行文档编辑和排版的办公人员。 使用场景及目标:①帮助用户熟悉Word的基本操作,如文本编辑、格式设置等;②提升用户的文档排版能力,学会设置复杂的页面布局;③提高工作效率,掌握高效文档管理技巧,如样式应用、题注和交叉引用等。 其他说明:此文档不仅提供了具体的练习题目,还附带了详细的步骤说明,用户可以根据指引逐步完成每个练习。此外,文档中的一些练习涉及到智能文档和Office智能客户端的应用,有助于用户了解Word在企业级应用中的潜力。建议用户按照章节顺序逐步学习,实践每一个练习,以达到最佳的学习效果。
街道级行政区划shp数据,wgs84坐标系,直接下载使用。
全球腐败感知数据(2000-2023)——3000行 33个指标 关于数据集 该数据集包含3000行和33列,涵盖了2000年至2023年的腐败感知指数(CPI)数据和各种治理指标。它包括国家排名、分数和其他指标,如公共部门腐败、司法腐败、贿赂指数、商业道德、民主指数、法治、政府效率、经济指标和人类发展指数。 这些数据可用于: 腐败趋势分析 腐败对GDP、人类发展指数和治理的影响 跨国比较 数据可视化和机器学习模型 该数据集对研究人员、数据分析师、政策制定者和对研究全球腐败趋势非常有用。
毕业设计(论文) 基于FPGA的数字频率计设计.doc
街道级行政区划shp数据,wgs84坐标系,直接使用。
NTI1NDU3NTAyODMwOTQxMzI0M18xNzQ0Nzk1MTk1OTgz_6.JPG