xsd

Java通过XML Schema校验XML

拟墨画扇 提交于 2020-03-28 12:25:53
Java通过XML Schema校验XML XML的校验在XML处理中非常常见,如果没有有效的办法来校验XML的合法性,往往会导致很多问题。 XML的校验是通过XML Schema(XSD) 或DTD文件的语法规范来校验的。DTD现在越来越不受欢迎了,在此选用XSD来校验。 Java校验XML是件和扯淡的事情,因为Sun的XML相关软件包会令你云里雾里。 W3C这块的XML相关的规范相当的多,这也是导致XML处理器起来费劲的主要原因。要想精通这些规范和相关的API,实在是异想天开(新的规范在不停出,越来越多!)。 校验的原理是通过读取解析XML的时候设置校验的XSD和校验错误处理器,顺便校验的。 下面不扯这些废话了,我用DOM4j结合javaxml api使用XSD来校验一个xml有效性,下面这个例子虽然和蹩脚,但是也费了一番功夫,放出来大家研究吧,有更好的实现也希望能和我一同分享。 例子如下: XML文件 <? xml version ="1.0" ?> < note xmlns ="http://www.w3school.com.cn" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation ="http://www.w3school.com.cn file:///D:/_dev_stu

Spring学习遇到的问题-1

混江龙づ霸主 提交于 2020-03-25 13:28:53
applicationContext配置文件: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd"> <bean id = "person" class = "springl.com.beans.Person"> <property name = "id" value = "9528"/> <property name = "name" value = "小玉花"/> <property name = "sex" value = "女"/> </bean> </beans> 错误信息: 异常原因: schemaLocation 地址拼写错误导致异常。 解决方法: 检查拼写,最好是从spring-beans.jar/spring-context.jar 下复制, 路径及文件

spring源码学习之:xml配置文件标签自定义

旧城冷巷雨未停 提交于 2020-03-23 03:15:15
Spring框架从2.0版本开始,提供了基于Schema风格的XML扩展机制,允许开发者扩展最基本的spring配置文件(一 般是classpath下的spring.xml)。试想一下,如果我们直接在spring.xml中加入一个自定义标签<mytag id="aty"></matag>,会发生什么呢?spring框架启动的时候会报错,因为spring根本不认识我们自定义的& lt;mytag>,这样对spring.xml的校验就会失败,最终结果就是框架不能启动。有什么方法,能够让spring认识并加载解析我们自 定义的<mytag>呢?这就是spring提供的xml扩展机制。我们可以在spring.xml中加入自己的标签,之后spring会帮 我们解析并纳入自己的管理范围内,这也就是说我们扩展了spring的功能。 现在我们来看下怎么实现这个功能,可以参考spring帮助文档中的extensible-xml.html。我们知道如果在需要在spring.xml中配置数据源,需要进行如下的配置: <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property

XSD and polymorphism

℡╲_俬逩灬. 提交于 2020-03-21 20:12:54
问题 I am kinda repeating this question bit the 1st time it was asked incorrectly. I have this: <xsd:complexType name="A"> <xsd:sequence> <xsd:element name="options" type="options"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="B"> <xsd:complexContent> <xsd:element name="options" type="ex_options"/> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="options"> <xsd:sequence> ...some options </xsd:sequence> </xsd:element> <xsd:complexType name="ex_options"> <xsd

RDLC报表——动态添加列

為{幸葍}努か 提交于 2020-03-19 12:21:27
前言 最近接到一个需求:在给定的数据源中,某(些)列,可能需要单独统计,是否单独统计需要根据报表配置来决定。由于项目中一直使用RDLC来生成报表,临时为了一个需求换一种技术也不是很现实,所以自己捉摸了下。 认识RDLC RDLC的主要有三个部分: (1)*.rdlc文件,本质是一个XML文件,这里定义了报表样式; (2)*.xsd文件,也是一个XML文件,这里定义了数据源格式; (3)*.aspx文件,呈现报表的web页面。 注:RDLC是什么,可参考蜡人张的博客: http://www.cnblogs.com/waxdoll/archive/2006/02/25/337713.html 如何实现动态 (1)LocalReport对象提供了方法LoadReportDefinition(Stream stream)和属性ReportPath保证了我们不仅可以从流中读取文件,也可以指定本地文件路径加载rdlc文件; (2).rdlc,.xsd都是xml文件,可使用XmlDocument进行读写操作。 实例 下面实现一个学生成绩统计报表为例,介绍如何实现动态列。 第一步 准备工作 新建空web项目->添加xsd文件,创建一个table(文件名Students.xsd)->添加rdlc文件,与xsd的table关联,并绑定相关字段(文件名FirstRdlc.rdlc)。 Students

