powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XSD complexType to XSD type
15 сообщений из 15, страница 1 из 1
XSD complexType to XSD type
    #37652606
lesha_m_ua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто подскажет ?
Есть два 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
XSD complexType to XSD type
    #37652623
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
XSD complexType to XSD type
    #37652638
lesha_m_ua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что конкретно не будет валидным ?

<?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
XSD complexType to XSD type
    #37652643
lesha_m_ua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_...Какие соответствующие?

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

Ок, перефразирую вопрос можно ли получить xsd где были бы не complex type а типы на которых базируется эти complex type ?
...
Рейтинг: 0 / 0
XSD complexType to XSD type
    #37652824
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
XSD complexType to XSD type
    #37652851
lesha_m_ua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

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

И все complexType, в моем случае, равны какому то простому типу
...
Рейтинг: 0 / 0
XSD complexType to XSD type
    #37653106
lesha_m_ua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот например такие исходные файлы
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
XSD complexType to XSD type
    #37653713
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RTFM document()
...
Рейтинг: 0 / 0
XSD complexType to XSD type
    #37653729
lesha_m_ua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_RTFM document()

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

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


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