Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XSD complexType to XSD type / 15 сообщений из 15, страница 1 из 1
08.02.2012, 21:09
    #37652606
lesha_m_ua
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD complexType to XSD type
Кто подскажет ?
Есть два XSD файла,
первый содержит описание complexType - metadata_types.xsd
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
...
	<xs:complexType name="NUM">
		<xs:simpleContent>
			<xs:extension base="xs:integer">
				<xs:attribute name="TYPE" use="optional"/>
				<xs:attribute name="derived" use="optional"/>
				<xs:attribute name="readonly" use="optional"/>
				<xs:attribute name="required" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
...


второй содержит элементы с типами из первого файла - metadata_schema.xsd
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
...
	<xs:import namespace="http://www.xxx.com/sutype" schemaLocation="metadata_types.xsd"/>
...
	<xs:element name="ACCOUNT">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Account_Num" type="metadata_types:NUM" minOccurs="0"/>
...



Как выполнить перекодировку второго XSD на соответствующие простые типы ?
Чтобы получилось так:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
...
	<xs:import namespace="http://www.xxx.com/metadata_types" schemaLocation="metadata_types.xsd"/>
...
	<xs:element name="ACCOUNT">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Account_Num" type="xs:integer" minOccurs="0"/>
...
...
Рейтинг: 0 / 0
08.02.2012, 21:20
    #37652623
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD complexType to XSD type
lesha_m_uaна соответствующие простые типы ?Какие соответствующие?
lesha_m_ua
Код: xml
1.
2.
<xs:element name="Account_Num" type="metadata_types:NUM" minOccurs="0"/>
<xs:element name="Account_Num" type="xs:integer" minOccurs="0"/>

принципиально различные объявления. Для первого объявления XML
Код: xml
1.
<Account_Num TYPE="any">10</Account_Num>

будет валидным, а для второго - нет
...
Рейтинг: 0 / 0
08.02.2012, 21:30
    #37652638
lesha_m_ua
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD complexType to XSD type
Что конкретно не будет валидным ?

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs=" http://www.w3.org/2001/XMLSchema" xmlns:sutype=" http://www.summithq.com/sutype" elementFormDefault="qualified">
<xs:element name="ACCOUNT">
<xs:complexType>
<xs:sequence>
<xs:element name="Account_Num" type="xs:integer" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

такой абсолютно валидный.
...
Рейтинг: 0 / 0
08.02.2012, 21:32
    #37652643
lesha_m_ua
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD complexType to XSD type
_Vasilisk_...Какие соответствующие?

metadata_types:NUM -> соответствует простой тип xs:integer
...
Рейтинг: 0 / 0
08.02.2012, 21:45
    #37652658
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD complexType to XSD type
lesha_m_uametadata_types:NUM -> соответствует простой тип xs:integerэто два различных типа. Вы же не говорите, что типу xsd:integer соответствует тип xsd:string
...
Рейтинг: 0 / 0
08.02.2012, 23:27
    #37652793
lesha_m_ua
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD complexType to XSD type
_Vasilisk_,

Ок, перефразирую вопрос можно ли получить xsd где были бы не complex type а типы на которых базируется эти complex type ?
...
Рейтинг: 0 / 0
09.02.2012, 00:02
    #37652824
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD complexType to XSD type
Код: xml
1.
2.
3.
4.
5.
6.
7.
<xs:complexType name="myType">
  <xs:sequence>
    <xs:element name="field1" type="xs:integer" minOccurs="0"/>
    <xs:element name="field2" type="xs:integer" minOccurs="0"/>
    <xs:element name="field3" type="xs:integer" minOccurs="0"/>
  </xs:sequence>
</xs:complexType>

на каком типе базируется myType?
...
Рейтинг: 0 / 0
09.02.2012, 00:22
    #37652851
lesha_m_ua
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD complexType to XSD type
_Vasilisk_,

В моем случае я знаю все complexType они у меня описаны в файле metadata_types.xsd
нужно просто заменить, можно ли это сделать например с помощью xsl ?
...
Рейтинг: 0 / 0
09.02.2012, 01:19
    #37652899
lesha_m_ua
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD complexType to XSD type
lesha_m_ua,

И все complexType, в моем случае, равны какому то простому типу
...
Рейтинг: 0 / 0
09.02.2012, 10:27
    #37653106
