Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

acrescentada a utilizacao do plugin do jquery

  • Loading branch information...
commit 77e4d892e4aa86458f2ca6615ba3ef44ce7d51a1 1 parent c5c89ac
rlafitte.fa7@gmail.com authored
View
5 funcoes.js
@@ -0,0 +1,5 @@
+jQuery(document).ready(function() {
+ generateForm('sample.xsd','xsdform_container');
+ fillValues('sample_data.xml');
+ generateXsdFormUI();
+});
View
32 index.html
@@ -22,19 +22,25 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>xsdFormJs</title>
- <link href="style.css" rel="stylesheet" type="text/css"></link>
- <script src="xsdForm.js" type="text/javascript"></script>
+ <link href="style.css" rel="stylesheet" type="text/css"></link>
+
</head>
- <body onload="generateForm('sample.xsd','xsdform_container');" >
- <!-- A regular usage will simply return the result of the generateXml function,
- but here we just want to show the generated xml, so we return false every time.
- Usually the processed_xml field would be a hidden input, not a textarea. -->
- <form onsubmit="generateXml('sample.xsd', this.processed_xml); return false">
- <H1>The Form</H1>
- <div id="xsdform_container" ></div>
- <input type="submit">
- <H1>The Output</H1>
- <textarea name="processed_xml" rows="20" cols="100"></textarea>
- </form>
+ <body
+ <!-- A regular usage will simply return the result of the generateXml function,
+ but here we just want to show the generated xml, so we return false every time.
+ Usually the processed_xml field would be a hidden input, not a textarea. -->
+ <form onsubmit="generateXml('sample.xsd', this.processed_xml); return false">
+ <H1>The Form</H1>
+ <div id="xsdform_container" ></div>
+ <input type="submit">
+ <H1>The Output</H1>
+ <textarea name="processed_xml" rows="20" cols="100"></textarea>
+ </form>
+ <script src="jquery-1.4.4.js" type="text/javascript"></script>
+ <script src="input.deflate.plugin.js" type="text/javascript"></script>
+ <script src="jquery.meio.mask.js" type="text/javascript"></script>
+ <script src="xsdForm.js" type="text/javascript"></script>
+ <script src="xsdForm-ui.js" type="text/javascript"></script>
+ <script src="funcoes.js" type="text/javascript"></script>
</body>
</html>
View
67 input.deflate.plugin.js
@@ -0,0 +1,67 @@
+/*
+ Copyright 2010 - Prefeitura Municipal de Fortaleza
+
+ Este arquivo � parte do programa jquery-input-deflate-plugin
+
+ O A��o � um software livre; voc� pode redistribui-lo e/ou modifica-lo
+ dentro dos termos da Licen�a P�blica Geral GNU como publicada pela
+ Funda��o do Software Livre (FSF); na vers�o 2 da Licen�a.
+
+ Este programa � distribuido na esperan�a que possa ser util, mas SEM
+ NENHUMA GARANTIA; sem uma garantia implicita de ADEQUA��O a qualquer
+ MERCADO ou APLICA��O EM PARTICULAR. Veja a Licen�a P�blica Geral GNU
+ para maiores detalhes.
+
+ Voc� deve ter recebido uma c�pia da Licen�a P�blica Geral GNU, sob o
+ t�tulo "LICENCA.txt", junto com este programa, se n�o, escreva para a
+ Funda��o do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
+ */
+(function($){
+ $.fn.inputDeflate = function (options) {
+ var suffix = options['suffix'] || '_input_deflate';
+ var removeClass = options['removeClass'];
+ var addClass = options['addClass'];
+ var inflate = options['inflate'];
+ var deflate = options['deflate'];
+ if (!inflate || !deflate)
+ throw("Inflate and deflate functions are mandatory");
+ return this.each(function() {
+ // elemento selecionado...
+ var este = $(this);
+ // primeiro precisamos criar um clone do elemento
+ var clone2 = este.clone();
+
+ // entao sobrescrevemos o id e o name com o sufixo
+ if (clone2.attr('id'))
+ clone2.attr('id', este.attr('id') + suffix);
+ if (clone2.attr('name'))
+ clone2.attr('name', este.attr('id') + suffix);
+
+ // geramos o valor do input novo com o resultado do inflate
+ var value = este.val();
+ clone2.val(inflate(value));
+
+ // associamos o onChange do segundo para atualizar o primeiro
+ clone2.change(function(){
+ var element = este;
+ element.val(deflate(clone2.val()));
+ });
+
+ if (addClass)
+ clone2.addClass(addClass);
+ if (removeClass)
+ clone2.removeClass(removeClass);
+
+ // agora adicionamos o segundo elemento
+ este.after(clone2);
+
+ // e entao substituimos o original pelo seu clone de outro tipo
+ // precisamos fazer assim porque o IE n�o aceita sobrescrever o type,
+ // mesmo quando n�o est� associado � DOM
+ este.replaceWith('<input type="hidden" name="'+este.attr('name')+'" id="'+este.attr('id')+'">');
+ este = $('#' + este.attr('id'));
+ este.val(value);
+
+ });
+ };
+})(jQuery);
View
7,179 jquery-1.4.4.js
7,179 additions, 0 deletions not shown
View
682 jquery.meio.mask.js
@@ -0,0 +1,682 @@
+/**
+ * jquery.meio.mask.js
+ * @author: fabiomcosta
+ * @version: 1.1.3
+ *
+ * Created by Fabio M. Costa on 2008-09-16. Please report any bug at http://www.meiocodigo.com
+ *
+ * Copyright (c) 2008 Fabio M. Costa http://www.meiocodigo.com
+ *
+ * The MIT License (http://www.opensource.org/licenses/mit-license.php)
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+(function($){
+
+ var isIphone = (window.orientation != undefined),
+ // browsers like firefox2 and before and opera doenst have the onPaste event, but the paste feature can be done with the onInput event.
+ pasteEvent = (($.browser.opera || ($.browser.mozilla && parseFloat($.browser.version.substr(0,3)) < 1.9 ))? 'input': 'paste');
+
+ $.event.special.paste = {
+ setup: function() {
+ if(this.addEventListener)
+ this.addEventListener(pasteEvent, pasteHandler, false);
+ else if (this.attachEvent)
+ this.attachEvent(pasteEvent, pasteHandler);
+ },
+
+ teardown: function() {
+ if(this.removeEventListener)
+ this.removeEventListener(pasteEvent, pasteHandler, false);
+ else if (this.detachEvent)
+ this.detachEvent(pasteEvent, pasteHandler);
+ }
+ };
+
+ // the timeout is set because we can't get the value from the input without it
+ function pasteHandler(e){
+ var self = this;
+ e = $.event.fix(e || window.e);
+ e.type = 'paste';
+ // Execute the right handlers by setting the event type to paste
+ setTimeout(function(){ $.event.handle.call(self, e); }, 1);
+ };
+
+ $.extend({
+ mask : {
+
+ // the mask rules. You may add yours!
+ // number rules will be overwritten
+ rules : {
+ 'z': /[a-z]/,
+ 'Z': /[A-Z]/,
+ 'a': /[a-zA-Z]/,
+ '*': /[0-9a-zA-Z]/,
+ '@': /[0-9a-zA-ZçÇáàãâéèêíìóòôõúùü]/
+ },
+
+ // these keys will be ignored by the mask.
+ // all these numbers where obtained on the keydown event
+ keyRepresentation : {
+ 8 : 'backspace',
+ 9 : 'tab',
+ 13 : 'enter',
+ 16 : 'shift',
+ 17 : 'control',
+ 18 : 'alt',
+ 27 : 'esc',
+ 33 : 'page up',
+ 34 : 'page down',
+ 35 : 'end',
+ 36 : 'home',
+ 37 : 'left',
+ 38 : 'up',
+ 39 : 'right',
+ 40 : 'down',
+ 45 : 'insert',
+ 46 : 'delete',
+ 116 : 'f5',
+ 123 : 'f12',
+ 224 : 'command'
+ },
+
+ iphoneKeyRepresentation : {
+ 10 : 'go',
+ 127 : 'delete'
+ },
+
+ signals : {
+ '+' : '',
+ '-' : '-'
+ },
+
+ // default settings for the plugin
+ options : {
+ attr: 'alt', // an attr to look for the mask name or the mask itself
+ mask: null, // the mask to be used on the input
+ type: 'fixed', // the mask of this mask
+ maxLength: -1, // the maxLength of the mask
+ defaultValue: '', // the default value for this input
+ signal: false, // this should not be set, to use signal at masks put the signal you want ('-' or '+') at the default value of this mask.
+ // See the defined masks for a better understanding.
+
+ textAlign: true, // use false to not use text-align on any mask (at least not by the plugin, you may apply it using css)
+ selectCharsOnFocus: true, // select all chars from input on its focus
+ autoTab: true, // auto focus the next form element when you type the mask completely
+ setSize: false, // sets the input size based on the length of the mask (work with fixed and reverse masks only)
+ fixedChars : '[(),.:/ -/T]', // fixed chars to be used on the masks. You may change it for your needs!
+
+ onInvalid : function(){},
+ onValid : function(){},
+ onOverflow : function(){}
+ },
+
+ // masks. You may add yours!
+ // Ex: $.fn.setMask.masks.msk = {mask: '999'}
+ // and then if the 'attr' options value is 'alt', your input should look like:
+ // <input type="text" name="some_name" id="some_name" alt="msk" />
+ masks : {
+ 'phone' : { mask : '(99) 9999-9999' },
+ 'phone-us' : { mask : '(999) 999-9999' },
+ 'cpf' : { mask : '999.999.999-99' }, // cadastro nacional de pessoa fisica
+ 'cnpj' : { mask : '99.999.999/9999-99' },
+ 'date' : { mask : '39/19/9999' }, //uk date
+ 'date-us' : { mask : '19/39/9999' },
+ 'cep' : { mask : '99999-999' },
+ 'time' : { mask : '29:59' },
+ 'cc' : { mask : '9999 9999 9999 9999' }, //credit card mask
+ 'integer' : { mask : '999.999.999.999', type : 'reverse' },
+ 'decimal' : { mask : '99,999.999.999.999', type : 'reverse', defaultValue : '000' },
+ 'decimal-us' : { mask : '99.999,999,999,999', type : 'reverse', defaultValue : '000' },
+ 'signed-decimal' : { mask : '99,999.999.999.999', type : 'reverse', defaultValue : '+000' },
+ 'signed-decimal-us' : { mask : '99,999.999.999.999', type : 'reverse', defaultValue : '+000' }
+ },
+
+ init : function(){
+ // if has not inited...
+ if( !this.hasInit ){
+
+ var self = this, i,
+ keyRep = (isIphone)? this.iphoneKeyRepresentation: this.keyRepresentation;
+
+ this.ignore = false;
+
+ // constructs number rules
+ for(i=0; i<=9; i++) this.rules[i] = new RegExp('[0-'+i+']');
+
+ this.keyRep = keyRep;
+ // ignore keys array creation for iphone or the normal ones
+ this.ignoreKeys = [];
+ $.each(keyRep,function(key){
+ self.ignoreKeys.push( parseInt(key) );
+ });
+
+ this.hasInit = true;
+ }
+ },
+
+ set: function(el,options){
+
+ var maskObj = this,
+ $el = $(el),
+ mlStr = 'maxLength';
+
+ options = options || {};
+ this.init();
+
+ return $el.each(function(){
+
+ if(options.attr) maskObj.options.attr = options.attr;
+
+ var $this = $(this),
+ o = $.extend({}, maskObj.options),
+ attrValue = $this.attr(o.attr),
+ tmpMask = '';
+
+ // then we look for the 'attr' option
+ tmpMask = (typeof options == 'string')? options: (attrValue != '')? attrValue: null;
+ if(tmpMask) o.mask = tmpMask;
+
+ // then we see if it's a defined mask
+ if(maskObj.masks[tmpMask]) o = $.extend(o, maskObj.masks[tmpMask]);
+
+ // then it looks if the options is an object, if it is we will overwrite the actual options
+ if(typeof options == 'object' && options.constructor != Array) o = $.extend(o, options);
+
+ //then we look for some metadata on the input
+ if($.metadata) o = $.extend(o, $this.metadata());
+
+ if(o.mask != null){
+
+ if($this.data('mask')) maskObj.unset($this);
+
+ var defaultValue = o.defaultValue,
+ reverse = (o.type=='reverse'),
+ fixedCharsRegG = new RegExp(o.fixedChars, 'g');
+
+ if(o.maxLength == -1) o.maxLength = $this.attr(mlStr);
+
+ o = $.extend({}, o,{
+ fixedCharsReg: new RegExp(o.fixedChars),
+ fixedCharsRegG: fixedCharsRegG,
+ maskArray: o.mask.split(''),
+ maskNonFixedCharsArray: o.mask.replace(fixedCharsRegG, '').split('')
+ });
+
+ //setSize option (this is not removed from the input (while removing the mask) since this would be kind of funky)
+ if((o.type=='fixed' || reverse) && o.setSize && !$this.attr('size')) $this.attr('size', o.mask.length);
+
+ //sets text-align right for reverse masks
+ if(reverse && o.textAlign) $this.css('text-align', 'right');
+
+ if(this.value!='' || defaultValue!=''){
+ // apply mask to the current value of the input or to the default value
+ var val = maskObj.string((this.value!='')? this.value: defaultValue, o);
+ //setting defaultValue fixes the reset button from the form
+ this.defaultValue = val;
+ $this.val(val);
+ }
+
+ // compatibility patch for infinite mask, that is now repeat
+ if(o.type=='infinite') o.type = 'repeat';
+
+ $this.data('mask', o);
+
+ // removes the maxLength attribute (it will be set again if you use the unset method)
+ $this.removeAttr(mlStr);
+
+ // setting the input events
+ $this.bind('keydown.mask', {func:maskObj._onKeyDown, thisObj:maskObj}, maskObj._onMask)
+ .bind('keypress.mask', {func:maskObj._onKeyPress, thisObj:maskObj}, maskObj._onMask)
+ .bind('keyup.mask', {func:maskObj._onKeyUp, thisObj:maskObj}, maskObj._onMask)
+ .bind('paste.mask', {func:maskObj._onPaste, thisObj:maskObj}, maskObj._onMask)
+ .bind('focus.mask', maskObj._onFocus)
+ .bind('blur.mask', maskObj._onBlur)
+ .bind('change.mask', maskObj._onChange);
+ }
+ });
+ },
+
+ //unsets the mask from el
+ unset : function(el){
+ var $el = $(el);
+
+ return $el.each(function(){
+ var $this = $(this);
+ if($this.data('mask')){
+ var maxLength = $this.data('mask').maxLength;
+ if(maxLength != -1) $this.attr('maxLength', maxLength);
+ $this.unbind('.mask')
+ .removeData('mask');
+ }
+ });
+ },
+
+ //masks a string
+ string : function(str, options){
+ this.init();
+ var o={};
+ if(typeof str != 'string') str = String(str);
+ switch(typeof options){
+ case 'string':
+ // then we see if it's a defined mask
+ if(this.masks[options]) o = $.extend(o, this.masks[options]);
+ else o.mask = options;
+ break;
+ case 'object':
+ o = options;
+ }
+ if(!o.fixedChars) o.fixedChars = this.options.fixedChars;
+
+ var fixedCharsReg = new RegExp(o.fixedChars),
+ fixedCharsRegG = new RegExp(o.fixedChars, 'g');
+
+ // insert signal if any
+ if( (o.type=='reverse') && o.defaultValue ){
+ if( typeof this.signals[o.defaultValue.charAt(0)] != 'undefined' ){
+ var maybeASignal = str.charAt(0);
+ o.signal = (typeof this.signals[maybeASignal] != 'undefined') ? this.signals[maybeASignal] : this.signals[o.defaultValue.charAt(0)];
+ o.defaultValue = o.defaultValue.substring(1);
+ }
+ }
+
+ return this.__maskArray(str.split(''),
+ o.mask.replace(fixedCharsRegG, '').split(''),
+ o.mask.split(''),
+ o.type,
+ o.maxLength,
+ o.defaultValue,
+ fixedCharsReg,
+ o.signal);
+ },
+
+ // all the 3 events below are here just to fix the change event on reversed masks.
+ // It isn't fired in cases that the keypress event returns false (needed).
+ _onFocus: function(e){
+ var $this = $(this), dataObj = $this.data('mask');
+ dataObj.inputFocusValue = $this.val();
+ dataObj.changed = false;
+ if(dataObj.selectCharsOnFocus) $this.select();
+ },
+
+ _onBlur: function(e){
+ var $this = $(this), dataObj = $this.data('mask');
+ if(dataObj.inputFocusValue != $this.val() && !dataObj.changed)
+ $this.trigger('change');
+ },
+
+ _onChange: function(e){
+ $(this).data('mask').changed = true;
+ },
+
+ _onMask : function(e){
+ var thisObj = e.data.thisObj,
+ o = {};
+ o._this = e.target;
+ o.$this = $(o._this);
+ // if the input is readonly it does nothing
+ if(o.$this.attr('readonly')) return true;
+ o.data = o.$this.data('mask');
+ o[o.data.type] = true;
+ o.value = o.$this.val();
+ o.nKey = thisObj.__getKeyNumber(e);
+ o.range = thisObj.__getRange(o._this);
+ o.valueArray = o.value.split('');
+ return e.data.func.call(thisObj, e, o);
+ },
+
+ _onKeyDown : function(e,o){
+ // lets say keypress at desktop == keydown at iphone (theres no keypress at iphone)
+ this.ignore = $.inArray(o.nKey, this.ignoreKeys) > -1 || e.ctrlKey || e.metaKey || e.altKey;
+ if(this.ignore){
+ var rep = this.keyRep[o.nKey];
+ o.data.onValid.call(o._this, rep? rep: '', o.nKey);
+ }
+ return isIphone ? this._keyPress(e, o) : true;
+ },
+
+ _onKeyUp : function(e, o){
+ //9=TAB_KEY 16=SHIFT_KEY
+ //this is a little bug, when you go to an input with tab key
+ //it would remove the range selected by default, and that's not a desired behavior
+ if(o.nKey==9 || o.nKey==16) return true;
+
+ if(o.data.type=='repeat'){
+ this.__autoTab(o);
+ return true;
+ }
+
+ return this._onPaste(e, o);
+ },
+
+ _onPaste : function(e,o){
+ // changes the signal at the data obj from the input
+ if(o.reverse) this.__changeSignal(e.type, o);
+
+ var $thisVal = this.__maskArray(
+ o.valueArray,
+ o.data.maskNonFixedCharsArray,
+ o.data.maskArray,
+ o.data.type,
+ o.data.maxLength,
+ o.data.defaultValue,
+ o.data.fixedCharsReg,
+ o.data.signal
+ );
+
+ o.$this.val( $thisVal );
+ // this makes the caret stay at first position when
+ // the user removes all values in an input and the plugin adds the default value to it (if it haves one).
+ if( !o.reverse && o.data.defaultValue.length && (o.range.start==o.range.end) )
+ this.__setRange(o._this, o.range.start, o.range.end);
+
+ //fix so ie's and safari's caret won't go to the end of the input value.
+ if( ($.browser.msie || $.browser.safari) && !o.reverse)
+ this.__setRange(o._this,o.range.start,o.range.end);
+
+ if(this.ignore) return true;
+
+ this.__autoTab(o);
+ return true;
+ },
+
+ _onKeyPress: function(e, o){
+
+ if(this.ignore) return true;
+
+ // changes the signal at the data obj from the input
+ if(o.reverse) this.__changeSignal(e.type, o);
+
+ var c = String.fromCharCode(o.nKey),
+ rangeStart = o.range.start,
+ rawValue = o.value,
+ maskArray = o.data.maskArray;
+
+ if(o.reverse){
+ // the input value from the range start to the value start
+ var valueStart = rawValue.substr(0, rangeStart),
+ // the input value from the range end to the value end
+ valueEnd = rawValue.substr(o.range.end, rawValue.length);
+
+ rawValue = valueStart+c+valueEnd;
+ //necessary, if not decremented you will be able to input just the mask.length-1 if signal!=''
+ //ex: mask:99,999.999.999 you will be able to input 99,999.999.99
+ if(o.data.signal && (rangeStart-o.data.signal.length > 0)) rangeStart-=o.data.signal.length;
+ }
+
+ var valueArray = rawValue.replace(o.data.fixedCharsRegG, '').split(''),
+ // searches for fixed chars begining from the range start position, till it finds a non fixed
+ extraPos = this.__extraPositionsTill(rangeStart, maskArray, o.data.fixedCharsReg);
+
+ o.rsEp = rangeStart+extraPos;
+
+ if(o.repeat) o.rsEp = 0;
+
+ // if the rule for this character doesnt exist (value.length is bigger than mask.length)
+ // added a verification for maxLength in the case of the repeat type mask
+ if( !this.rules[maskArray[o.rsEp]] || (o.data.maxLength != -1 && valueArray.length >= o.data.maxLength && o.repeat)){
+ // auto focus on the next input of the current form
+ o.data.onOverflow.call(o._this, c, o.nKey);
+ return false;
+ }
+
+ // if the new character is not obeying the law... :P
+ else if( !this.rules[maskArray[o.rsEp]].test( c ) ){
+ o.data.onInvalid.call(o._this, c, o.nKey);
+ return false;
+ }
+
+ else o.data.onValid.call(o._this, c, o.nKey);
+
+ var $thisVal = this.__maskArray(
+ valueArray,
+ o.data.maskNonFixedCharsArray,
+ maskArray,
+ o.data.type,
+ o.data.maxLength,
+ o.data.defaultValue,
+ o.data.fixedCharsReg,
+ o.data.signal,
+ extraPos
+ );
+
+ o.$this.val( $thisVal );
+
+ return (o.reverse)? this._keyPressReverse(e, o): (o.fixed)? this._keyPressFixed(e, o): true;
+ },
+
+ _keyPressFixed: function(e, o){
+
+ if(o.range.start==o.range.end){
+ // the 0 thing is cause theres a particular behavior i wasnt liking when you put a default
+ // value on a fixed mask and you select the value from the input the range would go to the
+ // end of the string when you enter a char. with this it will overwrite the first char wich is a better behavior.
+ // opera fix, cant have range value bigger than value length, i think it loops thought the input value...
+ if((o.rsEp==0 && o.value.length==0) || o.rsEp < o.value.length)
+ this.__setRange(o._this, o.rsEp, o.rsEp+1);
+ }
+ else
+ this.__setRange(o._this, o.range.start, o.range.end);
+
+ return true;
+ },
+
+ _keyPressReverse: function(e, o){
+ //fix for ie
+ //this bug was pointed by Pedro Martins
+ //it fixes a strange behavior that ie was having after a char was inputted in a text input that
+ //had its content selected by any range
+ if($.browser.msie && ((o.range.start==0 && o.range.end==0) || o.range.start != o.range.end ))
+ this.__setRange(o._this, o.value.length);
+ return false;
+ },
+
+ __autoTab: function(o){
+ if(o.data.autoTab
+ && (
+ (
+ o.$this.val().length >= o.data.maskArray.length
+ && !o.repeat
+ ) || (
+ o.data.maxLength != -1
+ && o.valueArray.length >= o.data.maxLength
+ && o.repeat
+ )
+ )
+ ){
+ var nextEl = this.__getNextInput(o._this, o.data.autoTab);
+ if(nextEl){
+ o.$this.trigger('blur');
+ nextEl.focus().select();
+ }
+ }
+ },
+
+ // changes the signal at the data obj from the input
+ __changeSignal : function(eventType,o){
+ if(o.data.signal!==false){
+ var inputChar = (eventType=='paste')? o.value.charAt(0): String.fromCharCode(o.nKey);
+ if( this.signals && (typeof this.signals[inputChar] != 'undefined') ){
+ o.data.signal = this.signals[inputChar];
+ }
+ }
+ },
+
+ __getKeyNumber : function(e){
+ return (e.charCode||e.keyCode||e.which);
+ },
+
+ // this function is totaly specific to be used with this plugin, youll never need it
+ // it gets the array representing an unmasked string and masks it depending on the type of the mask
+ __maskArray : function(valueArray, maskNonFixedCharsArray, maskArray, type, maxlength, defaultValue, fixedCharsReg, signal, extraPos){
+ if(type == 'reverse') valueArray.reverse();
+ valueArray = this.__removeInvalidChars(valueArray, maskNonFixedCharsArray, type=='repeat'||type=='infinite');
+ if(defaultValue) valueArray = this.__applyDefaultValue.call(valueArray, defaultValue);
+ valueArray = this.__applyMask(valueArray, maskArray, extraPos, fixedCharsReg);
+ switch(type){
+ case 'reverse':
+ valueArray.reverse();
+ return (signal || '')+valueArray.join('').substring(valueArray.length-maskArray.length);
+ case 'infinite': case 'repeat':
+ var joinedValue = valueArray.join('');
+ return (maxlength != -1 && valueArray.length >= maxlength)? joinedValue.substring(0, maxlength): joinedValue;
+ default:
+ return valueArray.join('').substring(0, maskArray.length);
+ }
+ return '';
+ },
+
+ // applyes the default value to the result string
+ __applyDefaultValue : function(defaultValue){
+ var defLen = defaultValue.length,thisLen = this.length,i;
+ //removes the leading chars
+ for(i=thisLen-1;i>=0;i--){
+ if(this[i]==defaultValue.charAt(0)) this.pop();
+ else break;
+ }
+ // apply the default value
+ for(i=0;i<defLen;i++) if(!this[i])
+ this[i] = defaultValue.charAt(i);
+
+ return this;
+ },
+
+ // Removes values that doesnt match the mask from the valueArray
+ // Returns the array without the invalid chars.
+ __removeInvalidChars : function(valueArray, maskNonFixedCharsArray, repeatType){
+ // removes invalid chars
+ for(var i=0, y=0; i<valueArray.length; i++ ){
+ if( maskNonFixedCharsArray[y] &&
+ this.rules[maskNonFixedCharsArray[y]] &&
+ !this.rules[maskNonFixedCharsArray[y]].test(valueArray[i]) ){
+ valueArray.splice(i,1);
+ if(!repeatType) y--;
+ i--;
+ }
+ if(!repeatType) y++;
+ }
+ return valueArray;
+ },
+
+ // Apply the current input mask to the valueArray and returns it.
+ __applyMask : function(valueArray, maskArray, plus, fixedCharsReg){
+ if( typeof plus == 'undefined' ) plus = 0;
+ // apply the current mask to the array of chars
+ for(var i=0; i<valueArray.length+plus; i++ ){
+ if( maskArray[i] && fixedCharsReg.test(maskArray[i]) )
+ valueArray.splice(i, 0, maskArray[i]);
+ }
+ return valueArray;
+ },
+
+ // searches for fixed chars begining from the range start position, till it finds a non fixed
+ __extraPositionsTill : function(rangeStart, maskArray, fixedCharsReg){
+ var extraPos = 0;
+ while(fixedCharsReg.test(maskArray[rangeStart++])){
+ extraPos++;
+ }
+ return extraPos;
+ },
+
+ __getNextInput: function(input, selector){
+ var formEls = input.form.elements,
+ initialInputIndex = $.inArray(input, formEls) + 1,
+ $input = null,
+ i;
+ // look for next input on the form of the pased input
+ for(i = initialInputIndex; i < formEls.length; i++){
+ $input = $(formEls[i]);
+ if(this.__isNextInput($input, selector))
+ return $input;
+ }
+
+ var forms = document.forms,
+ initialFormIndex = $.inArray(input.form, forms) + 1,
+ y, tmpFormEls = null;
+ // look for the next forms for the next input
+ for(y = initialFormIndex; y < forms.length; y++){
+ tmpFormEls = forms[y].elements;
+ for(i = 0; i < tmpFormEls.length; i++){
+ $input = $(tmpFormEls[i]);
+ if(this.__isNextInput($input, selector))
+ return $input;
+ }
+ }
+ return null;
+ },
+
+ __isNextInput: function($formEl, selector){
+ var formEl = $formEl.get(0);
+ return formEl
+ && (formEl.offsetWidth > 0 || formEl.offsetHeight > 0)
+ && formEl.nodeName != 'FIELDSET'
+ && (selector === true || (typeof selector == 'string' && $formEl.is(selector)));
+ },
+
+ // http://www.bazon.net/mishoo/articles.epl?art_id=1292
+ __setRange : function(input, start, end) {
+ if(typeof end == 'undefined') end = start;
+ if (input.setSelectionRange){
+ input.setSelectionRange(start, end);
+ }
+ else{
+ // assumed IE
+ var range = input.createTextRange();
+ range.collapse();
+ range.moveStart('character', start);
+ range.moveEnd('character', end - start);
+ range.select();
+ }
+ },
+
+ // adaptation from http://digitarald.de/project/autocompleter/
+ __getRange : function(input){
+ if (!$.browser.msie) return {start: input.selectionStart, end: input.selectionEnd};
+ var pos = {start: 0, end: 0},
+ range = document.selection.createRange();
+ pos.start = 0 - range.duplicate().moveStart('character', -100000);
+ pos.end = pos.start + range.text.length;
+ return pos;
+ },
+
+ //deprecated
+ unmaskedVal : function(el){
+ return $(el).val().replace($.mask.fixedCharsRegG, '');
+ }
+
+ }
+ });
+
+ $.fn.extend({
+ setMask : function(options){
+ return $.mask.set(this, options);
+ },
+ unsetMask : function(){
+ return $.mask.unset(this);
+ },
+ //deprecated
+ unmaskedVal : function(){
+ return $.mask.unmaskedVal(this[0]);
+ }
+ });
+})(jQuery);
View
1,863 sample.xsd
@@ -16,960 +16,983 @@
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xhtml="http://www.w3.org/1999/xhtml" targetNamespace="test:ns"
elementFormDefault="qualified">
- <xs:element name="formCadernoA" type="formCadernoA">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Sample Form</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:complexType name="formCadernoA">
- <xs:sequence>
- <xs:element name="identificacao">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Identificação</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element name="codigo" type="xs:integer" minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>1 Código</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="codigoNaoTem" type="xs:boolean">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Não tem</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="data" type="xs:date" minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>2 Data</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="orgaoCadastrador" type="xs:string"
+ <xs:element name="formCadernoA" type="formCadernoA">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>Sample Form</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:complexType name="formCadernoA">
+ <xs:sequence>
+ <xs:element name="identificacao">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>Identificação</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="codigo" type="xs:integer" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>1 Código</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="codigoNaoTem" type="xs:boolean">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>Não tem</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="data" type="xs:date" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>2 Data</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="orgaoCadastrador" type="xs:string"
minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>3 Órgão Cadastrador</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>3 Órgão Cadastrador</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
- <xs:element name="test" minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>TEST</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="xs:string">
- <xs:maxLength value="255" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
+ <xs:element name="test" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>TEST</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="255" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
- <xs:element name="entrevistador" type="xs:string"
+ <xs:element name="entrevistador" type="xs:string"
minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>4 Entrevistador</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="titularBeneficiario" type="xs:string"
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>4 Entrevistador</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="titularBeneficiario" type="xs:string"
minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>5 Titular Beneficiário</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="nomeComunidade" type="xs:string"
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>5 Titular Beneficiário</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="nomeComunidade" type="xs:string"
minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Nome da Comunidade</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="tipoDemanda" minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>6 Tipo de Demanda</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="xs:string">
- <xs:enumeration value="Não Informado" />
- <xs:enumeration value="Espontânea" />
- <xs:enumeration value="Não Espontânea" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element name="cartao" minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>7 Cartão</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="xs:string">
- <xs:enumeration value="Não Informado" />
- <xs:enumeration value="Entregue" />
- <xs:enumeration value="Não entregue" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>Nome da Comunidade</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="tipoDemanda" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>6 Tipo de Demanda</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Não Informado" />
+ <xs:enumeration value="Espontânea" />
+ <xs:enumeration value="Não Espontânea" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="cartao" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>7 Cartão</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Não Informado" />
+ <xs:enumeration value="Entregue" />
+ <xs:enumeration value="Não entregue" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
- <xs:element name="enderecoImovel">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Endereço do Imóvel</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element name="logradouro" type="xs:string"
+ <xs:element name="enderecoImovel">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>Endereço do Imóvel</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="logradouro" type="xs:string"
minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>8 Logradouro</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="numero" type="xs:integer" minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>9 Número</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="complemento" type="xs:string"
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>8 Logradouro</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="numero" type="xs:integer" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>9 Número</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="complemento" type="xs:string"
minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>10 Complemento</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="localizacaoCartografica" type="xs:string"
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>10 Complemento</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="localizacaoCartografica" type="xs:string"
minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>12 localização Cartográfica</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="bairro" type="xs:string" minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>13 Bairro</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="telefone" type="xs:string" minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>14 Telefone</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="informante" minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>15 Informante</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="xs:string">
- <xs:enumeration value="Não Informado" />
- <xs:enumeration value="Presente" />
- <xs:enumeration value="Ausente" />
- <xs:enumeration value="Recusou-se" />
- <xs:enumeration value="Casa desocupada" />
- <xs:enumeration value="Terreno" />
- <xs:enumeration value="Casa fechada" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element name="observacoes" type="xs:string"
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>12 localização Cartográfica</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="bairro" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>13 Bairro</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="telefone" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>14 Telefone</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="informante" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>15 Informante</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Não Informado" />
+ <xs:enumeration value="Presente" />
+ <xs:enumeration value="Ausente" />
+ <xs:enumeration value="Recusou-se" />
+ <xs:enumeration value="Casa desocupada" />
+ <xs:enumeration value="Terreno" />
+ <xs:enumeration value="Casa fechada" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="observacoes" type="xs:string"
minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>16 Observações</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="visita1" type="xs:dateTime"
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>16 Observações</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="visita1" type="xs:dateTime"
minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>17 1ª Visita</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="visita2" type="xs:dateTime"
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>17 1ª Visita</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="visita2" type="xs:dateTime"
minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>18 2ª Visita</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="visita3" type="xs:dateTime"
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>18 2ª Visita</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="visita3" type="xs:dateTime"
minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>19 3ª Visita</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="notificacao" type="xs:dateTime"
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>19 3ª Visita</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="notificacao" type="xs:dateTime"
minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>14 Notificação</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="caracteristicasImovel">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Características do Imóvel</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element name="localizacao" minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>21 Localização</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element name="quadraloteada" type="xs:boolean">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Quadra Loteada</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="leitoDeRua" type="xs:boolean">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Leito de Rua</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="praca" type="xs:boolean">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Praça</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="areaVerde" type="xs:boolean">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Área Verde</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="terroParaEquipamentoComunitario"
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>14 Notificação</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="caracteristicasImovel">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>Características do Imóvel</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="localizacao" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>21 Localização</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="quadraloteada" type="xs:boolean">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>Quadra Loteada</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="leitoDeRua" type="xs:boolean">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>Leito de Rua</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="praca" type="xs:boolean">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>Praça</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="areaVerde" type="xs:boolean">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>Área Verde</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="terroParaEquipamentoComunitario"
type="xs:boolean">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Terro p/ Equipamento Comunitário</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="outro" type="xs:boolean">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Outro</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="localizacaoOutro" type="xs:string"
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>Terro p/ Equipamento Comunitário</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="outro" type="xs:boolean">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>Outro</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="localizacaoOutro" type="xs:string"
minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Outro</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="areaPreservacao" minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>22 Area de Preservação</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="xs:string">
- <xs:enumeration value="Não Informado" />
- <xs:enumeration value="Sim" />
- <xs:enumeration value="Não" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element name="tipologiaUso" minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>23 Tipologia de Uso</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="xs:string">
- <xs:enumeration value="Não Informado" />
- <xs:enumeration value="Residencial" />
- <xs:enumeration value="Comercial" />
- <xs:enumeration value="Serviços" />
- <xs:enumeration value="Mista" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element name="tipoServico" type="xs:string"
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>Outro</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="areaPreservacao" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>22 Area de Preservação</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Não Informado" />
+ <xs:enumeration value="Sim" />
+ <xs:enumeration value="Não" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="tipologiaUso" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>23 Tipologia de Uso</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Não Informado" />
+ <xs:enumeration value="Residencial" />
+ <xs:enumeration value="Comercial" />
+ <xs:enumeration value="Serviços" />
+ <xs:enumeration value="Mista" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="tipoServico" type="xs:string"
minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>24 Tipo de Serviço</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="situacaoFundiaria" minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>25 Situação Fundiária</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="xs:string">
- <xs:enumeration value="Não Informado" />
- <xs:enumeration value="Público" />
- <xs:enumeration value="Privado" />
- <xs:enumeration value="Não sabe" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element name="compartimentosMoradia">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>26 Compartimentos da Moradia</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element name="qtdQuartos" type="xs:integer"
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>24 Tipo de Serviço</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="situacaoFundiaria" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>25 Situação Fundiária</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Não Informado" />
+ <xs:enumeration value="Público" />
+ <xs:enumeration value="Privado" />
+ <xs:enumeration value="Não sabe" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="compartimentosMoradia">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>26 Compartimentos da Moradia</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="qtdQuartos" type="xs:integer"
minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Quarto(s)</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="qtdSalas" type="xs:integer"
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>Quarto(s)</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="qtdSalas" type="xs:integer"
minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Sala(s)</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="qtdCozinhas" type="xs:integer"
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>Sala(s)</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="qtdCozinhas" type="xs:integer"
minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Cozinha(s)</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="qtdBanheiros" type="xs:integer"
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>Cozinha(s)</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="qtdBanheiros" type="xs:integer"
minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Banheiro(s)</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="qtdQuintais" type="xs:integer"
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>Banheiro(s)</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="qtdQuintais" type="xs:integer"
minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Qtde Quintais</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="qtdUotros" type="xs:integer"
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>Qtde Quintais</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="qtdUotros" type="xs:integer"
minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Outro(s)</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="localizacaoOutro" type="xs:string"
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>Outro(s)</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="localizacaoOutro" type="xs:string"
minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Outro(s)</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="tipoMoradia" minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>27 Tipo de Moradia</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="xs:string">
- <xs:enumeration value="Não Informado" />
- <xs:enumeration value="Própria/Regularizada" />
- <xs:enumeration value="Comprada(Própria)" />
- <xs:enumeration value="Cedida" />
- <xs:enumeration value="Invadida" />
- <xs:enumeration value="Trocada" />
- <xs:enumeration value="Alugada" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element name="numMatricula" type="xs:integer"
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>Outro(s)</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="tipoMoradia" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>27 Tipo de Moradia</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Não Informado" />
+ <xs:enumeration value="Própria/Regularizada" />
+ <xs:enumeration value="Comprada(Própria)" />
+ <xs:enumeration value="Cedida" />
+ <xs:enumeration value="Invadida" />
+ <xs:enumeration value="Trocada" />
+ <xs:enumeration value="Alugada" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="numMatricula" type="xs:integer"
minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>29 Num. Matrícula</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="cartorio" type="xs:string" minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>30 Cartório</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="zona" type="xs:string" minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>31 Zona</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="nomeProprietario" type="xs:string"
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>29 Num. Matrícula</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="cartorio" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>30 Cartório</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="zona" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>31 Zona</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="nomeProprietario" type="xs:string"
minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>32 Nome do Proprietário</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="valor" type="xs:float" minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>33 Valor</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="enderecoProprietario" type="xs:string"
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>32 Nome do Proprietário</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <!-- Campo moeda -->
+ <xs:element name="valor" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>33 Valor</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:simpleType>
+
+ <xs:restriction base="xs:decimal">
+
+ <xs:fractionDigits value='2'/>
+
+ <xs:maxExclusive value="1000000"/>
+
+ <xs:minInclusive value="-1000000"/>
+
+ </xs:restriction>
+
+ </xs:simpleType>
+ </xs:element>
+ <!-- Campo float -->
+ <xs:element name="terreno" type="xs:float" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>34 Terreno</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="enderecoProprietario" type="xs:string"
minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>34 Endereço do Proprietário</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="telefoneProprietario" type="xs:string"
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>35 Endereço do Proprietário</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="telefoneProprietario" type="xs:string"
minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>35 Telefone do Proprietário</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="tipologiaConstrucao" minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>36 Tipologia de Construção</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="xs:string">
- <xs:enumeration value="Não Informado" />
- <xs:enumeration value="Alvenaria" />
- <xs:enumeration value="Taipa" />
- <xs:enumeration value="Madeira" />
- <xs:enumeration value="Pré-moldado" />
- <xs:enumeration value="Papelão" />
- <xs:enumeration value="Plástico" />
- <xs:enumeration value="Lona" />
- <xs:enumeration value="Mista" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element name="tipoCobertura" minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>37 Tipo de Cobertura</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="xs:string">
- <xs:enumeration value="Não Informado" />
- <xs:enumeration value="Forrada" />
- <xs:enumeration value="Telha" />
- <xs:enumeration value="Palha" />
- <xs:enumeration value="Plástico/Madeira" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element name="tipoPiso" minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>38 Tipo de Piso</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="xs:string">
- <xs:enumeration value="Não Informado" />
- <xs:enumeration value="Barro Batido" />
- <xs:enumeration value="Tábua" />
- <xs:enumeration value="Cerâmica" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element name="revestimentoParede" minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>39 Revestimento de Parede</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="xs:string">
- <xs:enumeration value="Não Informado" />
- <xs:enumeration value="Com Reboco" />
- <xs:enumeration value="Sem Reboco" />
- <xs:enumeration value="Pintura" />
- <xs:enumeration value="Plástico" />
- <xs:enumeration value="Papelão" />
- <xs:enumeration value="Madeira" />
- <xs:enumeration value="Taipa" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element name="casaEmSituacaRisco" minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>40 Casa em Situação de Risco</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="xs:string">
- <xs:enumeration value="Não Informado" />
- <xs:enumeration value="Sim" />
- <xs:enumeration value="Nao" />
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element name="tipoRisco" minOccurs="0">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>41 Tipo de Risco</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element name="alagamento" type="xs:boolean">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Alagamento</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="inundacao" type="xs:boolean">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Inundação</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="deslizamento" type="xs:boolean">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Deslizamento</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="viaFerrea" type="xs:boolean">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Via Férrea</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="linhaAltaTensao" type="xs:boolean">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Linha de Alta Tensão</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="outro" type="xs:boolean">
- <xs:annotation>
- <xs:appinfo>
- <xhtml:label>Outro</xhtml:label>
- </xs:appinfo>
- </xs:annotation>
- </xs:element>
- <xs:element name="tipoRiscoOutro" type="xs:string"
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>36 Telefone do Proprietário</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="tipologiaConstrucao" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>37 Tipologia de Construção</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Não Informado" />
+ <xs:enumeration value="Alvenaria" />
+ <xs:enumeration value="Taipa" />
+ <xs:enumeration value="Madeira" />
+ <xs:enumeration value="Pré-moldado" />
+ <xs:enumeration value="Papelão" />
+ <xs:enumeration value="Plástico" />
+ <xs:enumeration value="Lona" />
+ <xs:enumeration value="Mista" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="tipoCobertura" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>38 Tipo de Cobertura</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Não Informado" />
+ <xs:enumeration value="Forrada" />
+ <xs:enumeration value="Telha" />
+ <xs:enumeration value="Palha" />
+ <xs:enumeration value="Plástico/Madeira" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="tipoPiso" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>39 Tipo de Piso</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Não Informado" />
+ <xs:enumeration value="Barro Batido" />
+ <xs:enumeration value="Tábua" />
+ <xs:enumeration value="Cerâmica" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="revestimentoParede" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>40 Revestimento de Parede</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Não Informado" />
+ <xs:enumeration value="Com Reboco" />
+ <xs:enumeration value="Sem Reboco" />
+ <xs:enumeration value="Pintura" />
+ <xs:enumeration value="Plástico" />
+ <xs:enumeration value="Papelão" />
+ <xs:enumeration value="Madeira" />
+ <xs:enumeration value="Taipa" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="casaEmSituacaRisco" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>41 Casa em Situação de Risco</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Não Informado" />
+ <xs:enumeration value="Sim" />
+ <xs:enumeration value="Nao" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="tipoRisco" minOccurs="0">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>42 Tipo de Risco</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="alagamento" type="xs:boolean">
+ <xs:annotation>
+ <xs:appinfo>
+ <xhtml:label>Alagamento</xhtml:label>
+ </xs:appinfo>
+ </xs:annotation>
+ </xs:element>
+