Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Создание XML по XSD / 13 сообщений из 13, страница 1 из 1
22.08.2005, 16:41
    #33228394
Plut
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание XML по XSD
Такая проблема
по существующей XSD построить пустой XML
как это лучше реализовать?
программно(парсить XSD и вытаскивать элементы)?
применить XSL к XSD?
а может в парсерах уже есть встроенные функции?
...
Рейтинг: 0 / 0
23.08.2005, 19:58
    #33230776
deepsky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание XML по XSD
Как вариант: использовать XMLBeans - позволяет по xsd сгенерировать классы, потом обход дерева классов, анализ узлов и генерация хмл.
Stylus Studio позволяет генерировать хмл по хсд, но бесплатных библиотек не знаю.
...
Рейтинг: 0 / 0
23.08.2005, 20:53
    #33230814
Naug
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание XML по XSD
А может кто подскажет - как валидировать xml по xsd? Вот вчитал я некий xml и хочу проверить соответствует ли он xsd - как сделать? Предпочтительно в jdom-е
...
Рейтинг: 0 / 0
23.08.2005, 22:54
    #33230886
Анони м
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание XML по XSD
NaugА может кто подскажет - как валидировать xml по xsd? Вот вчитал я некий xml и хочу проверить соответствует ли он xsd - как сделать? Предпочтительно в jdom-еjavax.xml.parsers.DocumentBuilderFactory 1.4



boolean isValidating()

void setValidating(boolean value)

are the "validating" property of the factory. If set to true, the parsers that this factory generates validate their input.
...
Рейтинг: 0 / 0
24.08.2005, 12:03
    #33231497
Naug
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание XML по XSD
Нашёл в jdom-e у SAXBuilder-а методы setFeature и setProperty Смущает следующее-

NOTE: SAXBuilder requires that some particular features of the SAX parser be
set up in certain ways for it to work properly. The list of such features
may change in the future. Therefore, the use of this method may cause
parsing to break, and even if it doesn't break anything today it might
break parsing in a future JDOM version, because what JDOM parsers require
may change over time. Use with caution.

Есть другой способ? Можно ли это более надёжно сделать в стандартном доме? Есть ахтунг что ссылка на xsd не указана в самом xml-e, а приходит извне
...
Рейтинг: 0 / 0
24.08.2005, 15:04
    #33231997
Naug
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание XML по XSD
Анони м - ссылка на xsd у меня не является частью xml, а приходит "со стороны" - как сообщить парсеру что её надо использовать?

то что я сказал раньше про jdom отпадает так- как эти методы не реализованы в той версии jdom-a что стоит у нас, а менять её я не могу
...
Рейтинг: 0 / 0
24.08.2005, 19:10
    #33232715
Naug
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание XML по XSD
Значит проблема провалидировать xml файл по xsd схеме.
xml
Код: plaintext
1.
2.
3.
4.
5.
6.
<?xml version="1.0"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me  this  weekend!</body>
</note>
xsd:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">
<xs:element name="note">
    <xs:complexType>
      <xs:sequence>
	<xs:element name="to" type="xs:string"/>
	<xs:element name="from" type="xs:string"/>
	<xs:element name="heading" type="xs:string"/>
	<xs:element name="body" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
</xs:element>
</xs:schema>