lesha_m_ua
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD complexType to XSD type
Вот например такие исходные файлы
books.xsd
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="books" xmlns:books_types="http://www.xxx.com/books_types">

<xs:import namespace="http://www.xxx.com/books_types" schemaLocation="books_types.xsd"/>

  <xs:complexType name="books">
    <xs:sequence>
      <xs:element name="author" type="books_types:TXT"/>
      <xs:element name="title" type="books_types:TXT"/>
      <xs:element name="genre" type="books_types:TXT"/>
      <xs:element name="price" type="books_types:NUM"/>
      <xs:element name="pub_date" type="xs:date"/>
      <xs:element name="review" type="books_types:TXT"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>



books_types.xsd
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://www.xxx.com/books_types">


	<xs:complexType name="NUM">
		<xs:simpleContent>
			<xs:extension base="xs:integer">
				<xs:attribute name="TYPE" use="optional"/>
				<xs:attribute name="derived" use="optional"/>
				<xs:attribute name="readonly" use="optional"/>
				<xs:attribute name="required" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<xs:complexType name="TXT">
		<xs:simpleContent>
			<xs:extension base="xs:integer">
				<xs:attribute name="TYPE" use="optional"/>
				<xs:attribute name="derived" use="optional"/>
				<xs:attribute name="readonly" use="optional"/>
				<xs:attribute name="required" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

</xs:schema>



А вот xslt
transform.xsl
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output method="xml"/>

<xsl:template match="xs:schema">

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="books" xmlns:books_types="http://www.xxx.com/books_types">
<xs:complexType name="books">
<xs:sequence>

  <xsl:for-each select="xs:complexType/xs:sequence/xs:element">
	   
	    <xs:element>
	    	<xsl:attribute name="name">
				<xsl:value-of select="@name"/>
			</xsl:attribute>
        	<xsl:attribute name="type">
				<xsl:value-of select="@type"/>
			</xsl:attribute>
		</xs:element>  		  		

  </xsl:for-each>

</xs:sequence>
</xs:complexType>
</xs:schema>

</xsl:template>

</xsl:stylesheet>



В результате преобразований я получаю такой результат
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="books" xmlns:books_types="http://www.xxx.com/books_types">
<xs:complexType name="books">
   <xs:sequence>
      <xs:element name="author" type="books_types:TXT"/>
      <xs:element name="title" type="books_types:TXT"/>
      <xs:element name="genre" type="books_types:TXT"/>
      <xs:element name="price" type="books_types:NUM"/>
      <xs:element name="pub_date" type="xs:date"/>
      <xs:element name="review" type="books_types:TXT"/>
   </xs:sequence>
</xs:complexType>
</xs:schema>



А мне нужно такой
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="books" xmlns:books_types="http://www.xxx.com/books_types">
<xs:complexType name="books">
   <xs:sequence>
      <xs:element name="author" type="xs:string"/>
      <xs:element name="title" type="xs:string"/>
      <xs:element name="genre" type="xs:string"/>
      <xs:element name="price" type="xs:integer"/>
      <xs:element name="pub_date" type="xs:date"/>
      <xs:element name="review" type="xs:string"/>
      </xs:sequence>
   </xs:complexType>
</xs:schema>



Вопрос, можно ли добится такого результата с помощью xsl или каких то других средств ?
...
Рейтинг: 0 / 0
09.02.2012, 14:06
    #37653713
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD complexType to XSD type
RTFM document()
...
Рейтинг: 0 / 0
09.02.2012, 14:11
    #37653729
lesha_m_ua
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD complexType to XSD type
_Vasilisk_RTFM document()

Если бы у меня было время читать я бы не спрашивал.
...
Рейтинг: 0 / 0
09.02.2012, 14:33
    #37653810
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD complexType to XSD type
lesha_m_uaЕсли бы у меня было время читать я бы не спрашивал.Тогда Вам сюда
...
Рейтинг: 0 / 0
09.02.2012, 14:52
    #37653885
lesha_m_ua
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD complexType to XSD type
_Vasilisk_,

А тебе сюда
...
Рейтинг: 0 / 0
09.02.2012, 14:53
    #37653891
lesha_m_ua
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD complexType to XSD type
Ответ здесь
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XSD complexType to XSD type / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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