Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.06.2013, 14:48
Новичок на форуме
Отправить личное сообщение для Newcomer Посмотреть профиль Найти все сообщения от Newcomer
 
Регистрация: 09.06.2013
Сообщений: 9

Генерация форм по xsd
Здравствуйте!
Помогите сделать JS, который по схеме xsd генерирует соответствующую html-форму, после заполнения которой информация записывается в xml-документ.
Может, кто-то помочь? Или знает, где взять готовый?
Ответить с цитированием
  #2 (permalink)  
Старый 09.06.2013, 16:35
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Ты бы хотяб объяснил что такое xsd.
Ответить с цитированием
  #3 (permalink)  
Старый 09.06.2013, 17:10
Новичок на форуме
Отправить личное сообщение для Newcomer Посмотреть профиль Найти все сообщения от Newcomer
 
Регистрация: 09.06.2013
Сообщений: 9

XSD - это язык описания структуры документа XML. Этот язык также называют XML Schema. XSD дает возможность парсерам различать объекты и общую структуру XML документа.

Файл XML:

<?xml version="1.0"?>
<x:books xmlns:x="urn:books">
   <book id="bk001">
      <author>Writer</author>
      <title>The First Book</title>
      <genre>Fiction</genre>
      <price>44.95</price>
      <pub_date>2000-10-01</pub_date>
      <review>An amazing story of nothing.</review>
   </book>

   <book id="bk002">
      <author>Poet</author>
      <title>The Poet's First Poem</title>
      <genre>Poem</genre>
      <price>24.95</price>
      <review>Least poetic poems.</review>
   </book>
</x:books>


Файл XSD:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="urn:books"
            xmlns:bks="urn:books">

  <xsd:element name="books" type="bks:BooksForm"/>

  <xsd:complexType name="BooksForm">
    <xsd:sequence>
      <xsd:element name="book" 
                  type="bks:BookForm" 
                  minOccurs="0" 
                  maxOccurs="unbounded"/>
      </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="BookForm">
    <xsd:sequence>
      <xsd:element name="author"   type="xsd:string"/>
      <xsd:element name="title"    type="xsd:string"/>
      <xsd:element name="genre"    type="xsd:string"/>
      <xsd:element name="price"    type="xsd:float" />
      <xsd:element name="pub_date" type="xsd:date" />
      <xsd:element name="review"   type="xsd:string"/>
    </xsd:sequence>
    <xsd:attribute name="id"   type="xsd:string"/>
  </xsd:complexType>
</xsd:schema>
Ответить с цитированием
  #4 (permalink)  
Старый 09.06.2013, 17:57
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

ты уверен, что тебе нужна не java и не кроссбраузерное решение
Ответить с цитированием
  #5 (permalink)  
Старый 09.06.2013, 19:19
Новичок на форуме
Отправить личное сообщение для Newcomer Посмотреть профиль Найти все сообщения от Newcomer
 
Регистрация: 09.06.2013
Сообщений: 9

Уверен
Ответить с цитированием
  #6 (permalink)  
Старый 09.06.2013, 22:17
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

тогда объясняй подробно что на какой стороне (клиент, сервер) должно происходить, что откуда приходит, что и где должно работать, контекст задачи и т.п.
Ответить с цитированием
  #7 (permalink)  
Старый 10.06.2013, 09:40
Профессор
Отправить личное сообщение для with-love-from-siberia Посмотреть профиль Найти все сообщения от with-love-from-siberia
 
Регистрация: 14.12.2009
Сообщений: 155

Сообщение от Newcomer
по схеме xsd генерирует соответствующую html-форму
Назначение xsd-файла - описание xml документа. Вы не сможете сгенерировать html-форму с помощью одного только xsd-файла. Вы можете использовать его для проверки, что используемый xml-файл - правильной структуры. Для генерации формы необходим xsl-файл.
Ответить с цитированием
  #8 (permalink)  
Старый 11.06.2013, 01:42
Новичок на форуме
Отправить личное сообщение для Newcomer Посмотреть профиль Найти все сообщения от Newcomer
 
Регистрация: 09.06.2013
Сообщений: 9

В общем нашел что-то похожее, только осталось разобраться как это работает. Поможете? Нужно чтобы все происходило на стороне клиента.
Вложения:
Тип файла: zip xsdform-js-master.zip (136.3 Кб, 50 просмотров)
Ответить с цитированием
  #9 (permalink)  
Старый 12.06.2013, 11:44
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от Newcomer
В общем нашел что-то похожее, только осталось разобраться как это работает. Поможете? Нужно чтобы все происходило на стороне клиента.
как тебе помочь, если ты игнорируешь обращения к тебе

<script src="jquery-ui-1.8.10.custom.min.js" type="text/javascript"></script>
<script src="jquery-1.4.4.js" type="text/javascript"></script>

Есть какие-нибудь соображения по этому поводу?

начинаешь отсюда
<form onsubmit="generateXml('sample.xsd', this.processed_xml); return false">


xsdForm.js
function generateXml(xsdFile, input_to_set) {

    var divParent;
    var field;
    var requiredField;
    var div;
    var divMessageError;
    var messageError;
    var submitForm = true;
    var type;
    var firstFieldError = null;

    try {
        var xml = xmlLoader(xsdFile);
        var tagRaiz  = xml.getElementsByTagNameNS('http://www.w3.org/2001/XMLSchema','schema')[0];
        var elemRoot = getNodeByTagName(tagRaiz, 'xs:element'); // elemento raiz

        validateMandatory();
        // adicionar xmlns="..." de acordo com o atributo 'targetNamespace' do
	// xml schema.
        var namespace = getValueAttributeByName(tagRaiz,'targetNamespace');
	//window.alert('namespace is ' + namespace)	
        var odoc = document.implementation.createDocument("", "", null);
        var generated = generateXmlFromNode(odoc, namespace, tagRaiz, elemRoot, "xsdform___");

        odoc.appendChild(generated);
        input_to_set.value = ((new XMLSerializer()).serializeToString(odoc));


    } catch (myError) {
        if (myError.name != null) {
            alert( myError.name + ': ' + myError.message + "\n" + myError);
        } else {
            alert(myError);
        }
	return false;
    }
}


и т.д.
Ответить с цитированием
  #10 (permalink)  
Старый 28.11.2013, 22:12
Новичок на форуме
Отправить личное сообщение для lexitcd Посмотреть профиль Найти все сообщения от lexitcd
 
Регистрация: 20.11.2013
Сообщений: 1

Доброго времени суток.
С jQuery не сталкивался, залил данный скрипт на локальный веб сервер, и он выкидывает ошибку "TypeError: xml is null". Если в браузере открыть index.html - все нормально. А если зайти на веб сервер-ошибка. Может кто сталкивался? Подскажите решение или куда копать. Заранее спасибо.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поместить значения в несколько форм $wAiN_n Общие вопросы Javascript 2 26.10.2012 19:48
Опрос форм на странице pylyp Элементы интерфейса 2 17.07.2012 21:13
передача данных из форм своего сайта в формы стороннего сайта najrobi Общие вопросы Javascript 19 15.07.2012 22:18
Оформление форм, в общем micscr (X)HTML/CSS 5 24.02.2012 09:51
Снова проверка форм Falcon Элементы интерфейса 1 04.12.2009 01:59