其他的xsdym计算机考试分几个等级进口,都试过了wwWxsdymcom还是没能登上。

&&& 由于项目要使用到邮件功能,老大就叫我用ActiveMQ来管理邮件的发送,其好处网上百度,这里不说了,我想说说网上有好多号称可以运行的Spring+ActiveMQ的例子,下载下来后发现每个例子的**applicationContext.xml都在MyEclipse中出现错误(红点提示---看到就头痛了),几乎试验过所有的中文解决方法了,还是没法解决,大家都可以从英文提示那里知道IDE找不到schema文档,无法读取jar包里的activemq.xsd文件所引发。
&&& 找了一天的方法,还是那样,红点依旧,很沮丧,本人经受不起打击,这次的打击不小了。中文的方法无法解决,没办法,只好去试试英文的。本人英文不太好,只能死马当活马医了,很快就发现了个解决方法,原来之前试验过的一个中文方法的方向是正确的,不过不知道是那篇中文文章的作者手误还是不负责 ,可以肯定他没有试验过就发布的,不然怎么还是出现红点错误,而且一个错误,网上千千万万篇文章都是那样的复制、黏贴转载。给不少的新手带来了障碍。
以下是从英文网站复制过来的----将一些认为是重点的翻译一下
Newer versions of ActiveMQ have support for XML name space schema declarations to allow easier configuration of container beans. Adding the following XMLNS declaration to the beans container will allow you to use ActiveMQ’s amq name space.
&beans xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.apache.org/schema/core"
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-2.0.xsd
& http://activemq.apache.org/schema/core
& http://activemq.apache.org/schema/core/activemq-core.xsd"&
&amq:broker start="true" brokerName="bs-localhost"&
& &amq:networkConnectors&
&& &!-- more configurations --&
& &/amq:networkConnectors&
&/amq:broker&
When the application is deployed (in Tomcat) it will work as expected, however if you try to run it under Eclipse the container fails to start with the message:
org.xml.sax.SAXParseException: schema_reference.4:
Failed to read schema document 'http://activemq.apache.org/schema/core/activemq-core.xsd',
because 1) could n 2) the docume 3) the root element of the document is not .
Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.c:
The matching wildcard is strict,
but no declaration can be found for element 'amq:broker'. &/xsd&
The amq:broker maybe replaced with amq:connectionFactory depending on which name elements you have actually used.
In order for Eclipse to understand the amq name space you must add xbean support for ActiveMQ. This is achieved by adding xbean-spring-3.4.jar to your dynamic web project.
在项目中添加xbean-spring-3.4.jar是为了让Eclipse能知道ActiveMQ的amq的命名空间
According to the ActiveMQ website the XSD declaration will be automatically fished out of the jar and used to help Eclipse give you features like command completion for the XML schema. In fact what happens, is that Eclipse lights up like a Christmas tree moaning that it can’t find the schema declaration. Below is a set of instructions to tell Eclipse how to associate the activemq-core.xsd url with the activemq-core.xsd found in the jar file which is shipped as part of ActiveMQ.
&& 1. Select Windows-&Preferences from the Eclipse menu bar.
&& 2. Select XML-&XML Catalog from the left hand configuration tree.
&& 3. Highlight User Specified Entries and select Add.
&& 4. The Add XML Catalog Entry windows appears.
&& 5. In the Location enter the path to the activemq-all jar, then add !/activemq.xsd to the end of the jar name. e.g. jar:file:C:/Java/libs/activemq/apache-activemq-5.2.0/activemq-all-5.2.0.jar!/activemq.xsd
以上这段中C:/Java/libs/activemq/apache-activemq-5.2.0/activemq-all-5.2.0.jar!/activemq.xsd的C:/Java/libs/activemq/apache-activemq-5.2.0替换为自己的acticemq-all.jar的绝对路径,activemq-all-5.2.0.jar改成自己对应的包名便可以。中文方法都是写&path for activemq&\,什么也不说明下,严重鄙视他们,很不负责
&& 6. Under KeyType enter Namespace Name
&& 7. and under Key enter http://activemq.apache.org/schema/core
&& 8. then click Ok.
&& 9. Now we need to do the same for the other name space file, so hit Add again.
& 10. In the Location enter the path to the activemq-all jar, then add !/activemq.xsd to the end of the jar name. e.g. jar:file:C:/Java/libs/activemq/apache-activemq-5.2.0/activemq-all-5.2.0.jar!/activemq.xsd
& 11. Under KeyType enter Schema Location
& 12. and under Key enter http://activemq.apache.org/schema/core/activemq-core.xsd
& 13. Click Ok, Ok.
The Spring IDE should do its thing and the red error markers will disappear.
相信大家都应该解决困扰很久的问题,我也还要继续学习ActiveMQ的使用,很高兴与大家分享经验、交流技术
为什么我在输入D:/WorkSpace/UserMessage/WebRoot/WEB-INF/lib/activemq-all-5.2.0.jar!/activemq.xsd的时候,OK按钮不可用了。然后下面红色信息提示说不能被加载。要添加两次,一次是activemq.xsd的命名空间,另一次则是activemq.xsd的路径,你能把你的xml配置文件黏贴上来吗?
浏览: 7491 次
来自: 广州
&div class=&quote_title ...
为什么我在输入D:/WorkSpace/UserMessage ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'页面不存在
404~~你访问的页面找不到
厨房君真是太没用了,竟然让你看到这个页面!不如先去首页转转吧。二维码登录
邮箱帐号登录
二维码已失效请点击刷新
网易邮箱大师电脑版
登录更便捷,工作更高效
成功扫描,请在手机上确认登录
&|&&|&电脑版
登录过程有点慢哦,可能是由于网络问题造成的。
3&秒后自动尝试普通加密方式登录
无法登录邮箱?React Native 五:手势
一、Touchable手势
1.React Native提供了4个来做这个事情,具体如下:
TouchableHighlight:高亮触摸,用户点击时,会产生高亮效果;
TouchableNativeFeedback:
TouchableOpacity:透明触摸,用户点击时,点击的组件不会出现任何视觉变化;
TouchableWithoutFeedback:无反馈触摸,用户点击时,点击的组件不会有任何视觉变化;
2.这4个组件,我们可以应用某个部分绑定上Touch事件,并支持一下方法:
onPressIn:
onPressOut:
onLongPress:
3.下面我们以实例演示下,相关代码实现:
Index.android.js文件:
import React, {
TouchableHighlight,
} from 'react-native';
class AwesomeProject extends Component {
show(text) {
alert(text);
//手势相关事件的实现
onPressIn(){
this.start = Date.now()
console.log(&press in&)
onPressOut(){
console.log(&press out&)
onPress(text){
console.log(&press&)
alert(text);
onLonePress(){
AppRegistry,
console.log(&long press &+(Date.now()-this.start))
render() {
//TouchableHighlight包裹绑定Touch手势的组件,并实现支持的4个事件
var styles = StyleSheet.create({
container: {
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
width: 200,
height: 200,
borderRadius: 100,
backgroundColor: 'red'
touchable: {
borderRadius: 100
AppRegistry.registerComponent('AwesomeProject', () =& AwesomeProject);
4.点击,我们看见具体的运行效果如下:
5.我们使用Debug模式,研究下4个手势出现的条件和顺序;
摇晃手机,选择Debug JS;
打开Chrome,在弹出的Debug页面http://localhost:8081/debugger-ui后,选择开发着工具,点击手机上的按钮就可以看见浏览器控制台的
输出内容PressIn-&longPress-&pressOut;
二、手势响应生命周期
1.对于大部分应用,使用以上4个Touch*组件,在配合4个Press事件就能对用户的手势进行响应。但是对于比较复杂的交互,还得使用手势响应;
2.响应手势的基本单位是responder,具体来说就是View组件,任何View组件都是潜在的responder;
3.一个普通的View组件成为能响应手势操作的responder,只要设置几个手响应生命周期的方法即可,具体如下:
View.props.onStartShouldSetResponder:用户开始触摸屏幕的时候,是否愿意成为响应者;
View.props.onMoveShouldSetResponder:在每一个触摸点开始移动的时候,再询问一次是否响应触摸交互;
View.props.onResponderGrant:要开始响应触摸事件了;
View.props.onResponderReject:响应者现在另有其人,而且暂时不会放权,另作安排;
View.props.onResponderMove:用户正在屏幕上移动手指;
View.props.onResponderRelease:触摸操作结束收触发;
View.props.onResponderTerminationRequest:有其它组件请求接替响应者,当前View是否放权;
View.props.onResponderTerminate:响应权已经交出;
4.一个React Native应用中同时之能存在一个responder,具体响应步骤如下:
用户通过触摸或者滑动来&激活&某个responder,View.props.onStartShouldSetResponder以及View.props.onMoveShouldSetResponder这两个方法处理,如果返回true,则这个View能够响应触摸或者滑动手势被激活;
如果组件被激活,View.props.onResponderGrant方法被调用,一般这个时候去改变组建的底色或者透明度,表示组件已经被激活;
接下来,用户开始滑动手指,此时View.props.onResponderMove方法被调用;
当用户的手指离开屏幕之后,View.props.onResponderRelease方法被调用,组件恢复被触摸之前样式,例如底色和透明度恢复之前的样式,完成一次手势操作;
正常流程:响应touch或者move手势 -& grant(被激活) -& move -& release(结束事件);
5.下面我们以实例演示下,相关代码如下:
index.android.js文件
import React, {
} from 'react-native';
var AwesomeProject = React.createClass({
getInitialState(){
bg: 'white'
componentWillMount(){
this._gestureHandlers = {
onStartShouldSetResponder: () =& true,
onMoveShouldSetResponder: ()=& true,
onResponderGrant: ()=&{
this.setState({bg: 'red'})
onResponderMove: ()=&{
console.log(123)
onResponderRelease: ()=&{
this.setState({bg: 'white'})
render() {
var styles = StyleSheet.create({
AppRegistry.registerComponent('AwesomeProject', () =& AwesomeProject);
6.运行效果如下,onClick为未点击,Click为点击,后面为控制台输出log:
注意:如果运行Demode的时候错误提示如下图:
使用var AwesomeProject = React.createClass();的方式创建组件;
三、手势事件传递
1.onStartShouldSetResponder于onMoveShouldSetResponder是以冒泡的形式调用的,即嵌套最深的节点最先调用;
2.意味着多个View同时在ShouldSetResponder中返回true时,最底层的View将优先&夺权&;
3.但是有些时候,某个父View会希望先能成为响应者,我们可以利用&捕获期&来解决。响应系统从最底层的组件开始冒泡前,会首先执行一个&捕获期&,在此期间会触发on*ShouldSetResponderCapture系列事件。因此,如果某个父View想要在触摸开始时阻止组件成为响应者,那就应该处理onStartShouldSetResponderCapture事件冰返回true值;
View.props.onStartShouldSetResponderCapture:(evt)=&true;
View.props.onMoveShouldSetReponderCapture(evt)=&ture;
4.下面我们将以实例演示一下,实现代码如下:
Index.android.js文件:
import React, {
} from 'react-native';
var AwesomeProject = React.createClass({
getInitialState(){
bg: 'white',
bg2: 'white'
componentWillMount(){
this._gestureHandlers = {
//外部正方形在&捕获期&阻止底层时间成为响应者
onStartShouldSetResponderCapture: () =& true,
onMoveShouldSetResponderCapture: ()=& true,
onResponderGrant: ()=&{this.setState({bg: 'red'})},
onResponderMove: ()=&{console.log(123)},
onResponderRelease: ()=&{this.setState({bg: 'white'})},
this._gestureHandlers2 = {
//内部正方形在即时实现了on*ShouldSetResponder也无法成为响应者
onStartShouldSetResponder: () =& true,
onMoveShouldSetResponder: ()=& true,
onResponderGrant: ()=&{this.setState({bg2: 'green'})},
onResponderMove: ()=&{console.log(123)},
onResponderRelease: ()=&{this.setState({bg2: 'white'})}
render: function() {
var styles = StyleSheet.create({
AppRegistry.registerComponent('AwesomeProject', () =& AwesomeProject);
5.运行效果如下图,点击内部正方形,外部正方形相应事件:
四、evt参数
1.和Web开发中的事件参数类似,以上的每个方法都有一个evt参数,在事件发生的过程中,这个evt参数的nativeEvent属性的各个指能表示手势的状态:
nativeEventchangedTouches:在上一次事件之后,所有发生变化的触摸事件的数组集合(即上一次事件后,所有移动过的触摸点)
identifier:触摸点的ID
locationX:触摸点相对于父元素的横坐标
locationY:触摸点相对于父元素的纵坐标
pageX:触摸点相对于根元素的横坐标
pageY:触摸点相对于根元素的纵坐标
target:触摸点所在的元素ID
timestamp:触摸事件的时间戳,可用于移动速度的计算
touches:当前屏幕上的所有触摸点的集合
五、PanResponder
1.除了手势相应系统之外,React Native还抽象出一套PanResponder方法,它的抽象成程度更高,使用起来更为方便;
2.使用PanResponder的时候,相应手势的逻辑和流程都不变,只需要根据文档对几个方法名称参数修改即可:
第一个参数evt;
第二个gestureState,包含手势进行过程中更多信息,比较常见如下:
dx/dy:手势进行到现在的横向/纵向相对位移;
vx/vy:此刻的横向/纵向速度;
numberActiveTouches:reponder上的触摸的个数;
3.下面我们就使用PanResponder实现拖拽效果,代码实现如下:
index.android.js文件:
import React, {
PanResponder,
} from 'react-native';
var AwesomeProject = React.createClass({
getInitialState(){
bg: 'white',
componentWillMount(){
this._panResponder = PanResponder.create({
onStartShouldSetPanResponder: () =& true,
onMoveShouldSetPanResponder: ()=& true,
onPanResponderGrant: ()=&{
//滑动开始时,获取矩形的左上坐标,并设置背景为红色
this._top = this.state.top
this._left = this.state.left
this.setState({bg: 'red'})
onPanResponderMove: (evt,gs)=&{
console.log(gs.dx+' '+gs.dy)
//随着手势滑动,相应的改变矩形的位置
this.setState({
top: this._top+gs.dy,
left: this._left+gs.dx
onPanResponderRelease: (evt,gs)=&{
//活动结束后,还原背景为白色
this.setState({
bg: 'white',
top: this._top+gs.dy,
left: this._left+gs.dx
render: function() {
//设置手势事件处理对象
var styles = StyleSheet.create({
container: {
//开始的矩形位于中间,下图拖动到下部区域
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
AppRegistry.registerComponent('AwesomeProject', () =& AwesomeProject);
4.运行演示如下,由于只能上传图片,无法演示动画,样式中矩形位于中间,图中拖动至下方:11被浏览2,650分享邀请回答
&!DOCTYPE 根元素 [元素声明]&  
  带有 DTD 的 XML 文档实例  &?xml version="1.0"?&  
&!DOCTYPE note [  
 &!ELEMENT note (to,from,heading,body)&  
 &!ELEMENT to (#PCDATA)&  
 &!ELEMENT from (#PCDATA)&  
 &!ELEMENT heading (#PCDATA)&  
 &!ELEMENT body (#PCDATA)&   
&to&Tove&/to&   
&from&Jani&/from&  
 &heading&Reminder&/heading&  
 &body&Don't forget me this weekend&/body&  
以上 DTD 解释如下:!DOCTYPE note (第二行)定义此文档是 note 类型的文档。  !ELEMENT note (第三行)定义 note 元素有四个元素:"to、from、heading,、body"  !ELEMENT to (第四行)定义 to 元素为 "#PCDATA" 类型   !ELEMENT from (第五行)定义 from 元素为 "#PCDATA" 类型  !ELEMENT heading (第六行)定义 heading 元素为 "#PCDATA" 类型  !ELEMENT body (第七行)定义 body 元素为 "#PCDATA" 类型
再举一个例子:&?xml version="1.0" encoding="gb2312" standalone="yes"&
&!DOCTYPE greeting [
&!ELEMENT greeting (#PCDATA)&
文档类型声明由&! 开始,后面紧跟一个关键字DOCTYPE,然后是文档根元素的名称,接下来是标记生命块,标记声明块是放在左中括号 [ 和右中括号 ] 之间的,由一个或者多个标记声明构成,最后由& 结束。
在DTD当中,所有关键字都是大写的,就像在这里看到的ELEMENT、#PCDATA一样,在后面我们还会看到其他的关键字。不过在DTD中定义的元素和属性的大小写是可以任意指定的,但是要注意,XML文档是大小写相关的,所以一旦给一个元素命名吗,那么整个文档中都要使用相同的大小写。例如:greeting 和Greeting是两个不同的元素名。
在XML文档中定义DTD,比较直观,修改也比较方便,而且不用担心XML处理器找不到DTD,但是它也有一些缺点:
1.在文档中定义DTD会导致文档本身的长度增加,在传输数据市,即使不需要验证文档的有效性,这些声明也会随文档一起传输。
2.如果多个XML文档需要共用一个DTD,我们就需要在每个文档中加入DTD,这是相当繁琐的。要解决上面两个问题,我们将dtd放到一个单独的文件中去定义,在XML文档中,通过URI外部引用(有没有发现写程序的时候的#include 和import也有同样的功效重用代码)② 外部文档声明
假如 DTD 位于 XML 源文件的外部,那么它应通过下面的语法被封装在一个 DOCTYPE 定义中: &!DOCTYPE 根元素 SYSTEM "外部DTD文件的URI"&   SYSTEM关键字表示文档使用的是私有的DTD文件,“外部DTD文件的URI”可以是相对URI或者绝对URI,相对URI是相对文档类型声明所在文档的位置。比如&!DOCTYPE greeting SYSTEM "hello.dtd"&
我们将DTD的定义放到了hello.dtd文件中,注意要将hello.dtd放在和XML文档同一目录下,这样XML处理器才能找到这个文件。在给DTD文件取名字的时候,文件名可以随便取,但扩展名一般为.dtd如果位于不同位置的多个XML文档要使用同一个DTD,我们可以使用绝对URI来指明DTD文件的地址。假定hello.dtd位于 http://www.guowuxin.org/xml/hello.dtd
我们可以在文档类型声明中使用此URI&!DOCTYPE greeting SYSTEM "http://www.guowuxin.org/xml/hello.dtd"&
如果是一种企业或者行业领域标准,则不建议使用SYSTEM,而是使用public修饰&!DOCTYPE 根元素的名字 PUBLIC “DTD的名称” “外部DTD文件的URI”&PUBLIC关键字用于声明公共的DTD,并且这个DTD还有一个名称,“DTD的名称” 也称为公共标识符&!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"&
比如上面是servlet2.3中web.xml的DTD根元素web-appPUBILC "-//所有者//DTD文档描述的类型//ISO639语言标识符" “外部DTD文件URI”
下面这个 XML 文档和上面的第一个 XML 文档相同,但是拥有一个外部的 DTD:  &?xml version="1.0"?&  
&!DOCTYPE note SYSTEM "note.dtd"&
 &to&Tove&/to&  
 &from&Jani&/from&  
 &heading&Reminder&/heading&  
 &body&Don't forget me this weekend!&/body&  
&/note&  
 这是包含 DTD 的 "note.dtd" 文件:  &!ELEMENT note (to,from,heading,body)&  
&!ELEMENT to (#PCDATA)&   
&!ELEMENT from (#PCDATA)&  
&!ELEMENT heading (#PCDATA)&  
&!ELEMENT body (#PCDATA)&
通过 DTD,每一个 XML 文件均可携带一个有关其自身格式的描述,独立的团体可一致地使用某个标准的 DTD 来交换数据。应用程序也可使用某个标准的 DTD 来验证从外部接收到的数据。  
还可以使用 DTD 来验证自身的数据。3)DTD的优势 每一个XML文档都可携带一个DTD,用来对该文档格式进行描述,测试该文档是否为有效的XML文档。既然DTD有外部和内部之分,当然就可以为某个独 立的团体定义一个公用的外部DTD,那么多个XML文档就都可以共享使用该DTD,使得数据交换更为有效。甚至在某些文档中还可以使内部DTD和外部 DTD相结合。在应用程序中也可以用某个DTD来检测接收到的数据是否符合某个标准。 对于XML文档而言,虽然DTD不是必须的,但它为文档的编制带来了方便。加强了文档标记内参数的一致性,使XML语法分析器能够确认文档。如果不使用DTD来对XML文档进行定义,那么XML语法分析器将无法对该文档进行确认。   每个XML文档都只有一个根元素,其它的子元素都包含在该根元素中。因此在DTD中对根元素的声明是必不可少的。元素声明的一般形式如下:  &!DOCTYPE root[   &!-- 子元素 --& ]&  
DOCTYPE是“document type”(文档类型)的简写,DOCTYPE声明必须放在文档最顶部,在所有代码和标识之上,DOCTYPE声明是必不可少的关键组成部分。DTD语法 要求DOCTYPE必须要大写,而且DOCTYPE和元素之间必须要有空格隔开,如在以上代码中DOCTYPE和根元素root之间要有空格隔开。4)DTD的缺陷 : 利用DTD验证有效性的解析器,就能够立即对文档的完整性进行可靠的检查。DTD虽然比较实用,但DTD也有不少的缺陷。   1): DTD有自己的特殊语法,其本身不是XML文档;  2): DTD只提供了有限的数据类型,用户无法自定义类型;  3): DTD不支持域名机制。servlet标准在2.5开始就放弃使用dtd,改用了xsd------------------------------------------------------------132 条评论分享收藏感谢收起写回答

我要回帖

更多关于 试管移植几个胚胎 的文章

 

随机推荐