How to select boolean-valued nodes in XPath?

爱⌒轻易说出口 提交于 2020-03-18 14:52:33
问题 I have an XML document and associated schema that defines several attributes as having the xs:boolean type. The lexical values for xs:boolean are true , false , 1 , and 0 , so it seems that to correctly select attributes with a particular boolean value I'd have to write something like: @attribute='true' or @attribute='1' or @attribute='false' or @attribute='0' This seems verbose. You might expect something like boolean(@attribute) to work, but the boolean function has different semantics. Is

WSDL 详解

冷暖自知 提交于 2020-03-05 07:30:35
转载自: http://kalogen.javaeye.com/blog/418958 WSDL (Web Services Description Language,Web服务描述语言)是一种XML Application,他将Web服务描述定义为一组服务访问点,客户端可以通过这些服务访问点对包含面向文档信息或面向过程调用的服务进行访问(类似远程过程调用)。WSDL首先对访问的操作和访问时使用的请求/响应消息进行抽象描述,然后将其绑定到具体的传输协议和消息格式上以最终定义具体部署的服务访问点。相关的具体部署的服务访问点通过组合就成为抽象的Web服务。 本文将详细讲解WSDL文档的结构,并分析每个元素的作用。 一:WSDL定义 WSDL是一个用于精确描述Web服务的文档,WSDL文档是一个遵循WSDL XML模式的XML文档。WSDL 文档将Web服务定义为服务访问点或端口的集合。在 WSDL 中,由于服务访问点和消息的抽象定义已从具体的服务部署或数据格式绑定中分离出来,因此可以对抽象定义进行再次使用:消息,指对交换数据的抽象描述;而端口类型,指操作的抽象集合。用于特定端口类型的具体协议和数据格式规范构成了可以再次使用的绑定。将Web访问地址与可再次使用的绑定相关联,可以定义一个端口,而端口的集合则定义为服务。 一个WSDL文档通常包含7个重要的元素,即types、import

eclipse编写XML需了解事项

蹲街弑〆低调 提交于 2020-02-28 14:28:00
本文简单介绍使用eclipse编写xml时需了解的几点: 1、xml的头是什么意思? 以编写Spring的配置文件为例来讲解xml头的含义:以下是spring一个最简单的配置 <beans // xml根元素 ,会根据需要而不同,如spring该配置为beans,maven的pom文件的根元素是Project //根元素也是要根据实际情况配置正确 xmlns="http://www.springframework.org/schema/beans" //xmlns:xml namespace命名空间,此处的命名空间没有声明前缀,所以是默认命名空间。注意: 此处不会检验所编写的xml格式标签是否正确,URL只作为命名空间 ,如Java项目中的package的作用一样,避免重名的尴尬。理论上这个URL可以随便定义,只要是别重复就可以 了,不过很多公司都会把这个URL指向特定的资源。 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" //也是命名空间,此处定义了前缀:xsl,只有使用了该前缀的才是使用了该命名空间的。该命名空间比较特殊,从URL可看到:XMLSchema-instance。用我的理解就是,它是用来指定"xml格式定义文件"的实例。 xsi:schemaLocation="http://www

SpringMVC版本报错解决办法

北慕城南 提交于 2020-02-27 21:06:37
报错代码: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:context="http://www.springframework.org/schema/context" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:schemaLocation=" 6 http://www.springframework.org/schema/beans 7 http://www.springframework.org/schema/beans/spring-beans.xsd 8 http://www.springframework.org/schema/context 9 http://www.springframework.org/schema/context/spring-context.xsd"> 10 <context:component-scan base-package="cn.aynu.spring.controller"/> 11 12 </beans> 提示错误: The errors below were detected

How to define a default value for an option element using XSD?

橙三吉。 提交于 2020-02-20 09:00:25
问题 What I like to do: I want to specify an option tag in the schema, for example: <xsd:element name="my_element" type="my_type" minOccurs="0" maxOccurs="1"/> If the element does not occur at all, there should be a default value for this parameter. Of course I could define this default value in my code, which calls the XML parser. But I think the correct place to specify the default value would be in the *.xsd schema file (since the default value is part of the interface defined by the schema).