Squeak.ru - шаблоны программирования

Применение XML-схемы к XML-документу

Если у вас есть два тега с одинаковыми именами в XML-документе, вам нужно использовать две разные схемы для каждого тега или вы можете использовать 1 схему, будет ли она проверяться? ниже приведен пример, в котором используются 2 схемы, но я использую только 1 схему, какая из них правильная?

XML-документ, использующий 2 схемы

    <?xml version="1.0" encoding="ISO-8859-1"?> 
<receipt xmlns: cu="http://www.mydomain.com/customer" 
 xmlns: pr="http://www.mydomain.com/product">  <!--two schema's being referenced-->

<cu:customer> <!--Using Schema 1-->
<cu:name> Michael Johnson </cu:name> 
<cu:areaCode> BH2 3XY </cu:areaCode> 
</cu:customer> 

<products> 
<pr:product>  <!--Using Schema 2-->
<pr:name>RAM</pr:name> 
<pr:quantity>100</pr:quantity> 
</pr:product> 
</products> 
</receipt>

Мой XML-документ с использованием 1 схемы (имеет 2 тега с одинаковым именем, называемым элементом)

    <?xml version=" 1.0" encoding="UTF-8"?> 

<shiporder orderid="889923" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="shiporder.xsd"> 
    <orderperson>John Smith</orderperson> 
        <shipto> 
            <name>Ola Nordmann</name> 
            <address>Langgt 23</address> 
            <city>4000 Stavanger</city> 
            <country>Norway</country> 
        </shipto> 
        <item> 
            <title>Empire Burlesque</title> 
            <note>Special Edition</note>  
            <quantity>1</quantity> 
            <price>10.90</price> 
        </item> 
        <item> 
            <title>Hide your heart</title> 
            <quantity>1</quantity> 
            <price>9.90</price> 
        </item> 
</shiporder> 

XML-схема:

    <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="shiporder">
    <xs:complexType >
        <xs:sequence>
            <xs:element type="xs:string" name="orderperson"/>
            <xs:element name="shipto">
                <xs:complexType>
                  <xs:sequence>
              <xs:element type="xs:string" name="name"/>
              <xs:element type="xs:string" name="address"/>
              <xs:element type="xs:string" name="city"/>
              <xs:element type="xs:string" name="country"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element> 
            <xs:element name="item"  maxOccurs="unbounded" minOccurs="0"> 
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="title" type="xs:string"/>
                        <xs:element name="note" type="xs:string" minOccurs="0"/> <!--optional-->
                        <xs:element name="quantity" type="xs:integer"/>
                        <xs:element name="price" type="xs:decimal"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    <xs:attribute name="orderid" type="xs:int" /> <!--must be required-->
    </xs:complexType>
</xs:element>

12.03.2014

Ответы:


1

Вы можете определить элемент в третьей схеме, а затем включить его в другие схемы.

См. Могу ли я иметь одну XML-схему (XSD) включить другую XML-схему?. И http://www.w3schools.com/schema/el_include.asp

12.03.2014

2

первый xml использует две разные схемы, следовательно, использует два разных пространства имен. да, вы можете получить xml из разных схем

второй xml состоит из двух элементов и в нем нет ничего плохого. повторяющиеся элементы — это то, как вы представляете список объектов или что-то подобное, в данном случае список элементов.

<item> is defined to be occurring more than once as per the schema.
maxOccurs="unbounded" so it is valid xml as per the schema.

Is that not true?

<xs:element name="item"  maxOccurs="unbounded" minOccurs="0"> 
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="title" type="xs:string"/>
                        <xs:element name="note" type="xs:string" minOccurs="0"/> <!--optional-->
                        <xs:element name="quantity" type="xs:integer"/>
                        <xs:element name="price" type="xs:decimal"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
12.03.2014
  • да, так что в этом случае мне не нужно определять две схемы? Я могу просто использовать один как есть? 13.03.2014
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...