Я пытаюсь вылидировать вставив в ксеркс параметры
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  public   static   void  dom4j(){
         SAXReader reader =  new  SAXReader();
         try  {
            reader.setValidation(true);

            // specify the schema to use
            reader.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation","schema.xsd");
//            reader.setProperty("http://apache.org/xml/properties/schema/external-schemaLocation","schema.xsd");
            org.dom4j.Document validationDoc = reader.read("file.xml");
            org.dom4j.Element root = validationDoc.getRootElement();
        }  catch  (DocumentException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }  catch  (SAXException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
    }


Если я выставляю свойство "external-noNamespaceSchemaLocation"то получаю облом в виде
Код: plaintext
org.xml.sax.SAXParseException: TargetNamespace. 2 : Expecting no namespace, but the schema document has a target namespace.

Если external-schemaLocation то
Код: plaintext
org.xml.sax.SAXParseException: cvc-elt. 1 : Cannot find the declaration of element 'note'.

Соответственно вопрос - где глюк?
...
Рейтинг: 0 / 0
29.08.2005, 11:03
    #33238254
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание XML по XSD
NaugА может кто подскажет - как валидировать xml по xsd? Вот вчитал я некий xml и хочу проверить соответствует ли он xsd - как сделать? Предпочтительно в jdom-е

http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JAXPSAX9.html#wp90294 for SAX

http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JAXPDOM8.html#wp76446 for DOM

это для JAXP. Только в jdk1.4 и ниже, стандартный парсер, Crimson который, валидацию на основе XMLСхемы не поддерживает, качай xerces.
...
Рейтинг: 0 / 0
30.08.2005, 12:51
    #33240858
Naug
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание XML по XSD
Фенька была в строчке
targetNamespace="http://www.w3schools.com"
в схеме, убрав её всё стало нормально, что впринципе соответствует ошибке
org.xml.sax.SAXParseException: TargetNamespace.2: Expecting no namespace, but the schema document has a target namespace.

Хотя с другой стороны и cхема и хмл взяты с w3schools и нормально там работали
...
Рейтинг: 0 / 0
07.10.2005, 17:44
    #33312464
Naug
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание XML по XSD
А как узнать какой парсер используется (jdk1.4)
...
Рейтинг: 0 / 0
07.10.2005, 18:56
    #33312617
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание XML по XSD
NaugА как узнать какой парсер используется (jdk1.4)
Код: plaintext
.getClass().getName();
?
...
Рейтинг: 0 / 0
10.10.2005, 10:38
    #33314194
Naug
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание XML по XSD
Код: plaintext
1.
2.
3.
4.
  DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setNamespaceAware(true);
        System.out.println(factory.getClass().getName());
        DocumentBuilder builder = factory.newDocumentBuilder();
        System.out.println(builder.getClass().getName());
Выдаёт
weblogic.xml.jaxp.RegistryDocumentBuilderFactory
weblogic.xml.jaxp.RegistryDocumentBuilder

Вот который из них парсер и как указать что мне нужен другой?
...
Рейтинг: 0 / 0
10.10.2005, 11:15
    #33314357
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание XML по XSD
Naug
Код: plaintext
1.
2.
3.
4.
  DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setNamespaceAware(true);
        System.out.println(factory.getClass().getName());
        DocumentBuilder builder = factory.newDocumentBuilder();
        System.out.println(builder.getClass().getName());
Выдаёт
weblogic.xml.jaxp.RegistryDocumentBuilderFactory
weblogic.xml.jaxp.RegistryDocumentBuilder

Вот который из них парсер и как указать что мне нужен другой?

weblogic.xml.jaxp.RegistryDocumentBuilder - парсер, имплементация DocumentBuilder. Что довольно логично :)



java.sun.comQ. How do I use a different JAXP compatible implementation?

The JAXP 1.1 API allows applications to plug in different JAXP compatible implementations of parsers or XSLT processors. For example, when an application wants to create a new JAXP DocumentBuilderFactory instance, it calls the staic method DocumentBuilderFactory.newInstance(). This causes a search for the name of a concrete subclass of DocumentBuilderFactory using the following order:
The value of a system property like javax.xml.parsers.DocumentBuilderFactory if it exists and is accessible.
The contents of the file $JAVA_HOME/jre/lib/jaxp.properties if it exists.
The Jar Service Provider discovery mechanism specified in the Jar File Specification. A jar file can have a resource (i.e. an embedded file) such as META-INF/services/javax.xml.parsers.DocumentBuilderFactory containing the name of the concrete class to instantiate.
The fallback platform default implementation.

Of the above ways to specify an implementation, perhaps the most useful is the jar service provider mechanism. To use this mechanism, place the implementation jar file on your classpath. For example, to use Xerces 1.4.4 instead of the version of Crimson which is bundled with JDK 1.4 (Java Development Kit version 1.4), place xerces.jar in your classpath. This mechanism also works with older versions of the JDK which do not bundle JAXP. If you are using JDK 1.4 and above, see this question for potential problems.

тынц
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Создание XML по XSD / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]